pgpool2.git / summary / log / commit / refs

commit    fd382bff97e33d4db966fcc50864b7f993352504
Author:   Tatsuo Ishii <ishii at sraoss.co.jp>
Date:     Thu Jul 30 14:44:21 2009 +0000

    Adopt PostgreSQL 8.4 parser. Patch contributed by Akio Ishida.


parser/Makefile.am | 2 +- parser/Makefile.in | 6 +- parser/copyfuncs.c | 468 +- parser/gram.c | 34819 +++++++++++++++++++--------------- parser/gram.h | 1437 +- parser/gram.y | 2764 ++- parser/keywords.c | 468 +- parser/keywords.h | 13 +- parser/makefuncs.c | 47 +- parser/makefuncs.h | 12 +- parser/nodes.c | 1 + parser/nodes.h | 126 +- parser/outfuncs.c | 567 +- parser/parsenodes.h | 591 +- parser/parser.c | 34 +- parser/pool_memory.h | 3 +- parser/pool_parser.h | 24 +- parser/primnodes.h | 129 +- pool_process_query.c | 3 +- pool_rewrite_outfuncs.c | 337 +- pool_type.h | 16 +- test/parser/Makefile | 8 +- test/parser/expected/copy.out | 2 +- test/parser/expected/create.out | 50 +- test/parser/expected/cursor.out | 12 +- test/parser/expected/delete.out | 4 +- test/parser/expected/insert.out | 4 +- test/parser/expected/misc.out | 6 +- test/parser/expected/prepare.out | 2 +- test/parser/expected/privileges.out | 2 +- test/parser/expected/select.out | 124 +- test/parser/expected/update.out | 2 +- 32 files changed, 23662 insertions(+), 18421 deletions(-) diff --git a/parser/Makefile.am b/parser/Makefile.am index d44a740b3..783976281 100644 --- a/parser/Makefile.am +++ b/parser/Makefile.am @@ -1,6 +1,6 @@ noinst_LIBRARIES = libsql-parser.a -libsql_parser_a_SOURCES = gram.y gramparse.h list.c makefuncs.c makefuncs.h memnodes.h nodes.h nodes.c parsenodes.h parser.c parser.h pg_list.h pool_memory.c pool_memory.h pool_string.c pool_string.h primnodes.h scansup.h value.c value.h keywords.h keywords.c pool_parser.h outfuncs.c copyfuncs.c +libsql_parser_a_SOURCES = gram.y gramparse.h list.c makefuncs.c makefuncs.h memnodes.h nodes.h nodes.c parsenodes.h parser.c parser.h pg_list.h pool_memory.c pool_memory.h pool_string.c pool_string.h primnodes.h scansup.h value.c value.h keywords.h keywords.c pool_parser.h outfuncs.c copyfuncs.c kwlist.h kwlookup.c EXTRA_DIST = scan.c scan.l diff --git a/parser/Makefile.in b/parser/Makefile.in index ca0cd55f5..3ccb1f395 100644 --- a/parser/Makefile.in +++ b/parser/Makefile.in @@ -54,7 +54,8 @@ libsql_parser_a_LIBADD = am_libsql_parser_a_OBJECTS = gram.$(OBJEXT) list.$(OBJEXT) \ makefuncs.$(OBJEXT) nodes.$(OBJEXT) parser.$(OBJEXT) \ pool_memory.$(OBJEXT) pool_string.$(OBJEXT) value.$(OBJEXT) \ - keywords.$(OBJEXT) outfuncs.$(OBJEXT) copyfuncs.$(OBJEXT) + keywords.$(OBJEXT) outfuncs.$(OBJEXT) copyfuncs.$(OBJEXT) \ + kwlookup.$(OBJEXT) libsql_parser_a_OBJECTS = $(am_libsql_parser_a_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -181,7 +182,7 @@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ noinst_LIBRARIES = libsql-parser.a -libsql_parser_a_SOURCES = gram.y gramparse.h list.c makefuncs.c makefuncs.h memnodes.h nodes.h nodes.c parsenodes.h parser.c parser.h pg_list.h pool_memory.c pool_memory.h pool_string.c pool_string.h primnodes.h scansup.h value.c value.h keywords.h keywords.c pool_parser.h outfuncs.c copyfuncs.c +libsql_parser_a_SOURCES = gram.y gramparse.h list.c makefuncs.c makefuncs.h memnodes.h nodes.h nodes.c parsenodes.h parser.c parser.h pg_list.h pool_memory.c pool_memory.h pool_string.c pool_string.h primnodes.h scansup.h value.c value.h keywords.h keywords.c pool_parser.h outfuncs.c copyfuncs.c kwlist.h kwlookup.c EXTRA_DIST = scan.c scan.l AM_CPPFLAGS = -D_GNU_SOURCE -I .. -I @PGSQL_INCLUDE_DIR@ AM_YFLAGS = -d @@ -240,6 +241,7 @@ 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@ diff --git a/parser/copyfuncs.c b/parser/copyfuncs.c index 961c3401c..070a8a807 100644 --- a/parser/copyfuncs.c +++ b/parser/copyfuncs.c @@ -11,12 +11,12 @@ * be handled easily in a simple depth-first traversal. * * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.382 2007/09/03 18:46:30 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.432 2009/06/18 01:27:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -24,8 +24,10 @@ #include "pool.h" #include <string.h> +#include <stddef.h> #include "pool_memory.h" #include "parsenodes.h" +#define Assert /* @@ -59,6 +61,11 @@ memcpy(newnode->fldname, from->fldname, _size); \ } while (0) +/* Copy a parse location field (for Copy, this is same as scalar case) */ +#define COPY_LOCATION_FIELD(fldname) \ + (newnode->fldname = from->fldname) + + /* **************************************************************** * primnodes.h copy functions @@ -93,6 +100,7 @@ _copyRangeVar(RangeVar *from) COPY_SCALAR_FIELD(inhOpt); COPY_SCALAR_FIELD(istemp); COPY_NODE_FIELD(alias); + COPY_LOCATION_FIELD(location); return newnode; } @@ -103,7 +111,7 @@ _copyRangeVar(RangeVar *from) static IntoClause * _copyIntoClause(IntoClause *from) { - IntoClause *newnode = makeNode(IntoClause); + IntoClause *newnode = makeNode(IntoClause); COPY_NODE_FIELD(rel); COPY_NODE_FIELD(colNames); @@ -136,6 +144,7 @@ _copyVar(Var *from) COPY_SCALAR_FIELD(varlevelsup); COPY_SCALAR_FIELD(varnoold); COPY_SCALAR_FIELD(varoattno); + COPY_LOCATION_FIELD(location); return newnode; } @@ -190,6 +199,7 @@ _copyParam(Param *from) COPY_SCALAR_FIELD(paramid); COPY_SCALAR_FIELD(paramtype); COPY_SCALAR_FIELD(paramtypmod); + COPY_LOCATION_FIELD(location); return newnode; } @@ -208,6 +218,26 @@ _copyAggref(Aggref *from) COPY_SCALAR_FIELD(agglevelsup); COPY_SCALAR_FIELD(aggstar); COPY_SCALAR_FIELD(aggdistinct); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +/* + * _copyWindowFunc + */ +static WindowFunc * +_copyWindowFunc(WindowFunc *from) +{ + WindowFunc *newnode = makeNode(WindowFunc); + + COPY_SCALAR_FIELD(winfnoid); + COPY_SCALAR_FIELD(wintype); + COPY_NODE_FIELD(args); + COPY_SCALAR_FIELD(winref); + COPY_SCALAR_FIELD(winstar); + COPY_SCALAR_FIELD(winagg); + COPY_LOCATION_FIELD(location); return newnode; } @@ -244,6 +274,7 @@ _copyFuncExpr(FuncExpr *from) COPY_SCALAR_FIELD(funcretset); COPY_SCALAR_FIELD(funcformat); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -261,6 +292,7 @@ _copyOpExpr(OpExpr *from) COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -278,6 +310,7 @@ _copyDistinctExpr(DistinctExpr *from) COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -294,6 +327,7 @@ _copyScalarArrayOpExpr(ScalarArrayOpExpr *from) COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(useOr); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -308,6 +342,7 @@ _copyBoolExpr(BoolExpr *from) COPY_SCALAR_FIELD(boolop); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -324,6 +359,7 @@ _copySubLink(SubLink *from) COPY_NODE_FIELD(testexpr); COPY_NODE_FIELD(operName); COPY_NODE_FIELD(subselect); + COPY_LOCATION_FIELD(location); return newnode; } @@ -340,12 +376,29 @@ _copySubPlan(SubPlan *from) COPY_NODE_FIELD(testexpr); COPY_NODE_FIELD(paramIds); COPY_SCALAR_FIELD(plan_id); + COPY_STRING_FIELD(plan_name); COPY_SCALAR_FIELD(firstColType); + COPY_SCALAR_FIELD(firstColTypmod); COPY_SCALAR_FIELD(useHashTable); COPY_SCALAR_FIELD(unknownEqFalse); COPY_NODE_FIELD(setParam); COPY_NODE_FIELD(parParam); COPY_NODE_FIELD(args); + COPY_SCALAR_FIELD(startup_cost); + COPY_SCALAR_FIELD(per_call_cost); + + return newnode; +} + +/* + * _copyAlternativeSubPlan + */ +static AlternativeSubPlan * +_copyAlternativeSubPlan(AlternativeSubPlan *from) +{ + AlternativeSubPlan *newnode = makeNode(AlternativeSubPlan); + + COPY_NODE_FIELD(subplans); return newnode; } @@ -394,6 +447,7 @@ _copyRelabelType(RelabelType *from) COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(relabelformat); + COPY_LOCATION_FIELD(location); return newnode; } @@ -404,11 +458,12 @@ _copyRelabelType(RelabelType *from) static CoerceViaIO * _copyCoerceViaIO(CoerceViaIO *from) { - CoerceViaIO *newnode = makeNode(CoerceViaIO); + CoerceViaIO *newnode = makeNode(CoerceViaIO); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(coerceformat); + COPY_LOCATION_FIELD(location); return newnode; } @@ -419,7 +474,7 @@ _copyCoerceViaIO(CoerceViaIO *from) static ArrayCoerceExpr * _copyArrayCoerceExpr(ArrayCoerceExpr *from) { - ArrayCoerceExpr *newnode = makeNode(ArrayCoerceExpr); + ArrayCoerceExpr *newnode = makeNode(ArrayCoerceExpr); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(elemfuncid); @@ -427,6 +482,7 @@ _copyArrayCoerceExpr(ArrayCoerceExpr *from) COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(isExplicit); COPY_SCALAR_FIELD(coerceformat); + COPY_LOCATION_FIELD(location); return newnode; } @@ -442,6 +498,7 @@ _copyConvertRowtypeExpr(ConvertRowtypeExpr *from) COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(convertformat); + COPY_LOCATION_FIELD(location); return newnode; } @@ -458,6 +515,7 @@ _copyCaseExpr(CaseExpr *from) COPY_NODE_FIELD(arg); COPY_NODE_FIELD(args); COPY_NODE_FIELD(defresult); + COPY_LOCATION_FIELD(location); return newnode; } @@ -472,6 +530,7 @@ _copyCaseWhen(CaseWhen *from) COPY_NODE_FIELD(expr); COPY_NODE_FIELD(result); + COPY_LOCATION_FIELD(location); return newnode; } @@ -502,6 +561,7 @@ _copyArrayExpr(ArrayExpr *from) COPY_SCALAR_FIELD(element_typeid); COPY_NODE_FIELD(elements); COPY_SCALAR_FIELD(multidims); + COPY_LOCATION_FIELD(location); return newnode; } @@ -517,6 +577,8 @@ _copyRowExpr(RowExpr *from) COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(row_typeid); COPY_SCALAR_FIELD(row_format); + COPY_NODE_FIELD(colnames); + COPY_LOCATION_FIELD(location); return newnode; } @@ -548,6 +610,7 @@ _copyCoalesceExpr(CoalesceExpr *from) COPY_SCALAR_FIELD(coalescetype); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -563,6 +626,7 @@ _copyMinMaxExpr(MinMaxExpr *from) COPY_SCALAR_FIELD(minmaxtype); COPY_SCALAR_FIELD(op); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -573,7 +637,7 @@ _copyMinMaxExpr(MinMaxExpr *from) static XmlExpr * _copyXmlExpr(XmlExpr *from) { - XmlExpr *newnode = makeNode(XmlExpr); + XmlExpr *newnode = makeNode(XmlExpr); COPY_SCALAR_FIELD(op); COPY_STRING_FIELD(name); @@ -583,6 +647,7 @@ _copyXmlExpr(XmlExpr *from) COPY_SCALAR_FIELD(xmloption); COPY_SCALAR_FIELD(type); COPY_SCALAR_FIELD(typmod); + COPY_LOCATION_FIELD(location); return newnode; } @@ -600,6 +665,7 @@ _copyNullIfExpr(NullIfExpr *from) COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_NODE_FIELD(args); + COPY_LOCATION_FIELD(location); return newnode; } @@ -644,6 +710,7 @@ _copyCoerceToDomain(CoerceToDomain *from) COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(coercionformat); + COPY_LOCATION_FIELD(location); return newnode; } @@ -658,6 +725,7 @@ _copyCoerceToDomainValue(CoerceToDomainValue *from) COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); + COPY_LOCATION_FIELD(location); return newnode; } @@ -672,6 +740,7 @@ _copySetToDefault(SetToDefault *from) COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); + COPY_LOCATION_FIELD(location); return newnode; } @@ -757,6 +826,7 @@ _copyFromExpr(FromExpr *from) return newnode; } + /* **************************************************************** * parsenodes.h copy functions * **************************************************************** @@ -770,18 +840,25 @@ _copyRangeTblEntry(RangeTblEntry *from) COPY_SCALAR_FIELD(rtekind); COPY_SCALAR_FIELD(relid); COPY_NODE_FIELD(subquery); + COPY_SCALAR_FIELD(jointype); + COPY_NODE_FIELD(joinaliasvars); COPY_NODE_FIELD(funcexpr); COPY_NODE_FIELD(funccoltypes); COPY_NODE_FIELD(funccoltypmods); COPY_NODE_FIELD(values_lists); - COPY_SCALAR_FIELD(jointype); - COPY_NODE_FIELD(joinaliasvars); + COPY_STRING_FIELD(ctename); + COPY_SCALAR_FIELD(ctelevelsup); + COPY_SCALAR_FIELD(self_reference); + COPY_NODE_FIELD(ctecoltypes); + COPY_NODE_FIELD(ctecoltypmods); COPY_NODE_FIELD(alias); COPY_NODE_FIELD(eref); COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(inFromCl); COPY_SCALAR_FIELD(requiredPerms); COPY_SCALAR_FIELD(checkAsUser); + COPY_BITMAPSET_FIELD(selectedCols); + COPY_BITMAPSET_FIELD(modifiedCols); return newnode; } @@ -805,26 +882,31 @@ _copyFkConstraint(FkConstraint *from) return newnode; } -static SortClause * -_copySortClause(SortClause *from) +static SortGroupClause * +_copySortGroupClause(SortGroupClause *from) { - SortClause *newnode = makeNode(SortClause); + SortGroupClause *newnode = makeNode(SortGroupClause); COPY_SCALAR_FIELD(tleSortGroupRef); + COPY_SCALAR_FIELD(eqop); COPY_SCALAR_FIELD(sortop); COPY_SCALAR_FIELD(nulls_first); return newnode; } -static GroupClause * -_copyGroupClause(GroupClause *from) +static WindowClause * +_copyWindowClause(WindowClause *from) { - GroupClause *newnode = makeNode(GroupClause); + WindowClause *newnode = makeNode(WindowClause); - COPY_SCALAR_FIELD(tleSortGroupRef); - COPY_SCALAR_FIELD(sortop); - COPY_SCALAR_FIELD(nulls_first); + COPY_STRING_FIELD(name); + COPY_STRING_FIELD(refname); + COPY_NODE_FIELD(partitionClause); + COPY_NODE_FIELD(orderClause); + COPY_SCALAR_FIELD(frameOptions); + COPY_SCALAR_FIELD(winref); + COPY_SCALAR_FIELD(copiedOrder); return newnode; } @@ -835,8 +917,40 @@ _copyRowMarkClause(RowMarkClause *from) RowMarkClause *newnode = makeNode(RowMarkClause); COPY_SCALAR_FIELD(rti); + COPY_SCALAR_FIELD(prti); COPY_SCALAR_FIELD(forUpdate); COPY_SCALAR_FIELD(noWait); + COPY_SCALAR_FIELD(isParent); + + return newnode; +} + +static WithClause * +_copyWithClause(WithClause *from) +{ + WithClause *newnode = makeNode(WithClause); + + COPY_NODE_FIELD(ctes); + COPY_SCALAR_FIELD(recursive); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static CommonTableExpr * +_copyCommonTableExpr(CommonTableExpr *from) +{ + CommonTableExpr *newnode = makeNode(CommonTableExpr); + + COPY_STRING_FIELD(ctename); + COPY_NODE_FIELD(aliascolnames); + COPY_NODE_FIELD(ctequery); + COPY_LOCATION_FIELD(location); + COPY_SCALAR_FIELD(cterecursive); + COPY_SCALAR_FIELD(cterefcount); + COPY_NODE_FIELD(ctecolnames); + COPY_NODE_FIELD(ctecoltypes); + COPY_NODE_FIELD(ctecoltypmods); return newnode; } @@ -850,7 +964,7 @@ _copyAExpr(A_Expr *from) COPY_NODE_FIELD(name); COPY_NODE_FIELD(lexpr); COPY_NODE_FIELD(rexpr); - COPY_SCALAR_FIELD(location); + COPY_LOCATION_FIELD(location); return newnode; } @@ -861,7 +975,7 @@ _copyColumnRef(ColumnRef *from) ColumnRef *newnode = makeNode(ColumnRef); COPY_NODE_FIELD(fields); - COPY_SCALAR_FIELD(location); + COPY_LOCATION_FIELD(location); return newnode; } @@ -872,6 +986,7 @@ _copyParamRef(ParamRef *from) ParamRef *newnode = makeNode(ParamRef); COPY_SCALAR_FIELD(number); + COPY_LOCATION_FIELD(location); return newnode; } @@ -902,7 +1017,7 @@ _copyAConst(A_Const *from) break; } - COPY_NODE_FIELD(typename); + COPY_LOCATION_FIELD(location); return newnode; } @@ -916,7 +1031,17 @@ _copyFuncCall(FuncCall *from) COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(agg_star); COPY_SCALAR_FIELD(agg_distinct); - COPY_SCALAR_FIELD(location); + COPY_SCALAR_FIELD(func_variadic); + COPY_NODE_FIELD(over); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static A_Star * +_copyAStar(A_Star *from) +{ + A_Star *newnode = makeNode(A_Star); return newnode; } @@ -943,6 +1068,17 @@ _copyA_Indirection(A_Indirection *from) return newnode; } +static A_ArrayExpr * +_copyA_ArrayExpr(A_ArrayExpr *from) +{ + A_ArrayExpr *newnode = makeNode(A_ArrayExpr); + + COPY_NODE_FIELD(elements); + COPY_LOCATION_FIELD(location); + + return newnode; +} + static ResTarget * _copyResTarget(ResTarget *from) { @@ -951,7 +1087,7 @@ _copyResTarget(ResTarget *from) COPY_STRING_FIELD(name); COPY_NODE_FIELD(indirection); COPY_NODE_FIELD(val); - COPY_SCALAR_FIELD(location); + COPY_LOCATION_FIELD(location); return newnode; } @@ -963,13 +1099,12 @@ _copyTypeName(TypeName *from) COPY_NODE_FIELD(names); COPY_SCALAR_FIELD(typeid); - COPY_SCALAR_FIELD(timezone); COPY_SCALAR_FIELD(setof); COPY_SCALAR_FIELD(pct_type); COPY_NODE_FIELD(typmods); COPY_SCALAR_FIELD(typemod); COPY_NODE_FIELD(arrayBounds); - COPY_SCALAR_FIELD(location); + COPY_LOCATION_FIELD(location); return newnode; } @@ -979,10 +1114,26 @@ _copySortBy(SortBy *from) { SortBy *newnode = makeNode(SortBy); + COPY_NODE_FIELD(node); COPY_SCALAR_FIELD(sortby_dir); COPY_SCALAR_FIELD(sortby_nulls); COPY_NODE_FIELD(useOp); - COPY_NODE_FIELD(node); + COPY_LOCATION_FIELD(location); + + return newnode; +} + +static WindowDef * +_copyWindowDef(WindowDef *from) +{ + WindowDef *newnode = makeNode(WindowDef); + + COPY_STRING_FIELD(name); + COPY_STRING_FIELD(refname); + COPY_NODE_FIELD(partitionClause); + COPY_NODE_FIELD(orderClause); + COPY_SCALAR_FIELD(frameOptions); + COPY_LOCATION_FIELD(location); return newnode; } @@ -1017,6 +1168,7 @@ _copyTypeCast(TypeCast *from) COPY_NODE_FIELD(arg); COPY_NODE_FIELD(typename); + COPY_LOCATION_FIELD(location); return newnode; } @@ -1073,8 +1225,10 @@ _copyDefElem(DefElem *from) { DefElem *newnode = makeNode(DefElem); + COPY_STRING_FIELD(defnamespace); COPY_STRING_FIELD(defname); COPY_NODE_FIELD(arg); + COPY_SCALAR_FIELD(defaction); return newnode; } @@ -1099,6 +1253,7 @@ _copyXmlSerialize(XmlSerialize *from) COPY_SCALAR_FIELD(xmloption); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(typename); + COPY_LOCATION_FIELD(location); return newnode; } @@ -1115,13 +1270,18 @@ _copyQuery(Query *from) COPY_SCALAR_FIELD(resultRelation); COPY_NODE_FIELD(intoClause); COPY_SCALAR_FIELD(hasAggs); + COPY_SCALAR_FIELD(hasWindowFuncs); COPY_SCALAR_FIELD(hasSubLinks); + COPY_SCALAR_FIELD(hasDistinctOn); + COPY_SCALAR_FIELD(hasRecursive); + COPY_NODE_FIELD(cteList); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(jointree); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(groupClause); COPY_NODE_FIELD(havingQual); + COPY_NODE_FIELD(windowClause); COPY_NODE_FIELD(distinctClause); COPY_NODE_FIELD(sortClause); COPY_NODE_FIELD(limitOffset); @@ -1184,6 +1344,8 @@ _copySelectStmt(SelectStmt *from) COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(groupClause); COPY_NODE_FIELD(havingClause); + COPY_NODE_FIELD(windowClause); + COPY_NODE_FIELD(withClause); COPY_NODE_FIELD(valuesLists); COPY_NODE_FIELD(sortClause); COPY_NODE_FIELD(limitOffset); @@ -1208,6 +1370,7 @@ _copySetOperationStmt(SetOperationStmt *from) COPY_NODE_FIELD(rarg); COPY_NODE_FIELD(colTypes); COPY_NODE_FIELD(colTypmods); + COPY_NODE_FIELD(groupClauses); return newnode; } @@ -1289,6 +1452,17 @@ _copyFuncWithArgs(FuncWithArgs *from) return newnode; } +static AccessPriv * +_copyAccessPriv(AccessPriv *from) +{ + AccessPriv *newnode = makeNode(AccessPriv); + + COPY_STRING_FIELD(priv_name); + COPY_NODE_FIELD(cols); + + return newnode; +} + static GrantRoleStmt * _copyGrantRoleStmt(GrantRoleStmt *from) { @@ -1333,6 +1507,7 @@ _copyClusterStmt(ClusterStmt *from) COPY_NODE_FIELD(relation); COPY_STRING_FIELD(indexname); + COPY_SCALAR_FIELD(verbose); return newnode; } @@ -1412,6 +1587,7 @@ _copyTruncateStmt(TruncateStmt *from) TruncateStmt *newnode = makeNode(TruncateStmt); COPY_NODE_FIELD(relations); + COPY_SCALAR_FIELD(restart_seqs); COPY_SCALAR_FIELD(behavior); return newnode; @@ -1454,7 +1630,6 @@ _copyIndexStmt(IndexStmt *from) COPY_STRING_FIELD(tableSpace); COPY_NODE_FIELD(indexParams); COPY_NODE_FIELD(options); - COPY_STRING_FIELD(src_options); COPY_NODE_FIELD(whereClause); COPY_SCALAR_FIELD(unique); COPY_SCALAR_FIELD(primary); @@ -1487,6 +1662,7 @@ _copyFunctionParameter(FunctionParameter *from) COPY_STRING_FIELD(name); COPY_NODE_FIELD(argType); COPY_SCALAR_FIELD(mode); + COPY_NODE_FIELD(defexpr); return newnode; } @@ -1608,7 +1784,7 @@ _copyNotifyStmt(NotifyStmt *from) { NotifyStmt *newnode = makeNode(NotifyStmt); - COPY_NODE_FIELD(relation); + COPY_STRING_FIELD(conditionname); return newnode; } @@ -1618,7 +1794,7 @@ _copyListenStmt(ListenStmt *from) { ListenStmt *newnode = makeNode(ListenStmt); - COPY_NODE_FIELD(relation); + COPY_STRING_FIELD(conditionname); return newnode; } @@ -1628,7 +1804,7 @@ _copyUnlistenStmt(UnlistenStmt *from) { UnlistenStmt *newnode = makeNode(UnlistenStmt); - COPY_NODE_FIELD(relation); + COPY_STRING_FIELD(conditionname); return newnode; } @@ -1726,7 +1902,6 @@ _copyCreateOpClassItem(CreateOpClassItem *from) COPY_NODE_FIELD(name); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(number); - COPY_SCALAR_FIELD(recheck); COPY_NODE_FIELD(class_args); COPY_NODE_FIELD(storedtype); @@ -1811,6 +1986,7 @@ _copyVacuumStmt(VacuumStmt *from) COPY_SCALAR_FIELD(analyze); COPY_SCALAR_FIELD(verbose); COPY_SCALAR_FIELD(freeze_min_age); + COPY_SCALAR_FIELD(freeze_table_age); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(va_cols); @@ -1907,6 +2083,118 @@ _copyDropTableSpaceStmt(DropTableSpaceStmt *from) return newnode; } +static CreateFdwStmt * +_copyCreateFdwStmt(CreateFdwStmt *from) +{ + CreateFdwStmt *newnode = makeNode(CreateFdwStmt); + + COPY_STRING_FIELD(fdwname); + COPY_NODE_FIELD(validator); + COPY_NODE_FIELD(options); + + return newnode; +} + +static AlterFdwStmt * +_copyAlterFdwStmt(AlterFdwStmt *from) +{ + AlterFdwStmt *newnode = makeNode(AlterFdwStmt); + + COPY_STRING_FIELD(fdwname); + COPY_NODE_FIELD(validator); + COPY_SCALAR_FIELD(change_validator); + COPY_NODE_FIELD(options); + + return newnode; +} + +static DropFdwStmt * +_copyDropFdwStmt(DropFdwStmt *from) +{ + DropFdwStmt *newnode = makeNode(DropFdwStmt); + + COPY_STRING_FIELD(fdwname); + COPY_SCALAR_FIELD(missing_ok); + COPY_SCALAR_FIELD(behavior); + + return newnode; +} + +static CreateForeignServerStmt * +_copyCreateForeignServerStmt(CreateForeignServerStmt *from) +{ + CreateForeignServerStmt *newnode = makeNode(CreateForeignServerStmt); + + COPY_STRING_FIELD(servername); + COPY_STRING_FIELD(servertype); + COPY_STRING_FIELD(version); + COPY_STRING_FIELD(fdwname); + COPY_NODE_FIELD(options); + + return newnode; +} + +static AlterForeignServerStmt * +_copyAlterForeignServerStmt(AlterForeignServerStmt *from) +{ + AlterForeignServerStmt *newnode = makeNode(AlterForeignServerStmt); + + COPY_STRING_FIELD(servername); + COPY_STRING_FIELD(version); + COPY_NODE_FIELD(options); + COPY_SCALAR_FIELD(has_version); + + return newnode; +} + +static DropForeignServerStmt * +_copyDropForeignServerStmt(DropForeignServerStmt *from) +{ + DropForeignServerStmt *newnode = makeNode(DropForeignServerStmt); + + COPY_STRING_FIELD(servername); + COPY_SCALAR_FIELD(missing_ok); + COPY_SCALAR_FIELD(behavior); + + return newnode; +} + +static CreateUserMappingStmt * +_copyCreateUserMappingStmt(CreateUserMappingStmt *from) +{ + CreateUserMappingStmt *newnode = makeNode(CreateUserMappingStmt); + + COPY_STRING_FIELD(username); + COPY_STRING_FIELD(servername); + COPY_NODE_FIELD(options); + + return newnode; +} + +static AlterUserMappingStmt * +_copyAlterUserMappingStmt(AlterUserMappingStmt *from) +{ + AlterUserMappingStmt *newnode = makeNode(AlterUserMappingStmt); + + COPY_STRING_FIELD(username); + COPY_STRING_FIELD(servername); + COPY_NODE_FIELD(options); + + return newnode; +} + +static DropUserMappingStmt * +_copyDropUserMappingStmt(DropUserMappingStmt *from) +{ + DropUserMappingStmt *newnode = makeNode(DropUserMappingStmt); + + COPY_STRING_FIELD(username); + COPY_STRING_FIELD(servername); + COPY_SCALAR_FIELD(missing_ok); + + return newnode; +} + static CreateTrigStmt * _copyCreateTrigStmt(CreateTrigStmt *from) { @@ -1918,7 +2206,7 @@ _copyCreateTrigStmt(CreateTrigStmt *from) COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(before); COPY_SCALAR_FIELD(row); - strcpy(newnode->actions, from->actions); /* in-line string field */ + COPY_SCALAR_FIELD(events); COPY_SCALAR_FIELD(isconstraint); COPY_SCALAR_FIELD(deferrable); COPY_SCALAR_FIELD(initdeferred); @@ -2084,6 +2372,7 @@ _copyCreateCastStmt(CreateCastStmt *from) COPY_NODE_FIELD(targettype); COPY_NODE_FIELD(func); COPY_SCALAR_FIELD(context); + COPY_SCALAR_FIELD(inout); return newnode; } @@ -2157,6 +2446,32 @@ _copyReassignOwnedStmt(ReassignOwnedStmt *from) return newnode; } +static AlterTSDictionaryStmt * +_copyAlterTSDictionaryStmt(AlterTSDictionaryStmt *from) +{ + AlterTSDictionaryStmt *newnode = makeNode(AlterTSDictionaryStmt); + + COPY_NODE_FIELD(dictname); + COPY_NODE_FIELD(options); + + return newnode; +} + +static AlterTSConfigurationStmt * +_copyAlterTSConfigurationStmt(AlterTSConfigurationStmt *from) +{ + AlterTSConfigurationStmt *newnode = makeNode(AlterTSConfigurationStmt); + + COPY_NODE_FIELD(cfgname); + COPY_NODE_FIELD(tokentype); + COPY_NODE_FIELD(dicts); + COPY_SCALAR_FIELD(override); + COPY_SCALAR_FIELD(replace); + COPY_SCALAR_FIELD(missing_ok); + + return newnode; +} + /* **************************************************************** * pg_list.h copy functions * **************************************************************** @@ -2178,6 +2493,8 @@ _copyList(List *from) ListCell *curr_old; ListCell *prev_new; + Assert(list_length(from) >= 1); + new = makeNode(List); new->length = from->length; @@ -2267,6 +2584,9 @@ copyObject(void *from) case T_Aggref: retval = _copyAggref(from); break; + case T_WindowFunc: + retval = _copyWindowFunc(from); + break; case T_ArrayRef: retval = _copyArrayRef(from); break; @@ -2291,6 +2611,9 @@ copyObject(void *from) case T_SubPlan: retval = _copySubPlan(from); break; + case T_AlternativeSubPlan: + retval = _copyAlternativeSubPlan(from); + break; case T_FieldSelect: retval = _copyFieldSelect(from); break; @@ -2577,6 +2900,33 @@ copyObject(void *from) case T_DropTableSpaceStmt: retval = _copyDropTableSpaceStmt(from); break; + case T_CreateFdwStmt: + retval = _copyCreateFdwStmt(from); + break; + case T_AlterFdwStmt: + retval = _copyAlterFdwStmt(from); + break; + case T_DropFdwStmt: + retval = _copyDropFdwStmt(from); + break; + case T_CreateForeignServerStmt: + retval = _copyCreateForeignServerStmt(from); + break; + case T_AlterForeignServerStmt: + retval = _copyAlterForeignServerStmt(from); + break; + case T_DropForeignServerStmt: + retval = _copyDropForeignServerStmt(from); + break; + case T_CreateUserMappingStmt: + retval = _copyCreateUserMappingStmt(from); + break; + case T_AlterUserMappingStmt: + retval = _copyAlterUserMappingStmt(from); + break; + case T_DropUserMappingStmt: + retval = _copyDropUserMappingStmt(from); + break; case T_CreateTrigStmt: retval = _copyCreateTrigStmt(from); break; @@ -2640,6 +2990,12 @@ copyObject(void *from) case T_ReassignOwnedStmt: retval = _copyReassignOwnedStmt(from); break; + case T_AlterTSDictionaryStmt: + retval = _copyAlterTSDictionaryStmt(from); + break; + case T_AlterTSConfigurationStmt: + retval = _copyAlterTSConfigurationStmt(from); + break; case T_A_Expr: retval = _copyAExpr(from); @@ -2656,12 +3012,18 @@ copyObject(void *from) case T_FuncCall: retval = _copyFuncCall(from); break; + case T_A_Star: + retval = _copyAStar(from); + break; case T_A_Indices: retval = _copyAIndices(from); break; case T_A_Indirection: retval = _copyA_Indirection(from); break; + case T_A_ArrayExpr: + retval = _copyA_ArrayExpr(from); + break; case T_ResTarget: retval = _copyResTarget(from); break; @@ -2671,6 +3033,9 @@ copyObject(void *from) case T_SortBy: retval = _copySortBy(from); break; + case T_WindowDef: + retval = _copyWindowDef(from); + break; case T_RangeSubselect: retval = _copyRangeSubselect(from); break; @@ -2698,15 +3063,21 @@ copyObject(void *from) case T_RangeTblEntry: retval = _copyRangeTblEntry(from); break; - case T_SortClause: - retval = _copySortClause(from); + case T_SortGroupClause: + retval = _copySortGroupClause(from); break; - case T_GroupClause: - retval = _copyGroupClause(from); + case T_WindowClause: + retval = _copyWindowClause(from); break; case T_RowMarkClause: retval = _copyRowMarkClause(from); break; + case T_WithClause: + retval = _copyWithClause(from); + break; + case T_CommonTableExpr: + retval = _copyCommonTableExpr(from); + break; case T_FkConstraint: retval = _copyFkConstraint(from); break; @@ -2716,6 +3087,9 @@ copyObject(void *from) case T_FuncWithArgs: retval = _copyFuncWithArgs(from); break; + case T_AccessPriv: + retval = _copyAccessPriv(from); + break; case T_XmlSerialize: retval = _copyXmlSerialize(from); break; @@ -2728,3 +3102,25 @@ copyObject(void *from) return retval; } + +/* from backend/nodes/bitmapset.c start */ +#define BITMAPSET_SIZE(nwords) \ + (offsetof(Bitmapset, words) + (nwords) * sizeof(bitmapword)) + +/* + * bms_copy - make a palloc'd copy of a bitmapset + */ +Bitmapset * +bms_copy(const Bitmapset *a) +{ + Bitmapset *result; + size_t size; + + if (a == NULL) + return NULL; + size = BITMAPSET_SIZE(a->nwords); + result = (Bitmapset *) palloc(size); + memcpy(result, a, size); + return result; +} +/* from backend/nodes/bitmapset.c end */ diff --git a/parser/gram.c b/parser/gram.c index a3e68692d..653a309e9 100644 --- a/parser/gram.c +++ b/parser/gram.c @@ -104,354 +104,372 @@ CASCADED = 295, CASE = 296, CAST = 297, - CHAIN = 298, - CHAR_P = 299, - CHARACTER = 300, - CHARACTERISTICS = 301, - CHECK = 302, - CHECKPOINT = 303, - CLASS = 304, - CLOSE = 305, - CLUSTER = 306, - COALESCE = 307, - COLLATE = 308, - COLUMN = 309, - COMMENT = 310, - COMMIT = 311, - COMMITTED = 312, - CONCURRENTLY = 313, - CONFIGURATION = 314, - CONNECTION = 315, - CONSTRAINT = 316, - CONSTRAINTS = 317, - CONTENT_P = 318, - CONVERSION_P = 319, - COPY = 320, - COST = 321, - CREATE = 322, - CREATEDB = 323, - CREATEROLE = 324, - CREATEUSER = 325, - CROSS = 326, - CSV = 327, - CURRENT_P = 328, - CURRENT_DATE = 329, - CURRENT_ROLE = 330, - CURRENT_TIME = 331, - CURRENT_TIMESTAMP = 332, - CURRENT_USER = 333, - CURSOR = 334, - CYCLE = 335, - DATABASE = 336, - DAY_P = 337, - DEALLOCATE = 338, - DEC = 339, - DECIMAL_P = 340, - DECLARE = 341, - DEFAULT = 342, - DEFAULTS = 343, - DEFERRABLE = 344, - DEFERRED = 345, - DEFINER = 346, - DELETE_P = 347, - DELIMITER = 348, - DELIMITERS = 349, - DESC = 350, - DICTIONARY = 351, - DISABLE_P = 352, - DISCARD = 353, - DISTINCT = 354, - DO = 355, - DOCUMENT_P = 356, - DOMAIN_P = 357, - DOUBLE_P = 358, - DROP = 359, - EACH = 360, - ELSE = 361, - ENABLE_P = 362, - ENCODING = 363, - ENCRYPTED = 364, - END_P = 365, - ENUM_P = 366, - ESCAPE = 367, - EXCEPT = 368, - EXCLUDING = 369, - EXCLUSIVE = 370, - EXECUTE = 371, - EXISTS = 372, - EXPLAIN = 373, - EXTERNAL = 374, - EXTRACT = 375, - FALSE_P = 376, - FAMILY = 377, - FETCH = 378, - FIRST_P = 379, - FLOAT_P = 380, - FOR = 381, - FORCE = 382, - FOREIGN = 383, - FORWARD = 384, - FREEZE = 385, - FROM = 386, - FULL = 387, - FUNCTION = 388, - GLOBAL = 389, - GRANT = 390, - GRANTED = 391, - GREATEST = 392, - GROUP_P = 393, - HANDLER = 394, - HAVING = 395, - HEADER_P = 396, - HOLD = 397, - HOUR_P = 398, - IF_P = 399, - ILIKE = 400, - IMMEDIATE = 401, - IMMUTABLE = 402, - IMPLICIT_P = 403, - IN_P = 404, - INCLUDING = 405, - INCREMENT = 406, - INDEX = 407, - INDEXES = 408, - INHERIT = 409, - INHERITS = 410, - INITIALLY = 411, - INNER_P = 412, - INOUT = 413, - INPUT_P = 414, - INSENSITIVE = 415, - INSERT = 416, - INSTEAD = 417, - INT_P = 418, - INTEGER = 419, - INTERSECT = 420, - INTERVAL = 421, - INTO = 422, - INVOKER = 423, - IS = 424, - ISNULL = 425, - ISOLATION = 426, - JOIN = 427, - KEY = 428, - LANCOMPILER = 429, - LANGUAGE = 430, - LARGE_P = 431, - LAST_P = 432, - LEADING = 433, - LEAST = 434, - LEFT = 435, - LEVEL = 436, - LIKE = 437, - LIMIT = 438, - LISTEN = 439, - LOAD = 440, - LOCAL = 441, - LOCALTIME = 442, - LOCALTIMESTAMP = 443, - LOCATION = 444, - LOCK_P = 445, - LOGIN_P = 446, - MAPPING = 447, - MATCH = 448, - MAXVALUE = 449, - MINUTE_P = 450, - MINVALUE = 451, - MODE = 452, - MONTH_P = 453, - MOVE = 454, - NAME_P = 455, - NAMES = 456, - NATIONAL = 457, - NATURAL = 458, - NCHAR = 459, - NEW = 460, - NEXT = 461, - NO = 462, - NOCREATEDB = 463, - NOCREATEROLE = 464, - NOCREATEUSER = 465, - NOINHERIT = 466, - NOLOGIN_P = 467, - NONE = 468, - NOSUPERUSER = 469, - NOT = 470, - NOTHING = 471, - NOTIFY = 472, - NOTNULL = 473, - NOWAIT = 474, - NULL_P = 475, - NULLIF = 476, - NULLS_P = 477, - NUMERIC = 478, - OBJECT_P = 479, - OF = 480, - OFF = 481, - OFFSET = 482, - OIDS = 483, - OLD = 484, - ON = 485, - ONLY = 486, - OPERATOR = 487, - OPTION = 488, - OR = 489, - ORDER = 490, - OUT_P = 491, - OUTER_P = 492, - OVERLAPS = 493, - OVERLAY = 494, - OWNED = 495, - OWNER = 496, - PARSER = 497, - PARTIAL = 498, - PASSWORD = 499, - PLACING = 500, - PLANS = 501, - POSITION = 502, - PRECISION = 503, - PRESERVE = 504, - PREPARE = 505, - PREPARED = 506, - PRIMARY = 507, - PRIOR = 508, - PRIVILEGES = 509, - PROCEDURAL = 510, - PROCEDURE = 511, - QUOTE = 512, - READ = 513, - REAL = 514, - REASSIGN = 515, - RECHECK = 516, - REFERENCES = 517, - REINDEX = 518, - RELATIVE_P = 519, - RELEASE = 520, - RENAME = 521, - REPEATABLE = 522, - REPLACE = 523, - REPLICA = 524, - RESET = 525, - RESTART = 526, - RESTRICT = 527, - RETURNING = 528, - RETURNS = 529, - REVOKE = 530, - RIGHT = 531, - ROLE = 532, - ROLLBACK = 533, - ROW = 534, - ROWS = 535, - RULE = 536, - SAVEPOINT = 537, - SCHEMA = 538, - SCROLL = 539, - SEARCH = 540, - SECOND_P = 541, - SECURITY = 542, - SELECT = 543, - SEQUENCE = 544, - SERIALIZABLE = 545, - SESSION = 546, - SESSION_USER = 547, - SET = 548, - SETOF = 549, - SHARE = 550, - SHOW = 551, - SIMILAR = 552, - SIMPLE = 553, - SMALLINT = 554, - SOME = 555, - STABLE = 556, - STANDALONE_P = 557, - START = 558, - STATEMENT = 559, - STATISTICS = 560, - STDIN = 561, - STDOUT = 562, - STORAGE = 563, - STRICT_P = 564, - STRIP_P = 565, - SUBSTRING = 566, - SUPERUSER_P = 567, - SYMMETRIC = 568, - SYSID = 569, - SYSTEM_P = 570, - TABLE = 571, - TABLESPACE = 572, - TEMP = 573, - TEMPLATE = 574, - TEMPORARY = 575, - TEXT_P = 576, - THEN = 577, - TIME = 578, - TIMESTAMP = 579, - TO = 580, - TRAILING = 581, - TRANSACTION = 582, - TREAT = 583, - TRIGGER = 584, - TRIM = 585, - TRUE_P = 586, - TRUNCATE = 587, - TRUSTED = 588, - TYPE_P = 589, - UNCOMMITTED = 590, - UNENCRYPTED = 591, - UNION = 592, - UNIQUE = 593, - UNKNOWN = 594, - UNLISTEN = 595, - UNTIL = 596, - UPDATE = 597, - USER = 598, - USING = 599, - VACUUM = 600, - VALID = 601, - VALIDATOR = 602, - VALUE_P = 603, - VALUES = 604, - VARCHAR = 605, - VARYING = 606, - VERBOSE = 607, - VERSION_P = 608, - VIEW = 609, - VOLATILE = 610, - WHEN = 611, - WHERE = 612, - WHITESPACE_P = 613, - WITH = 614, - WITHOUT = 615, - WORK = 616, - WRITE = 617, - XML_P = 618, - XMLATTRIBUTES = 619, - XMLCONCAT = 620, - XMLELEMENT = 621, - XMLFOREST = 622, - XMLPARSE = 623, - XMLPI = 624, - XMLROOT = 625, - XMLSERIALIZE = 626, - YEAR_P = 627, - YES_P = 628, - ZONE = 629, - NULLS_FIRST = 630, - NULLS_LAST = 631, - WITH_CASCADED = 632, - WITH_LOCAL = 633, - WITH_CHECK = 634, - IDENT = 635, - FCONST = 636, - SCONST = 637, - BCONST = 638, - XCONST = 639, - Op = 640, - ICONST = 641, - PARAM = 642, - POSTFIXOP = 643, - UMINUS = 644, - TYPECAST = 645 + CATALOG_P = 298, + CHAIN = 299, + CHAR_P = 300, + CHARACTER = 301, + CHARACTERISTICS = 302, + CHECK = 303, + CHECKPOINT = 304, + CLASS = 305, + CLOSE = 306, + CLUSTER = 307, + COALESCE = 308, + COLLATE = 309, + COLUMN = 310, + COMMENT = 311, + COMMIT = 312, + COMMITTED = 313, + CONCURRENTLY = 314, + CONFIGURATION = 315, + CONNECTION = 316, + CONSTRAINT = 317, + CONSTRAINTS = 318, + CONTENT_P = 319, + CONTINUE_P = 320, + CONVERSION_P = 321, + COPY = 322, + COST = 323, + CREATE = 324, + CREATEDB = 325, + CREATEROLE = 326, + CREATEUSER = 327, + CROSS = 328, + CSV = 329, + CURRENT_P = 330, + CURRENT_CATALOG = 331, + CURRENT_DATE = 332, + CURRENT_ROLE = 333, + CURRENT_SCHEMA = 334, + CURRENT_TIME = 335, + CURRENT_TIMESTAMP = 336, + CURRENT_USER = 337, + CURSOR = 338, + CYCLE = 339, + DATA_P = 340, + DATABASE = 341, + DAY_P = 342, + DEALLOCATE = 343, + DEC = 344, + DECIMAL_P = 345, + DECLARE = 346, + DEFAULT = 347, + DEFAULTS = 348, + DEFERRABLE = 349, + DEFERRED = 350, + DEFINER = 351, + DELETE_P = 352, + DELIMITER = 353, + DELIMITERS = 354, + DESC = 355, + DICTIONARY = 356, + DISABLE_P = 357, + DISCARD = 358, + DISTINCT = 359, + DO = 360, + DOCUMENT_P = 361, + DOMAIN_P = 362, + DOUBLE_P = 363, + DROP = 364, + EACH = 365, + ELSE = 366, + ENABLE_P = 367, + ENCODING = 368, + ENCRYPTED = 369, + END_P = 370, + ENUM_P = 371, + ESCAPE = 372, + EXCEPT = 373, + EXCLUDING = 374, + EXCLUSIVE = 375, + EXECUTE = 376, + EXISTS = 377, + EXPLAIN = 378, + EXTERNAL = 379, + EXTRACT = 380, + FALSE_P = 381, + FAMILY = 382, + FETCH = 383, + FIRST_P = 384, + FLOAT_P = 385, + FOLLOWING = 386, + FOR = 387, + FORCE = 388, + FOREIGN = 389, + FORWARD = 390, + FREEZE = 391, + FROM = 392, + FULL = 393, + FUNCTION = 394, + GLOBAL = 395, + GRANT = 396, + GRANTED = 397, + GREATEST = 398, + GROUP_P = 399, + HANDLER = 400, + HAVING = 401, + HEADER_P = 402, + HOLD = 403, + HOUR_P = 404, + IDENTITY_P = 405, + IF_P = 406, + ILIKE = 407, + IMMEDIATE = 408, + IMMUTABLE = 409, + IMPLICIT_P = 410, + IN_P = 411, + INCLUDING = 412, + INCREMENT = 413, + INDEX = 414, + INDEXES = 415, + INHERIT = 416, + INHERITS = 417, + INITIALLY = 418, + INNER_P = 419, + INOUT = 420, + INPUT_P = 421, + INSENSITIVE = 422, + INSERT = 423, + INSTEAD = 424, + INT_P = 425, + INTEGER = 426, + INTERSECT = 427, + INTERVAL = 428, + INTO = 429, + INVOKER = 430, + IS = 431, + ISNULL = 432, + ISOLATION = 433, + JOIN = 434, + KEY = 435, + LANCOMPILER = 436, + LANGUAGE = 437, + LARGE_P = 438, + LAST_P = 439, + LC_COLLATE_P = 440, + LC_CTYPE_P = 441, + LEADING = 442, + LEAST = 443, + LEFT = 444, + LEVEL = 445, + LIKE = 446, + LIMIT = 447, + LISTEN = 448, + LOAD = 449, + LOCAL = 450, + LOCALTIME = 451, + LOCALTIMESTAMP = 452, + LOCATION = 453, + LOCK_P = 454, + LOGIN_P = 455, + MAPPING = 456, + MATCH = 457, + MAXVALUE = 458, + MINUTE_P = 459, + MINVALUE = 460, + MODE = 461, + MONTH_P = 462, + MOVE = 463, + NAME_P = 464, + NAMES = 465, + NATIONAL = 466, + NATURAL = 467, + NCHAR = 468, + NEW = 469, + NEXT = 470, + NO = 471, + NOCREATEDB = 472, + NOCREATEROLE = 473, + NOCREATEUSER = 474, + NOINHERIT = 475, + NOLOGIN_P = 476, + NONE = 477, + NOSUPERUSER = 478, + NOT = 479, + NOTHING = 480, + NOTIFY = 481, + NOTNULL = 482, + NOWAIT = 483, + NULL_P = 484, + NULLIF = 485, + NULLS_P = 486, + NUMERIC = 487, + OBJECT_P = 488, + OF = 489, + OFF = 490, + OFFSET = 491, + OIDS = 492, + OLD = 493, + ON = 494, + ONLY = 495, + OPERATOR = 496, + OPTION = 497, + OPTIONS = 498, + OR = 499, + ORDER = 500, + OUT_P = 501, + OUTER_P = 502, + OVER = 503, + OVERLAPS = 504, + OVERLAY = 505, + OWNED = 506, + OWNER = 507, + PARSER = 508, + PARTIAL = 509, + PARTITION = 510, + PASSWORD = 511, + PLACING = 512, + PLANS = 513, + POSITION = 514, + PRECEDING = 515, + PRECISION = 516, + PRESERVE = 517, + PREPARE = 518, + PREPARED = 519, + PRIMARY = 520, + PRIOR = 521, + PRIVILEGES = 522, + PROCEDURAL = 523, + PROCEDURE = 524, + QUOTE = 525, + RANGE = 526, + READ = 527, + REAL = 528, + REASSIGN = 529, + RECHECK = 530, + RECURSIVE = 531, + REFERENCES = 532, + REINDEX = 533, + RELATIVE_P = 534, + RELEASE = 535, + RENAME = 536, + REPEATABLE = 537, + REPLACE = 538, + REPLICA = 539, + RESET = 540, + RESTART = 541, + RESTRICT = 542, + RETURNING = 543, + RETURNS = 544, + REVOKE = 545, + RIGHT = 546, + ROLE = 547, + ROLLBACK = 548, + ROW = 549, + ROWS = 550, + RULE = 551, + SAVEPOINT = 552, + SCHEMA = 553, + SCROLL = 554, + SEARCH = 555, + SECOND_P = 556, + SECURITY = 557, + SELECT = 558, + SEQUENCE = 559, + SERIALIZABLE = 560, + SERVER = 561, + SESSION = 562, + SESSION_USER = 563, + SET = 564, + SETOF = 565, + SHARE = 566, + SHOW = 567, + SIMILAR = 568, + SIMPLE = 569, + SMALLINT = 570, + SOME = 571, + STABLE = 572, + STANDALONE_P = 573, + START = 574, + STATEMENT = 575, + STATISTICS = 576, + STDIN = 577, + STDOUT = 578, + STORAGE = 579, + STRICT_P = 580, + STRIP_P = 581, + SUBSTRING = 582, + SUPERUSER_P = 583, + SYMMETRIC = 584, + SYSID = 585, + SYSTEM_P = 586, + TABLE = 587, + TABLESPACE = 588, + TEMP = 589, + TEMPLATE = 590, + TEMPORARY = 591, + TEXT_P = 592, + THEN = 593, + TIME = 594, + TIMESTAMP = 595, + TO = 596, + TRAILING = 597, + TRANSACTION = 598, + TREAT = 599, + TRIGGER = 600, + TRIM = 601, + TRUE_P = 602, + TRUNCATE = 603, + TRUSTED = 604, + TYPE_P = 605, + UNBOUNDED = 606, + UNCOMMITTED = 607, + UNENCRYPTED = 608, + UNION = 609, + UNIQUE = 610, + UNKNOWN = 611, + UNLISTEN = 612, + UNTIL = 613, + UPDATE = 614, + USER = 615, + USING = 616, + VACUUM = 617, + VALID = 618, + VALIDATOR = 619, + VALUE_P = 620, + VALUES = 621, + VARCHAR = 622, + VARIADIC = 623, + VARYING = 624, + VERBOSE = 625, + VERSION_P = 626, + VIEW = 627, + VOLATILE = 628, + WHEN = 629, + WHERE = 630, + WHITESPACE_P = 631, + WINDOW = 632, + WITH = 633, + WITHOUT = 634, + WORK = 635, + WRAPPER = 636, + WRITE = 637, + XML_P = 638, + XMLATTRIBUTES = 639, + XMLCONCAT = 640, + XMLELEMENT = 641, + XMLFOREST = 642, + XMLPARSE = 643, + XMLPI = 644, + XMLROOT = 645, + XMLSERIALIZE = 646, + YEAR_P = 647, + YES_P = 648, + ZONE = 649, + NULLS_FIRST = 650, + NULLS_LAST = 651, + WITH_TIME = 652, + IDENT = 653, + FCONST = 654, + SCONST = 655, + BCONST = 656, + XCONST = 657, + Op = 658, + ICONST = 659, + PARAM = 660, + POSTFIXOP = 661, + UMINUS = 662, + TYPECAST = 663 }; #endif /* Tokens. */ @@ -495,354 +513,372 @@ #define CASCADED 295 #define CASE 296 #define CAST 297 -#define CHAIN 298 -#define CHAR_P 299 -#define CHARACTER 300 -#define CHARACTERISTICS 301 -#define CHECK 302 -#define CHECKPOINT 303 -#define CLASS 304 -#define CLOSE 305 -#define CLUSTER 306 -#define COALESCE 307 -#define COLLATE 308 -#define COLUMN 309 -#define COMMENT 310 -#define COMMIT 311 -#define COMMITTED 312 -#define CONCURRENTLY 313 -#define CONFIGURATION 314 -#define CONNECTION 315 -#define CONSTRAINT 316 -#define CONSTRAINTS 317 -#define CONTENT_P 318 -#define CONVERSION_P 319 -#define COPY 320 -#define COST 321 -#define CREATE 322 -#define CREATEDB 323 -#define CREATEROLE 324 -#define CREATEUSER 325 -#define CROSS 326 -#define CSV 327 -#define CURRENT_P 328 -#define CURRENT_DATE 329 -#define CURRENT_ROLE 330 -#define CURRENT_TIME 331 -#define CURRENT_TIMESTAMP 332 -#define CURRENT_USER 333 -#define CURSOR 334 -#define CYCLE 335 -#define DATABASE 336 -#define DAY_P 337 -#define DEALLOCATE 338 -#define DEC 339 -#define DECIMAL_P 340 -#define DECLARE 341 -#define DEFAULT 342 -#define DEFAULTS 343 -#define DEFERRABLE 344 -#define DEFERRED 345 -#define DEFINER 346 -#define DELETE_P 347 -#define DELIMITER 348 -#define DELIMITERS 349 -#define DESC 350 -#define DICTIONARY 351 -#define DISABLE_P 352 -#define DISCARD 353 -#define DISTINCT 354 -#define DO 355 -#define DOCUMENT_P 356 -#define DOMAIN_P 357 -#define DOUBLE_P 358 -#define DROP 359 -#define EACH 360 -#define ELSE 361 -#define ENABLE_P 362 -#define ENCODING 363 -#define ENCRYPTED 364 -#define END_P 365 -#define ENUM_P 366 -#define ESCAPE 367 -#define EXCEPT 368 -#define EXCLUDING 369 -#define EXCLUSIVE 370 -#define EXECUTE 371 -#define EXISTS 372 -#define EXPLAIN 373 -#define EXTERNAL 374 -#define EXTRACT 375 -#define FALSE_P 376 -#define FAMILY 377 -#define FETCH 378 -#define FIRST_P 379 -#define FLOAT_P 380 -#define FOR 381 -#define FORCE 382 -#define FOREIGN 383 -#define FORWARD 384 -#define FREEZE 385 -#define FROM 386 -#define FULL 387 -#define FUNCTION 388 -#define GLOBAL 389 -#define GRANT 390 -#define GRANTED 391 -#define GREATEST 392 -#define GROUP_P 393 -#define HANDLER 394 -#define HAVING 395 -#define HEADER_P 396 -#define HOLD 397 -#define HOUR_P 398 -#define IF_P 399 -#define ILIKE 400 -#define IMMEDIATE 401 -#define IMMUTABLE 402 -#define IMPLICIT_P 403 -#define IN_P 404 -#define INCLUDING 405 -#define INCREMENT 406 -#define INDEX 407 -#define INDEXES 408 -#define INHERIT 409 -#define INHERITS 410 -#define INITIALLY 411 -#define INNER_P 412 -#define INOUT 413 -#define INPUT_P 414 -#define INSENSITIVE 415 -#define INSERT 416 -#define INSTEAD 417 -#define INT_P 418 -#define INTEGER 419 -#define INTERSECT 420 -#define INTERVAL 421 -#define INTO 422 -#define INVOKER 423 -#define IS 424 -#define ISNULL 425 -#define ISOLATION 426 -#define JOIN 427 -#define KEY 428 -#define LANCOMPILER 429 -#define LANGUAGE 430 -#define LARGE_P 431 -#define LAST_P 432 -#define LEADING 433 -#define LEAST 434 -#define LEFT 435 -#define LEVEL 436 -#define LIKE 437 -#define LIMIT 438 -#define LISTEN 439 -#define LOAD 440 -#define LOCAL 441 -#define LOCALTIME 442 -#define LOCALTIMESTAMP 443 -#define LOCATION 444 -#define LOCK_P 445 -#define LOGIN_P 446 -#define MAPPING 447 -#define MATCH 448 -#define MAXVALUE 449 -#define MINUTE_P 450 -#define MINVALUE 451 -#define MODE 452 -#define MONTH_P 453 -#define MOVE 454 -#define NAME_P 455 -#define NAMES 456 -#define NATIONAL 457 -#define NATURAL 458 -#define NCHAR 459 -#define NEW 460 -#define NEXT 461 -#define NO 462 -#define NOCREATEDB 463 -#define NOCREATEROLE 464 -#define NOCREATEUSER 465 -#define NOINHERIT 466 -#define NOLOGIN_P 467 -#define NONE 468 -#define NOSUPERUSER 469 -#define NOT 470 -#define NOTHING 471 -#define NOTIFY 472 -#define NOTNULL 473 -#define NOWAIT 474 -#define NULL_P 475 -#define NULLIF 476 -#define NULLS_P 477 -#define NUMERIC 478 -#define OBJECT_P 479 -#define OF 480 -#define OFF 481 -#define OFFSET 482 -#define OIDS 483 -#define OLD 484 -#define ON 485 -#define ONLY 486 -#define OPERATOR 487 -#define OPTION 488 -#define OR 489 -#define ORDER 490 -#define OUT_P 491 -#define OUTER_P 492 -#define OVERLAPS 493 -#define OVERLAY 494 -#define OWNED 495 -#define OWNER 496 -#define PARSER 497 -#define PARTIAL 498 -#define PASSWORD 499 -#define PLACING 500 -#define PLANS 501 -#define POSITION 502 -#define PRECISION 503 -#define PRESERVE 504 -#define PREPARE 505 -#define PREPARED 506 -#define PRIMARY 507 -#define PRIOR 508 -#define PRIVILEGES 509 -#define PROCEDURAL 510 -#define PROCEDURE 511 -#define QUOTE 512 -#define READ 513 -#define REAL 514 -#define REASSIGN 515 -#define RECHECK 516 -#define REFERENCES 517 -#define REINDEX 518 -#define RELATIVE_P 519 -#define RELEASE 520 -#define RENAME 521 -#define REPEATABLE 522 -#define REPLACE 523 -#define REPLICA 524 -#define RESET 525 -#define RESTART 526 -#define RESTRICT 527 -#define RETURNING 528 -#define RETURNS 529 -#define REVOKE 530 -#define RIGHT 531 -#define ROLE 532 -#define ROLLBACK 533 -#define ROW 534 -#define ROWS 535 -#define RULE 536 -#define SAVEPOINT 537 -#define SCHEMA 538 -#define SCROLL 539 -#define SEARCH 540 -#define SECOND_P 541 -#define SECURITY 542 -#define SELECT 543 -#define SEQUENCE 544 -#define SERIALIZABLE 545 -#define SESSION 546 -#define SESSION_USER 547 -#define SET 548 -#define SETOF 549 -#define SHARE 550 -#define SHOW 551 -#define SIMILAR 552 -#define SIMPLE 553 -#define SMALLINT 554 -#define SOME 555 -#define STABLE 556 -#define STANDALONE_P 557 -#define START 558 -#define STATEMENT 559 -#define STATISTICS 560 -#define STDIN 561 -#define STDOUT 562 -#define STORAGE 563 -#define STRICT_P 564 -#define STRIP_P 565 -#define SUBSTRING 566 -#define SUPERUSER_P 567 -#define SYMMETRIC 568 -#define SYSID 569 -#define SYSTEM_P 570 -#define TABLE 571 -#define TABLESPACE 572 -#define TEMP 573 -#define TEMPLATE 574 -#define TEMPORARY 575 -#define TEXT_P 576 -#define THEN 577 -#define TIME 578 -#define TIMESTAMP 579 -#define TO 580 -#define TRAILING 581 -#define TRANSACTION 582 -#define TREAT 583 -#define TRIGGER 584 -#define TRIM 585 -#define TRUE_P 586 -#define TRUNCATE 587 -#define TRUSTED 588 -#define TYPE_P 589 -#define UNCOMMITTED 590 -#define UNENCRYPTED 591 -#define UNION 592 -#define UNIQUE 593 -#define UNKNOWN 594 -#define UNLISTEN 595 -#define UNTIL 596 -#define UPDATE 597 -#define USER 598 -#define USING 599 -#define VACUUM 600 -#define VALID 601 -#define VALIDATOR 602 -#define VALUE_P 603 -#define VALUES 604 -#define VARCHAR 605 -#define VARYING 606 -#define VERBOSE 607 -#define VERSION_P 608 -#define VIEW 609 -#define VOLATILE 610 -#define WHEN 611 -#define WHERE 612 -#define WHITESPACE_P 613 -#define WITH 614 -#define WITHOUT 615 -#define WORK 616 -#define WRITE 617 -#define XML_P 618 -#define XMLATTRIBUTES 619 -#define XMLCONCAT 620 -#define XMLELEMENT 621 -#define XMLFOREST 622 -#define XMLPARSE 623 -#define XMLPI 624 -#define XMLROOT 625 -#define XMLSERIALIZE 626 -#define YEAR_P 627 -#define YES_P 628 -#define ZONE 629 -#define NULLS_FIRST 630 -#define NULLS_LAST 631 -#define WITH_CASCADED 632 -#define WITH_LOCAL 633 -#define WITH_CHECK 634 -#define IDENT 635 -#define FCONST 636 -#define SCONST 637 -#define BCONST 638 -#define XCONST 639 -#define Op 640 -#define ICONST 641 -#define PARAM 642 -#define POSTFIXOP 643 -#define UMINUS 644 -#define TYPECAST 645 +#define CATALOG_P 298 +#define CHAIN 299 +#define CHAR_P 300 +#define CHARACTER 301 +#define CHARACTERISTICS 302 +#define CHECK 303 +#define CHECKPOINT 304 +#define CLASS 305 +#define CLOSE 306 +#define CLUSTER 307 +#define COALESCE 308 +#define COLLATE 309 +#define COLUMN 310 +#define COMMENT 311 +#define COMMIT 312 +#define COMMITTED 313 +#define CONCURRENTLY 314 +#define CONFIGURATION 315 +#define CONNECTION 316 +#define CONSTRAINT 317 +#define CONSTRAINTS 318 +#define CONTENT_P 319 +#define CONTINUE_P 320 +#define CONVERSION_P 321 +#define COPY 322 +#define COST 323 +#define CREATE 324 +#define CREATEDB 325 +#define CREATEROLE 326 +#define CREATEUSER 327 +#define CROSS 328 +#define CSV 329 +#define CURRENT_P 330 +#define CURRENT_CATALOG 331 +#define CURRENT_DATE 332 +#define CURRENT_ROLE 333 +#define CURRENT_SCHEMA 334 +#define CURRENT_TIME 335 +#define CURRENT_TIMESTAMP 336 +#define CURRENT_USER 337 +#define CURSOR 338 +#define CYCLE 339 +#define DATA_P 340 +#define DATABASE 341 +#define DAY_P 342 +#define DEALLOCATE 343 +#define DEC 344 +#define DECIMAL_P 345 +#define DECLARE 346 +#define DEFAULT 347 +#define DEFAULTS 348 +#define DEFERRABLE 349 +#define DEFERRED 350 +#define DEFINER 351 +#define DELETE_P 352 +#define DELIMITER 353 +#define DELIMITERS 354 +#define DESC 355 +#define DICTIONARY 356 +#define DISABLE_P 357 +#define DISCARD 358 +#define DISTINCT 359 +#define DO 360 +#define DOCUMENT_P 361 +#define DOMAIN_P 362 +#define DOUBLE_P 363 +#define DROP 364 +#define EACH 365 +#define ELSE 366 +#define ENABLE_P 367 +#define ENCODING 368 +#define ENCRYPTED 369 +#define END_P 370 +#define ENUM_P 371 +#define ESCAPE 372 +#define EXCEPT 373 +#define EXCLUDING 374 +#define EXCLUSIVE 375 +#define EXECUTE 376 +#define EXISTS 377 +#define EXPLAIN 378 +#define EXTERNAL 379 +#define EXTRACT 380 +#define FALSE_P 381 +#define FAMILY 382 +#define FETCH 383 +#define FIRST_P 384 +#define FLOAT_P 385 +#define FOLLOWING 386 +#define FOR 387 +#define FORCE 388 +#define FOREIGN 389 +#define FORWARD 390 +#define FREEZE 391 +#define FROM 392 +#define FULL 393 +#define FUNCTION 394 +#define GLOBAL 395 +#define GRANT 396 +#define GRANTED 397 +#define GREATEST 398 +#define GROUP_P 399 +#define HANDLER 400 +#define HAVING 401 +#define HEADER_P 402 +#define HOLD 403 +#define HOUR_P 404 +#define IDENTITY_P 405 +#define IF_P 406 +#define ILIKE 407 +#define IMMEDIATE 408 +#define IMMUTABLE 409 +#define IMPLICIT_P 410 +#define IN_P 411 +#define INCLUDING 412 +#define INCREMENT 413 +#define INDEX 414 +#define INDEXES 415 +#define INHERIT 416 +#define INHERITS 417 +#define INITIALLY 418 +#define INNER_P 419 +#define INOUT 420 +#define INPUT_P 421 +#define INSENSITIVE 422 +#define INSERT 423 +#define INSTEAD 424 +#define INT_P 425 +#define INTEGER 426 +#define INTERSECT 427 +#define INTERVAL 428 +#define INTO 429 +#define INVOKER 430 +#define IS 431 +#define ISNULL 432 +#define ISOLATION 433 +#define JOIN 434 +#define KEY 435 +#define LANCOMPILER 436 +#define LANGUAGE 437 +#define LARGE_P 438 +#define LAST_P 439 +#define LC_COLLATE_P 440 +#define LC_CTYPE_P 441 +#define LEADING 442 +#define LEAST 443 +#define LEFT 444 +#define LEVEL 445 +#define LIKE 446 +#define LIMIT 447 +#define LISTEN 448 +#define LOAD 449 +#define LOCAL 450 +#define LOCALTIME 451 +#define LOCALTIMESTAMP 452 +#define LOCATION 453 +#define LOCK_P 454 +#define LOGIN_P 455 +#define MAPPING 456 +#define MATCH 457 +#define MAXVALUE 458 +#define MINUTE_P 459 +#define MINVALUE 460 +#define MODE 461 +#define MONTH_P 462 +#define MOVE 463 +#define NAME_P 464 +#define NAMES 465 +#define NATIONAL 466 +#define NATURAL 467 +#define NCHAR 468 +#define NEW 469 +#define NEXT 470 +#define NO 471 +#define NOCREATEDB 472 +#define NOCREATEROLE 473 +#define NOCREATEUSER 474 +#define NOINHERIT 475 +#define NOLOGIN_P 476 +#define NONE 477 +#define NOSUPERUSER 478 +#define NOT 479 +#define NOTHING 480 +#define NOTIFY 481 +#define NOTNULL 482 +#define NOWAIT 483 +#define NULL_P 484 +#define NULLIF 485 +#define NULLS_P 486 +#define NUMERIC 487 +#define OBJECT_P 488 +#define OF 489 +#define OFF 490 +#define OFFSET 491 +#define OIDS 492 +#define OLD 493 +#define ON 494 +#define ONLY 495 +#define OPERATOR 496 +#define OPTION 497 +#define OPTIONS 498 +#define OR 499 +#define ORDER 500 +#define OUT_P 501 +#define OUTER_P 502 +#define OVER 503 +#define OVERLAPS 504 +#define OVERLAY 505 +#define OWNED 506 +#define OWNER 507 +#define PARSER 508 +#define PARTIAL 509 +#define PARTITION 510 +#define PASSWORD 511 +#define PLACING 512 +#define PLANS 513 +#define POSITION 514 +#define PRECEDING 515 +#define PRECISION 516 +#define PRESERVE 517 +#define PREPARE 518 +#define PREPARED 519 +#define PRIMARY 520 +#define PRIOR 521 +#define PRIVILEGES 522 +#define PROCEDURAL 523 +#define PROCEDURE 524 +#define QUOTE 525 +#define RANGE 526 +#define READ 527 +#define REAL 528 +#define REASSIGN 529 +#define RECHECK 530 +#define RECURSIVE 531 +#define REFERENCES 532 +#define REINDEX 533 +#define RELATIVE_P 534 +#define RELEASE 535 +#define RENAME 536 +#define REPEATABLE 537 +#define REPLACE 538 +#define REPLICA 539 +#define RESET 540 +#define RESTART 541 +#define RESTRICT 542 +#define RETURNING 543 +#define RETURNS 544 +#define REVOKE 545 +#define RIGHT 546 +#define ROLE 547 +#define ROLLBACK 548 +#define ROW 549 +#define ROWS 550 +#define RULE 551 +#define SAVEPOINT 552 +#define SCHEMA 553 +#define SCROLL 554 +#define SEARCH 555 +#define SECOND_P 556 +#define SECURITY 557 +#define SELECT 558 +#define SEQUENCE 559 +#define SERIALIZABLE 560 +#define SERVER 561 +#define SESSION 562 +#define SESSION_USER 563 +#define SET 564 +#define SETOF 565 +#define SHARE 566 +#define SHOW 567 +#define SIMILAR 568 +#define SIMPLE 569 +#define SMALLINT 570 +#define SOME 571 +#define STABLE 572 +#define STANDALONE_P 573 +#define START 574 +#define STATEMENT 575 +#define STATISTICS 576 +#define STDIN 577 +#define STDOUT 578 +#define STORAGE 579 +#define STRICT_P 580 +#define STRIP_P 581 +#define SUBSTRING 582 +#define SUPERUSER_P 583 +#define SYMMETRIC 584 +#define SYSID 585 +#define SYSTEM_P 586 +#define TABLE 587 +#define TABLESPACE 588 +#define TEMP 589 +#define TEMPLATE 590 +#define TEMPORARY 591 +#define TEXT_P 592 +#define THEN 593 +#define TIME 594 +#define TIMESTAMP 595 +#define TO 596 +#define TRAILING 597 +#define TRANSACTION 598 +#define TREAT 599 +#define TRIGGER 600 +#define TRIM 601 +#define TRUE_P 602 +#define TRUNCATE 603 +#define TRUSTED 604 +#define TYPE_P 605 +#define UNBOUNDED 606 +#define UNCOMMITTED 607 +#define UNENCRYPTED 608 +#define UNION 609 +#define UNIQUE 610 +#define UNKNOWN 611 +#define UNLISTEN 612 +#define UNTIL 613 +#define UPDATE 614 +#define USER 615 +#define USING 616 +#define VACUUM 617 +#define VALID 618 +#define VALIDATOR 619 +#define VALUE_P 620 +#define VALUES 621 +#define VARCHAR 622 +#define VARIADIC 623 +#define VARYING 624 +#define VERBOSE 625 +#define VERSION_P 626 +#define VIEW 627 +#define VOLATILE 628 +#define WHEN 629 +#define WHERE 630 +#define WHITESPACE_P 631 +#define WINDOW 632 +#define WITH 633 +#define WITHOUT 634 +#define WORK 635 +#define WRAPPER 636 +#define WRITE 637 +#define XML_P 638 +#define XMLATTRIBUTES 639 +#define XMLCONCAT 640 +#define XMLELEMENT 641 +#define XMLFOREST 642 +#define XMLPARSE 643 +#define XMLPI 644 +#define XMLROOT 645 +#define XMLSERIALIZE 646 +#define YEAR_P 647 +#define YES_P 648 +#define ZONE 649 +#define NULLS_FIRST 650 +#define NULLS_LAST 651 +#define WITH_TIME 652 +#define IDENT 653 +#define FCONST 654 +#define SCONST 655 +#define BCONST 656 +#define XCONST 657 +#define Op 658 +#define ICONST 659 +#define PARAM 660 +#define POSTFIXOP 661 +#define UMINUS 662 +#define TYPECAST 663 @@ -857,13 +893,13 @@ * gram.y * POSTGRES SQL YACC rules/actions * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.603 2007/09/24 01:29:28 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.662 2009/04/06 08:42:52 heikki Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -959,6 +995,13 @@ extern TypeName *SystemTypeName(char *name); extern List *SystemFuncName(char *name); extern void yyerror(const char *s); +/* Private struct for the result of privilege_target production */ +typedef struct PrivTarget +{ + GrantObjectType objtype; + List *objs; +} PrivTarget; + /* * If you need access to certain yacc-generated variables and find that * they're static by default, uncomment the next line. (this is not a @@ -966,30 +1009,38 @@ extern void yyerror(const char *s); */ /*#define __YYSCLASS*/ -static Node *makeColumnRef(char *relname, List *indirection, int location); -static Node *makeTypeCast(Node *arg, TypeName *typename); -static Node *makeStringConst(char *str, TypeName *typename); -static Node *makeIntConst(int val); -static Node *makeFloatConst(char *str); -static Node *makeAConst(Value *v); -static A_Const *makeBoolAConst(bool state); +static Node *makeColumnRef(char *colname, List *indirection, int location); +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 FuncCall *makeOverlaps(List *largs, List *rargs, int location); static void check_qualified_name(List *names); static List *check_func_name(List *names); +static List *check_indirection(List *indirection); static List *extractArgTypes(List *parameters); static SelectStmt *findLeftmostSelect(SelectStmt *node); static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, - Node *limitOffset, Node *limitCount); + Node *limitOffset, Node *limitCount, + WithClause *withClause); static Node *makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg); static Node *doNegate(Node *n, int location); static void doNegateFloat(Value *v); -static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args); +static Node *makeAArrayExpr(List *elements, int location); +static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, + List *args, int location); +static List *mergeTableFuncParameters(List *func_args, List *columns); +static TypeName *TableFuncTypeName(List *columns); static DefElem *defWithOids(bool value); - /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -1009,7 +1060,7 @@ static DefElem *defWithOids(bool value); #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 146 "gram.y" +#line 162 "gram.y" typedef union YYSTYPE { int ival; char chr; @@ -1030,20 +1081,23 @@ typedef union YYSTYPE { FuncWithArgs *funwithargs; DefElem *defelt; SortBy *sortby; + WindowDef *windef; JoinExpr *jexpr; IndexElem *ielem; Alias *alias; RangeVar *range; IntoClause *into; + WithClause *with; A_Indices *aind; ResTarget *target; - PrivTarget *privtarget; + struct PrivTarget *privtarget; + AccessPriv *accesspriv; InsertStmt *istmt; VariableSetStmt *vsetstmt; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 1047 "gram.c" +#line 1101 "gram.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -1067,7 +1121,7 @@ typedef struct YYLTYPE /* Line 219 of yacc.c. */ -#line 1071 "gram.c" +#line 1125 "gram.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1218,22 +1272,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 621 +#define YYFINAL 660 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 48561 +#define YYLAST 56094 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 408 +#define YYNTOKENS 426 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 427 +#define YYNNTS 477 /* YYNRULES -- Number of rules. */ -#define YYNRULES 1812 +#define YYNRULES 1985 /* YYNRULES -- Number of states. */ -#define YYNSTATES 3287 +#define YYNSTATES 3618 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 645 +#define YYMAXUTOK 663 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1244,13 +1298,13 @@ static const unsigned short int 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, 396, 2, 2, - 401, 402, 394, 392, 406, 393, 404, 395, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 407, 405, - 389, 388, 390, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 414, 2, 2, + 419, 420, 412, 410, 424, 411, 422, 413, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 425, 423, + 407, 406, 408, 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, 399, 2, 400, 397, 2, 2, 2, 2, 2, + 2, 417, 2, 418, 415, 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, @@ -1305,7 +1359,9 @@ static const unsigned short int yytranslate[] = 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, 391, 398, 403 + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 409, 416, 421 }; #if YYDEBUG @@ -1322,964 +1378,1062 @@ static const unsigned short int yyprhs[] = 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, 194, 200, 202, - 203, 206, 207, 210, 213, 217, 221, 223, 225, 227, - 229, 231, 233, 235, 237, 239, 241, 243, 245, 249, - 253, 256, 259, 262, 265, 269, 273, 279, 285, 290, - 296, 301, 305, 311, 315, 321, 327, 334, 336, 338, - 342, 348, 355, 360, 362, 363, 366, 367, 369, 371, - 373, 375, 377, 379, 382, 386, 390, 394, 398, 402, - 406, 410, 414, 417, 423, 426, 429, 433, 437, 441, - 443, 447, 449, 453, 455, 457, 459, 462, 465, 468, - 470, 472, 474, 476, 478, 480, 482, 486, 493, 495, - 497, 499, 501, 503, 504, 506, 508, 511, 515, 520, - 524, 527, 530, 532, 535, 539, 544, 548, 551, 556, - 558, 560, 562, 564, 566, 569, 572, 575, 578, 583, - 588, 590, 594, 598, 603, 610, 617, 624, 631, 636, - 643, 646, 651, 655, 659, 663, 667, 672, 677, 681, - 685, 689, 693, 697, 701, 706, 711, 715, 718, 722, - 724, 726, 730, 734, 738, 741, 744, 748, 751, 753, - 755, 756, 759, 760, 763, 766, 777, 784, 786, 788, - 790, 792, 794, 797, 798, 800, 802, 806, 810, 812, - 814, 818, 822, 826, 831, 833, 834, 837, 838, 842, - 843, 845, 846, 858, 871, 873, 875, 878, 881, 884, - 887, 888, 890, 891, 893, 897, 899, 901, 903, 907, - 910, 911, 915, 917, 919, 922, 924, 928, 933, 938, - 941, 947, 949, 952, 955, 958, 962, 965, 966, 969, - 972, 975, 978, 981, 984, 988, 990, 995, 1002, 1010, - 1022, 1026, 1027, 1029, 1033, 1035, 1038, 1041, 1044, 1045, - 1047, 1049, 1052, 1055, 1056, 1060, 1064, 1067, 1069, 1071, - 1074, 1077, 1082, 1083, 1086, 1089, 1092, 1093, 1097, 1102, - 1107, 1108, 1111, 1112, 1117, 1118, 1125, 1131, 1135, 1136, - 1138, 1142, 1144, 1150, 1155, 1158, 1159, 1162, 1164, 1167, - 1171, 1174, 1177, 1180, 1183, 1187, 1191, 1195, 1197, 1198, - 1200, 1202, 1204, 1207, 1209, 1215, 1225, 1227, 1228, 1230, - 1233, 1236, 1237, 1240, 1241, 1247, 1255, 1257, 1258, 1265, - 1268, 1269, 1273, 1279, 1294, 1314, 1316, 1318, 1320, 1324, - 1330, 1332, 1334, 1336, 1340, 1341, 1343, 1344, 1346, 1348, - 1350, 1354, 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1370, - 1371, 1373, 1376, 1378, 1381, 1382, 1385, 1387, 1390, 1393, - 1400, 1409, 1418, 1423, 1429, 1434, 1439, 1444, 1448, 1456, - 1465, 1472, 1479, 1486, 1493, 1497, 1499, 1503, 1507, 1509, - 1511, 1513, 1515, 1517, 1519, 1523, 1527, 1531, 1533, 1537, - 1541, 1543, 1547, 1561, 1563, 1567, 1572, 1580, 1585, 1593, - 1596, 1598, 1599, 1602, 1603, 1605, 1606, 1613, 1622, 1631, - 1633, 1637, 1643, 1649, 1657, 1667, 1675, 1685, 1691, 1698, - 1705, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, - 1730, 1734, 1738, 1742, 1744, 1748, 1750, 1753, 1756, 1760, - 1765, 1772, 1780, 1788, 1798, 1807, 1816, 1823, 1832, 1842, - 1852, 1860, 1871, 1879, 1888, 1897, 1906, 1915, 1917, 1919, - 1921, 1923, 1925, 1927, 1929, 1931, 1933, 1935, 1937, 1939, - 1941, 1943, 1948, 1951, 1956, 1959, 1960, 1962, 1964, 1966, - 1968, 1971, 1974, 1976, 1978, 1980, 1983, 1986, 1988, 1991, - 1994, 1996, 1998, 2006, 2014, 2025, 2027, 2029, 2032, 2034, - 2038, 2040, 2042, 2044, 2046, 2048, 2051, 2054, 2057, 2060, - 2063, 2066, 2069, 2071, 2075, 2077, 2080, 2084, 2085, 2087, - 2091, 2094, 2101, 2108, 2118, 2122, 2123, 2127, 2128, 2142, - 2157, 2159, 2160, 2163, 2164, 2166, 2170, 2175, 2180, 2187, - 2189, 2192, 2193, 2195, 2197, 2198, 2200, 2202, 2203, 2213, - 2221, 2224, 2225, 2229, 2232, 2234, 2238, 2242, 2246, 2249, - 2252, 2254, 2256, 2258, 2260, 2263, 2265, 2267, 2269, 2274, - 2280, 2282, 2285, 2290, 2296, 2298, 2300, 2302, 2304, 2308, - 2312, 2315, 2318, 2321, 2324, 2326, 2329, 2332, 2334, 2336, - 2340, 2343, 2344, 2350, 2352, 2355, 2357, 2358, 2364, 2372, - 2378, 2386, 2394, 2404, 2406, 2410, 2414, 2418, 2420, 2424, - 2436, 2447, 2450, 2453, 2454, 2464, 2467, 2468, 2473, 2478, - 2483, 2485, 2487, 2489, 2490, 2498, 2505, 2512, 2519, 2526, - 2534, 2544, 2554, 2561, 2568, 2575, 2582, 2589, 2598, 2607, - 2614, 2621, 2628, 2637, 2646, 2655, 2664, 2666, 2667, 2675, - 2682, 2689, 2696, 2703, 2710, 2718, 2725, 2732, 2739, 2746, - 2754, 2764, 2774, 2784, 2791, 2798, 2805, 2814, 2823, 2824, - 2839, 2841, 2843, 2847, 2851, 2853, 2855, 2857, 2859, 2861, - 2863, 2865, 2866, 2868, 2870, 2872, 2874, 2876, 2878, 2879, - 2886, 2895, 2898, 2901, 2904, 2907, 2910, 2914, 2918, 2921, - 2924, 2927, 2930, 2934, 2937, 2943, 2948, 2952, 2956, 2960, - 2962, 2964, 2965, 2969, 2972, 2975, 2977, 2981, 2984, 2986, - 2987, 2996, 3007, 3010, 3014, 3018, 3019, 3022, 3028, 3031, - 3032, 3036, 3040, 3044, 3048, 3052, 3056, 3060, 3064, 3068, - 3073, 3077, 3081, 3083, 3084, 3090, 3095, 3098, 3099, 3104, - 3108, 3114, 3121, 3126, 3133, 3140, 3146, 3154, 3156, 3157, - 3164, 3176, 3188, 3200, 3214, 3224, 3236, 3247, 3251, 3253, - 3258, 3261, 3262, 3267, 3273, 3279, 3282, 3287, 3289, 3291, - 3293, 3294, 3296, 3297, 3299, 3300, 3304, 3305, 3310, 3312, - 3314, 3316, 3318, 3320, 3322, 3324, 3325, 3331, 3335, 3336, - 3338, 3340, 3342, 3344, 3348, 3357, 3361, 3362, 3365, 3369, - 3372, 3376, 3382, 3384, 3389, 3392, 3394, 3398, 3401, 3404, - 3405, 3412, 3415, 3416, 3422, 3426, 3427, 3430, 3433, 3436, - 3440, 3442, 3446, 3448, 3451, 3453, 3454, 3462, 3464, 3468, - 3470, 3472, 3476, 3482, 3485, 3487, 3491, 3499, 3500, 3504, - 3507, 3510, 3513, 3514, 3517, 3520, 3522, 3524, 3528, 3532, - 3534, 3537, 3542, 3547, 3549, 3551, 3560, 3562, 3567, 3572, - 3577, 3580, 3581, 3585, 3589, 3594, 3599, 3604, 3609, 3612, - 3614, 3616, 3617, 3619, 3621, 3622, 3624, 3630, 3632, 3633, - 3635, 3636, 3640, 3642, 3646, 3651, 3655, 3660, 3665, 3668, - 3671, 3676, 3678, 3679, 3681, 3683, 3685, 3689, 3690, 3693, - 3694, 3696, 3700, 3702, 3703, 3705, 3708, 3713, 3718, 3721, - 3722, 3725, 3729, 3732, 3733, 3735, 3739, 3741, 3744, 3746, - 3749, 3755, 3762, 3768, 3770, 3773, 3775, 3780, 3784, 3789, - 3795, 3800, 3806, 3811, 3817, 3820, 3825, 3827, 3830, 3833, - 3836, 3838, 3840, 3841, 3846, 3849, 3851, 3854, 3857, 3862, - 3864, 3867, 3871, 3873, 3876, 3877, 3880, 3885, 3890, 3891, - 3893, 3897, 3900, 3903, 3907, 3913, 3920, 3924, 3929, 3930, - 3932, 3934, 3936, 3938, 3940, 3943, 3949, 3951, 3953, 3955, - 3957, 3960, 3964, 3968, 3969, 3971, 3973, 3975, 3977, 3979, - 3982, 3985, 3988, 3991, 3994, 3996, 4000, 4001, 4003, 4005, - 4007, 4009, 4015, 4018, 4020, 4022, 4024, 4026, 4032, 4035, - 4038, 4041, 4043, 4047, 4051, 4054, 4056, 4057, 4061, 4062, - 4068, 4071, 4077, 4080, 4082, 4086, 4090, 4091, 4093, 4095, - 4097, 4099, 4101, 4103, 4107, 4111, 4115, 4119, 4123, 4127, - 4131, 4132, 4134, 4138, 4144, 4147, 4150, 4154, 4158, 4162, - 4166, 4170, 4174, 4178, 4182, 4186, 4190, 4193, 4196, 4200, - 4204, 4207, 4211, 4217, 4222, 4229, 4233, 4239, 4244, 4251, - 4256, 4263, 4269, 4277, 4281, 4284, 4289, 4292, 4296, 4300, - 4305, 4309, 4314, 4318, 4323, 4329, 4336, 4343, 4351, 4358, - 4366, 4373, 4381, 4385, 4390, 4395, 4402, 4405, 4409, 4414, - 4416, 4420, 4423, 4426, 4430, 4434, 4438, 4442, 4446, 4450, - 4454, 4458, 4462, 4466, 4469, 4472, 4478, 4485, 4492, 4500, - 4504, 4509, 4511, 4513, 4516, 4521, 4523, 4525, 4527, 4530, - 4533, 4536, 4538, 4542, 4547, 4553, 4559, 4564, 4566, 4568, - 4573, 4575, 4580, 4582, 4587, 4589, 4594, 4596, 4598, 4600, - 4602, 4609, 4614, 4619, 4624, 4629, 4636, 4642, 4648, 4654, - 4659, 4666, 4671, 4676, 4681, 4686, 4692, 4700, 4708, 4718, - 4723, 4730, 4736, 4744, 4752, 4760, 4763, 4767, 4771, 4775, - 4780, 4781, 4786, 4788, 4792, 4796, 4798, 4800, 4802, 4805, - 4808, 4809, 4814, 4818, 4824, 4826, 4828, 4830, 4832, 4834, - 4836, 4838, 4840, 4842, 4844, 4846, 4848, 4850, 4852, 4854, - 4859, 4861, 4866, 4868, 4873, 4875, 4878, 4880, 4883, 4885, - 4889, 4893, 4894, 4896, 4900, 4902, 4906, 4910, 4914, 4916, - 4918, 4920, 4922, 4924, 4926, 4928, 4930, 4935, 4939, 4942, - 4946, 4947, 4951, 4955, 4958, 4961, 4963, 4964, 4967, 4970, - 4974, 4977, 4979, 4981, 4985, 4991, 4993, 4996, 5001, 5004, - 5005, 5007, 5008, 5010, 5013, 5016, 5019, 5023, 5029, 5031, - 5034, 5035, 5038, 5040, 5041, 5043, 5045, 5047, 5051, 5055, - 5057, 5061, 5065, 5067, 5069, 5071, 5073, 5075, 5079, 5081, - 5084, 5086, 5090, 5092, 5094, 5096, 5098, 5100, 5102, 5104, - 5107, 5109, 5111, 5113, 5115, 5117, 5120, 5126, 5129, 5133, - 5140, 5142, 5144, 5146, 5148, 5150, 5152, 5154, 5157, 5159, - 5161, 5163, 5165, 5167, 5169, 5171, 5173, 5175, 5177, 5179, - 5181, 5183, 5185, 5187, 5189, 5191, 5193, 5195, 5197, 5199, - 5201, 5203, 5205, 5207, 5209, 5211, 5213, 5215, 5217, 5219, - 5221, 5223, 5225, 5227, 5229, 5231, 5233, 5235, 5237, 5239, - 5241, 5243, 5245, 5247, 5249, 5251, 5253, 5255, 5257, 5259, - 5261, 5263, 5265, 5267, 5269, 5271, 5273, 5275, 5277, 5279, - 5281, 5283, 5285, 5287, 5289, 5291, 5293, 5295, 5297, 5299, - 5301, 5303, 5305, 5307, 5309, 5311, 5313, 5315, 5317, 5319, - 5321, 5323, 5325, 5327, 5329, 5331, 5333, 5335, 5337, 5339, - 5341, 5343, 5345, 5347, 5349, 5351, 5353, 5355, 5357, 5359, - 5361, 5363, 5365, 5367, 5369, 5371, 5373, 5375, 5377, 5379, - 5381, 5383, 5385, 5387, 5389, 5391, 5393, 5395, 5397, 5399, - 5401, 5403, 5405, 5407, 5409, 5411, 5413, 5415, 5417, 5419, - 5421, 5423, 5425, 5427, 5429, 5431, 5433, 5435, 5437, 5439, - 5441, 5443, 5445, 5447, 5449, 5451, 5453, 5455, 5457, 5459, - 5461, 5463, 5465, 5467, 5469, 5471, 5473, 5475, 5477, 5479, - 5481, 5483, 5485, 5487, 5489, 5491, 5493, 5495, 5497, 5499, - 5501, 5503, 5505, 5507, 5509, 5511, 5513, 5515, 5517, 5519, - 5521, 5523, 5525, 5527, 5529, 5531, 5533, 5535, 5537, 5539, - 5541, 5543, 5545, 5547, 5549, 5551, 5553, 5555, 5557, 5559, - 5561, 5563, 5565, 5567, 5569, 5571, 5573, 5575, 5577, 5579, - 5581, 5583, 5585, 5587, 5589, 5591, 5593, 5595, 5597, 5599, - 5601, 5603, 5605, 5607, 5609, 5611, 5613, 5615, 5617, 5619, - 5621, 5623, 5625, 5627, 5629, 5631, 5633, 5635, 5637, 5639, - 5641, 5643, 5645, 5647, 5649, 5651, 5653, 5655, 5657, 5659, - 5661, 5663, 5665, 5667, 5669, 5671, 5673, 5675, 5677, 5679, - 5681, 5683, 5685, 5687, 5689, 5691, 5693, 5695, 5697, 5699, - 5701, 5703, 5705, 5707, 5709, 5711, 5713, 5715, 5717, 5719, - 5721, 5723, 5725, 5727, 5729, 5731, 5733, 5735, 5737, 5739, - 5741, 5743, 5745, 5747, 5749, 5751, 5753, 5755, 5757, 5759, - 5761, 5763, 5765, 5767, 5769, 5771, 5773, 5775, 5777, 5779, - 5781, 5783, 5785, 5787, 5789, 5791, 5793, 5795, 5797, 5799, - 5801, 5803, 5805, 5807, 5809, 5811, 5813, 5815, 5817, 5819, - 5821, 5823, 5825, 5827, 5829, 5831, 5833, 5835, 5837, 5839, - 5841, 5843, 5845, 5847, 5849, 5851, 5853, 5855, 5857, 5859, - 5861, 5863, 5865, 5867, 5869, 5871, 5873, 5875, 5877, 5879, - 5881, 5883, 5885, 5887, 5889, 5891, 5893, 5895, 5897, 5899, - 5901, 5903, 5905, 5907, 5909, 5911, 5913, 5915, 5917, 5919, - 5921, 5923, 5925 + 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, + 201, 203, 205, 207, 209, 211, 212, 218, 220, 221, + 224, 225, 228, 231, 235, 239, 241, 243, 245, 247, + 249, 251, 253, 255, 257, 259, 261, 263, 267, 271, + 274, 277, 280, 283, 287, 291, 297, 303, 308, 314, + 319, 323, 329, 333, 339, 345, 352, 354, 356, 360, + 366, 373, 378, 380, 381, 384, 385, 387, 389, 391, + 393, 395, 397, 400, 404, 408, 412, 416, 420, 424, + 428, 432, 435, 441, 444, 447, 450, 453, 457, 461, + 465, 467, 471, 473, 477, 479, 481, 483, 486, 489, + 492, 494, 496, 498, 500, 502, 504, 506, 510, 517, + 519, 521, 523, 525, 527, 528, 530, 532, 535, 539, + 544, 548, 551, 554, 556, 559, 563, 568, 572, 575, + 580, 582, 584, 586, 588, 590, 593, 596, 599, 602, + 607, 612, 617, 622, 624, 628, 632, 637, 644, 651, + 658, 665, 670, 678, 681, 686, 690, 694, 698, 702, + 706, 711, 716, 720, 724, 728, 732, 736, 740, 745, + 750, 754, 757, 761, 765, 769, 772, 775, 779, 782, + 784, 786, 787, 790, 791, 795, 798, 799, 801, 805, + 809, 811, 817, 821, 824, 827, 838, 845, 847, 849, + 851, 853, 855, 858, 859, 861, 863, 867, 871, 873, + 875, 879, 883, 887, 892, 894, 895, 898, 899, 903, + 904, 906, 907, 919, 932, 934, 936, 939, 942, 945, + 948, 949, 951, 952, 954, 958, 960, 962, 964, 968, + 971, 972, 976, 978, 980, 983, 985, 989, 994, 999, + 1002, 1008, 1010, 1013, 1016, 1019, 1023, 1026, 1027, 1030, + 1033, 1036, 1039, 1042, 1045, 1049, 1051, 1056, 1063, 1071, + 1083, 1087, 1088, 1090, 1094, 1096, 1099, 1102, 1105, 1106, + 1108, 1110, 1113, 1116, 1117, 1121, 1125, 1128, 1130, 1132, + 1135, 1138, 1143, 1144, 1147, 1150, 1153, 1154, 1158, 1163, + 1168, 1169, 1172, 1173, 1178, 1179, 1187, 1193, 1197, 1198, + 1200, 1204, 1206, 1209, 1213, 1214, 1220, 1225, 1227, 1228, + 1230, 1233, 1236, 1238, 1241, 1245, 1248, 1251, 1254, 1257, + 1261, 1265, 1267, 1271, 1273, 1274, 1276, 1279, 1281, 1287, + 1297, 1299, 1300, 1302, 1305, 1308, 1311, 1313, 1314, 1317, + 1318, 1324, 1332, 1334, 1335, 1342, 1345, 1346, 1350, 1356, + 1364, 1371, 1380, 1388, 1395, 1402, 1407, 1408, 1410, 1414, + 1419, 1421, 1425, 1427, 1430, 1433, 1436, 1439, 1441, 1443, + 1454, 1457, 1458, 1461, 1464, 1466, 1467, 1472, 1479, 1485, + 1490, 1495, 1504, 1506, 1508, 1510, 1518, 1528, 1537, 1552, + 1572, 1574, 1576, 1578, 1582, 1584, 1586, 1588, 1590, 1594, + 1595, 1597, 1598, 1600, 1602, 1604, 1608, 1609, 1611, 1613, + 1615, 1617, 1619, 1621, 1624, 1625, 1627, 1630, 1632, 1635, + 1636, 1639, 1641, 1644, 1647, 1654, 1663, 1672, 1677, 1683, + 1688, 1693, 1698, 1702, 1710, 1719, 1726, 1733, 1740, 1747, + 1751, 1753, 1757, 1761, 1763, 1765, 1767, 1769, 1771, 1773, + 1777, 1781, 1785, 1787, 1791, 1795, 1797, 1801, 1815, 1817, + 1821, 1826, 1832, 1837, 1845, 1848, 1850, 1851, 1854, 1855, + 1857, 1858, 1865, 1874, 1883, 1885, 1889, 1895, 1901, 1909, + 1919, 1927, 1937, 1943, 1950, 1957, 1962, 1964, 1966, 1968, + 1970, 1972, 1974, 1976, 1978, 1982, 1986, 1990, 1994, 1996, + 2000, 2002, 2005, 2008, 2012, 2018, 2021, 2024, 2025, 2032, + 2040, 2048, 2056, 2065, 2074, 2081, 2090, 2100, 2110, 2118, + 2129, 2137, 2146, 2155, 2164, 2173, 2175, 2177, 2179, 2181, + 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, + 2206, 2209, 2214, 2217, 2218, 2220, 2222, 2224, 2226, 2229, + 2232, 2234, 2236, 2238, 2241, 2244, 2246, 2249, 2252, 2254, + 2256, 2264, 2272, 2283, 2285, 2287, 2290, 2295, 2301, 2303, + 2307, 2310, 2313, 2316, 2319, 2321, 2324, 2327, 2332, 2336, + 2339, 2342, 2345, 2348, 2351, 2353, 2357, 2359, 2362, 2366, + 2367, 2369, 2373, 2376, 2383, 2390, 2400, 2404, 2405, 2409, + 2410, 2424, 2439, 2441, 2442, 2445, 2446, 2448, 2452, 2457, + 2462, 2469, 2471, 2474, 2475, 2477, 2479, 2480, 2482, 2484, + 2485, 2495, 2508, 2516, 2519, 2520, 2524, 2527, 2529, 2533, + 2537, 2540, 2542, 2546, 2550, 2554, 2557, 2560, 2562, 2564, + 2566, 2568, 2571, 2573, 2575, 2577, 2579, 2584, 2590, 2592, + 2596, 2600, 2602, 2605, 2610, 2616, 2618, 2620, 2622, 2624, + 2628, 2632, 2635, 2638, 2641, 2644, 2646, 2649, 2652, 2654, + 2656, 2658, 2662, 2665, 2666, 2669, 2671, 2675, 2681, 2683, + 2686, 2688, 2689, 2695, 2703, 2709, 2717, 2723, 2731, 2735, + 2741, 2747, 2753, 2755, 2759, 2771, 2782, 2793, 2796, 2799, + 2800, 2810, 2813, 2814, 2819, 2824, 2829, 2831, 2833, 2835, + 2836, 2844, 2851, 2858, 2865, 2872, 2880, 2890, 2900, 2907, + 2914, 2921, 2928, 2935, 2944, 2953, 2960, 2967, 2974, 2983, + 2992, 3001, 3010, 3017, 3019, 3020, 3023, 3024, 3032, 3039, + 3046, 3053, 3060, 3067, 3074, 3082, 3089, 3096, 3103, 3110, + 3118, 3126, 3136, 3146, 3153, 3160, 3167, 3176, 3185, 3194, + 3201, 3202, 3217, 3219, 3221, 3225, 3229, 3231, 3233, 3235, + 3237, 3239, 3241, 3243, 3244, 3246, 3248, 3250, 3252, 3254, + 3256, 3257, 3264, 3273, 3276, 3279, 3282, 3285, 3288, 3292, + 3296, 3299, 3302, 3305, 3308, 3312, 3315, 3321, 3326, 3330, + 3334, 3338, 3340, 3342, 3343, 3347, 3350, 3353, 3355, 3359, + 3362, 3364, 3365, 3374, 3385, 3389, 3394, 3399, 3400, 3403, + 3409, 3412, 3413, 3417, 3421, 3425, 3429, 3433, 3437, 3441, + 3445, 3449, 3453, 3457, 3461, 3465, 3470, 3474, 3478, 3480, + 3481, 3487, 3494, 3499, 3502, 3503, 3508, 3512, 3518, 3525, + 3530, 3537, 3544, 3550, 3558, 3560, 3561, 3568, 3580, 3592, + 3604, 3618, 3628, 3640, 3651, 3656, 3659, 3665, 3668, 3669, + 3674, 3680, 3686, 3689, 3694, 3696, 3698, 3700, 3701, 3703, + 3704, 3706, 3707, 3711, 3712, 3717, 3719, 3721, 3723, 3725, + 3727, 3729, 3731, 3733, 3734, 3740, 3744, 3745, 3747, 3749, + 3751, 3753, 3757, 3766, 3770, 3771, 3774, 3778, 3781, 3785, + 3791, 3793, 3798, 3801, 3803, 3807, 3810, 3813, 3814, 3821, + 3824, 3825, 3831, 3835, 3836, 3839, 3842, 3845, 3849, 3851, + 3855, 3857, 3860, 3862, 3863, 3871, 3873, 3877, 3879, 3881, + 3885, 3891, 3894, 3896, 3900, 3908, 3909, 3913, 3916, 3919, + 3922, 3923, 3926, 3929, 3931, 3933, 3937, 3941, 3943, 3946, + 3951, 3956, 3959, 3963, 3969, 3975, 3977, 3979, 3989, 3991, + 3994, 3999, 4004, 4009, 4012, 4016, 4018, 4022, 4027, 4030, + 4031, 4035, 4039, 4044, 4049, 4054, 4059, 4062, 4064, 4066, + 4067, 4069, 4071, 4072, 4074, 4080, 4082, 4083, 4085, 4086, + 4090, 4092, 4096, 4101, 4105, 4110, 4115, 4118, 4121, 4126, + 4130, 4136, 4145, 4147, 4148, 4150, 4152, 4154, 4158, 4159, + 4161, 4163, 4165, 4167, 4169, 4171, 4175, 4176, 4179, 4180, + 4182, 4186, 4188, 4189, 4191, 4194, 4199, 4204, 4207, 4208, + 4211, 4215, 4218, 4219, 4221, 4225, 4227, 4230, 4232, 4235, + 4241, 4248, 4254, 4256, 4259, 4261, 4266, 4270, 4275, 4281, + 4286, 4292, 4297, 4303, 4306, 4311, 4313, 4316, 4319, 4322, + 4324, 4326, 4327, 4332, 4335, 4337, 4340, 4343, 4348, 4350, + 4354, 4356, 4359, 4363, 4365, 4368, 4369, 4372, 4377, 4382, + 4383, 4385, 4389, 4392, 4395, 4399, 4405, 4412, 4415, 4419, + 4423, 4428, 4429, 4431, 4433, 4435, 4437, 4439, 4442, 4448, + 4450, 4452, 4454, 4456, 4459, 4463, 4467, 4468, 4470, 4472, + 4474, 4476, 4478, 4481, 4484, 4487, 4490, 4493, 4495, 4499, + 4500, 4502, 4504, 4506, 4508, 4514, 4517, 4519, 4521, 4523, + 4525, 4531, 4534, 4537, 4540, 4542, 4546, 4550, 4553, 4555, + 4556, 4560, 4561, 4567, 4570, 4576, 4579, 4581, 4584, 4588, + 4589, 4591, 4593, 4595, 4597, 4599, 4601, 4605, 4609, 4613, + 4617, 4621, 4625, 4629, 4630, 4632, 4637, 4639, 4643, 4649, + 4652, 4655, 4659, 4663, 4667, 4671, 4675, 4679, 4683, 4687, + 4691, 4695, 4698, 4701, 4705, 4709, 4712, 4716, 4722, 4727, + 4734, 4738, 4744, 4749, 4756, 4761, 4768, 4774, 4782, 4786, + 4789, 4794, 4797, 4801, 4805, 4810, 4814, 4819, 4823, 4828, + 4834, 4841, 4848, 4856, 4863, 4871, 4878, 4886, 4890, 4895, + 4900, 4907, 4910, 4914, 4919, 4921, 4925, 4928, 4931, 4935, + 4939, 4943, 4947, 4951, 4955, 4959, 4963, 4967, 4971, 4974, + 4977, 4983, 4990, 4997, 5005, 5009, 5014, 5016, 5018, 5021, + 5026, 5028, 5030, 5032, 5035, 5038, 5041, 5043, 5048, 5054, + 5061, 5070, 5077, 5084, 5090, 5092, 5094, 5099, 5101, 5106, + 5108, 5113, 5115, 5120, 5122, 5124, 5126, 5128, 5130, 5132, + 5139, 5144, 5149, 5154, 5159, 5166, 5172, 5178, 5184, 5189, + 5196, 5201, 5206, 5211, 5216, 5222, 5230, 5238, 5248, 5253, + 5260, 5266, 5274, 5282, 5290, 5293, 5297, 5301, 5305, 5310, + 5311, 5316, 5318, 5322, 5326, 5328, 5330, 5332, 5335, 5338, + 5339, 5342, 5343, 5345, 5349, 5353, 5356, 5359, 5360, 5367, + 5369, 5370, 5374, 5375, 5378, 5381, 5382, 5384, 5389, 5392, + 5395, 5398, 5403, 5407, 5413, 5415, 5417, 5419, 5421, 5423, + 5425, 5427, 5429, 5431, 5433, 5435, 5437, 5439, 5441, 5443, + 5448, 5450, 5455, 5457, 5462, 5464, 5467, 5469, 5472, 5474, + 5478, 5480, 5484, 5488, 5492, 5495, 5497, 5501, 5505, 5506, + 5508, 5510, 5512, 5514, 5516, 5518, 5520, 5522, 5527, 5531, + 5534, 5538, 5539, 5543, 5547, 5550, 5553, 5555, 5556, 5559, + 5562, 5566, 5569, 5571, 5573, 5577, 5583, 5585, 5588, 5593, + 5596, 5597, 5599, 5600, 5602, 5605, 5608, 5611, 5615, 5621, + 5623, 5626, 5627, 5630, 5632, 5633, 5635, 5637, 5639, 5643, + 5647, 5649, 5653, 5657, 5660, 5662, 5664, 5666, 5668, 5670, + 5674, 5676, 5679, 5681, 5685, 5687, 5689, 5691, 5693, 5695, + 5697, 5699, 5702, 5704, 5706, 5708, 5710, 5712, 5715, 5721, + 5724, 5728, 5735, 5737, 5739, 5741, 5743, 5745, 5747, 5749, + 5752, 5755, 5757, 5759, 5761, 5763, 5765, 5767, 5769, 5771, + 5773, 5775, 5777, 5779, 5781, 5783, 5785, 5787, 5789, 5791, + 5793, 5795, 5797, 5799, 5801, 5803, 5805, 5807, 5809, 5811, + 5813, 5815, 5817, 5819, 5821, 5823, 5825, 5827, 5829, 5831, + 5833, 5835, 5837, 5839, 5841, 5843, 5845, 5847, 5849, 5851, + 5853, 5855, 5857, 5859, 5861, 5863, 5865, 5867, 5869, 5871, + 5873, 5875, 5877, 5879, 5881, 5883, 5885, 5887, 5889, 5891, + 5893, 5895, 5897, 5899, 5901, 5903, 5905, 5907, 5909, 5911, + 5913, 5915, 5917, 5919, 5921, 5923, 5925, 5927, 5929, 5931, + 5933, 5935, 5937, 5939, 5941, 5943, 5945, 5947, 5949, 5951, + 5953, 5955, 5957, 5959, 5961, 5963, 5965, 5967, 5969, 5971, + 5973, 5975, 5977, 5979, 5981, 5983, 5985, 5987, 5989, 5991, + 5993, 5995, 5997, 5999, 6001, 6003, 6005, 6007, 6009, 6011, + 6013, 6015, 6017, 6019, 6021, 6023, 6025, 6027, 6029, 6031, + 6033, 6035, 6037, 6039, 6041, 6043, 6045, 6047, 6049, 6051, + 6053, 6055, 6057, 6059, 6061, 6063, 6065, 6067, 6069, 6071, + 6073, 6075, 6077, 6079, 6081, 6083, 6085, 6087, 6089, 6091, + 6093, 6095, 6097, 6099, 6101, 6103, 6105, 6107, 6109, 6111, + 6113, 6115, 6117, 6119, 6121, 6123, 6125, 6127, 6129, 6131, + 6133, 6135, 6137, 6139, 6141, 6143, 6145, 6147, 6149, 6151, + 6153, 6155, 6157, 6159, 6161, 6163, 6165, 6167, 6169, 6171, + 6173, 6175, 6177, 6179, 6181, 6183, 6185, 6187, 6189, 6191, + 6193, 6195, 6197, 6199, 6201, 6203, 6205, 6207, 6209, 6211, + 6213, 6215, 6217, 6219, 6221, 6223, 6225, 6227, 6229, 6231, + 6233, 6235, 6237, 6239, 6241, 6243, 6245, 6247, 6249, 6251, + 6253, 6255, 6257, 6259, 6261, 6263, 6265, 6267, 6269, 6271, + 6273, 6275, 6277, 6279, 6281, 6283, 6285, 6287, 6289, 6291, + 6293, 6295, 6297, 6299, 6301, 6303, 6305, 6307, 6309, 6311, + 6313, 6315, 6317, 6319, 6321, 6323, 6325, 6327, 6329, 6331, + 6333, 6335, 6337, 6339, 6341, 6343, 6345, 6347, 6349, 6351, + 6353, 6355, 6357, 6359, 6361, 6363, 6365, 6367, 6369, 6371, + 6373, 6375, 6377, 6379, 6381, 6383, 6385, 6387, 6389, 6391, + 6393, 6395, 6397, 6399, 6401, 6403, 6405, 6407, 6409, 6411, + 6413, 6415, 6417, 6419, 6421, 6423, 6425, 6427, 6429, 6431, + 6433, 6435, 6437, 6439, 6441, 6443, 6445, 6447, 6449, 6451, + 6453, 6455, 6457, 6459, 6461, 6463, 6465, 6467, 6469, 6471, + 6473, 6475, 6477, 6479, 6481, 6483, 6485, 6487, 6489, 6491, + 6493, 6495, 6497, 6499, 6501, 6503, 6505, 6507, 6509, 6511, + 6513, 6515, 6517, 6519, 6521, 6523, 6525, 6527, 6529, 6531, + 6533, 6535, 6537, 6539, 6541, 6543, 6545, 6547, 6549, 6551, + 6553, 6555, 6557, 6559, 6561, 6563 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short int yyrhs[] = { - 409, 0, -1, 410, -1, 410, 405, 411, -1, 411, - -1, 650, -1, 651, -1, 656, -1, 607, -1, 424, - -1, 624, -1, 625, -1, 501, -1, 449, -1, 418, - -1, 417, -1, 659, -1, 658, -1, 420, -1, 419, - -1, 664, -1, 447, -1, 457, -1, 661, -1, 564, - -1, 444, -1, 458, -1, 495, -1, 532, -1, 615, - -1, 660, -1, 655, -1, 593, -1, 423, -1, 544, - -1, 550, -1, 551, -1, 508, -1, 427, -1, 500, - -1, 467, -1, 515, -1, 518, -1, 412, -1, 416, - -1, 646, -1, 678, -1, 697, -1, 534, -1, 684, - -1, 448, -1, 533, -1, 617, -1, 426, -1, 554, - -1, 555, -1, 556, -1, 513, -1, 634, -1, 558, - -1, 517, -1, 531, -1, 421, -1, 422, -1, 654, - -1, 676, -1, 670, -1, 567, -1, 570, -1, 581, - -1, 585, -1, 679, -1, 636, -1, 645, -1, 686, - -1, 635, -1, 673, -1, 557, -1, 619, -1, 611, - -1, 610, -1, 612, -1, 622, -1, 571, -1, 582, - -1, 626, -1, 700, -1, 638, -1, 563, -1, 637, - -1, 690, -1, 663, -1, 441, -1, 431, -1, 443, - -1, 643, -1, -1, 67, 277, 825, 413, 414, -1, - 359, -1, -1, 414, 415, -1, -1, 244, 824, -1, - 244, 220, -1, 109, 244, 824, -1, 336, 244, 824, - -1, 312, -1, 214, -1, 154, -1, 211, -1, 68, - -1, 208, -1, 69, -1, 209, -1, 70, -1, 210, - -1, 191, -1, 212, -1, 60, 183, 826, -1, 346, - 341, 824, -1, 343, 814, -1, 314, 823, -1, 8, - 814, -1, 277, 814, -1, 149, 277, 814, -1, 149, - 138, 814, -1, 67, 343, 825, 413, 414, -1, 13, - 277, 825, 413, 414, -1, 13, 277, 825, 442, -1, - 13, 343, 825, 413, 414, -1, 13, 343, 825, 442, - -1, 104, 277, 814, -1, 104, 277, 144, 117, 814, - -1, 104, 343, 814, -1, 104, 343, 144, 117, 814, - -1, 67, 138, 825, 413, 414, -1, 13, 138, 825, - 425, 343, 814, -1, 7, -1, 104, -1, 104, 138, - 814, -1, 104, 138, 144, 117, 814, -1, 67, 283, - 428, 26, 825, 429, -1, 67, 283, 827, 429, -1, - 827, -1, -1, 429, 430, -1, -1, 467, -1, 585, - -1, 500, -1, 518, -1, 570, -1, 643, -1, 293, - 432, -1, 293, 186, 432, -1, 293, 291, 432, -1, - 433, 325, 434, -1, 433, 388, 434, -1, 433, 325, - 87, -1, 433, 388, 87, -1, 433, 131, 73, -1, - 323, 374, 438, -1, 327, 641, -1, 291, 46, 20, - 327, 641, -1, 201, 439, -1, 277, 440, -1, 291, - 26, 440, -1, 291, 26, 87, -1, 363, 233, 773, - -1, 827, -1, 433, 404, 827, -1, 435, -1, 434, - 406, 435, -1, 437, -1, 440, -1, 505, -1, 258, - 335, -1, 258, 57, -1, 267, 258, -1, 290, -1, - 331, -1, 121, -1, 230, -1, 226, -1, 824, -1, - 380, -1, 761, 824, 763, -1, 761, 401, 823, 402, - 824, 763, -1, 505, -1, 87, -1, 186, -1, 824, - -1, 87, -1, -1, 827, -1, 382, -1, 270, 433, - -1, 270, 323, 374, -1, 270, 327, 171, 181, -1, - 270, 291, 26, -1, 270, 11, -1, 293, 432, -1, - 441, -1, 296, 433, -1, 296, 323, 374, -1, 296, - 327, 171, 181, -1, 296, 291, 26, -1, 296, 11, - -1, 293, 62, 445, 446, -1, 11, -1, 812, -1, - 90, -1, 146, -1, 48, -1, 98, 11, -1, 98, - 318, -1, 98, 320, -1, 98, 246, -1, 13, 316, - 734, 450, -1, 13, 152, 734, 452, -1, 451, -1, - 450, 406, 451, -1, 7, 623, 472, -1, 13, 623, - 827, 454, -1, 13, 623, 827, 104, 215, 220, -1, - 13, 623, 827, 293, 215, 220, -1, 13, 623, 827, - 293, 305, 507, -1, 13, 623, 827, 293, 308, 827, - -1, 104, 623, 827, 455, -1, 13, 623, 827, 334, - 741, 456, -1, 7, 480, -1, 104, 61, 815, 455, - -1, 293, 360, 228, -1, 51, 230, 815, -1, 293, - 360, 51, -1, 107, 329, 815, -1, 107, 14, 329, - 815, -1, 107, 269, 329, 815, -1, 107, 329, 11, - -1, 107, 329, 343, -1, 97, 329, 815, -1, 97, - 329, 11, -1, 97, 329, 343, -1, 107, 281, 815, - -1, 107, 14, 281, 815, -1, 107, 269, 281, 815, - -1, 97, 281, 815, -1, 154, 813, -1, 207, 154, - 813, -1, 453, -1, 453, -1, 452, 406, 453, -1, - 241, 325, 825, -1, 293, 317, 815, -1, 293, 535, - -1, 270, 535, -1, 293, 87, 764, -1, 104, 87, - -1, 39, -1, 272, -1, -1, 344, 764, -1, -1, - 50, 815, -1, 50, 11, -1, 65, 463, 813, 482, - 464, 459, 460, 465, 413, 461, -1, 65, 701, 325, - 460, 413, 461, -1, 131, -1, 325, -1, 824, -1, - 306, -1, 307, -1, 461, 462, -1, -1, 32, -1, - 228, -1, 93, 657, 824, -1, 220, 657, 824, -1, - 72, -1, 141, -1, 257, 657, 824, -1, 112, 657, - 824, -1, 127, 257, 483, -1, 127, 215, 220, 483, - -1, 32, -1, -1, 359, 228, -1, -1, 466, 94, - 824, -1, -1, 344, -1, -1, 67, 468, 316, 813, - 401, 469, 402, 490, 491, 492, 493, -1, 67, 468, - 316, 813, 225, 813, 401, 469, 402, 491, 492, 493, - -1, 320, -1, 318, -1, 186, 320, -1, 186, 318, - -1, 134, 320, -1, 134, 318, -1, -1, 470, -1, - -1, 471, -1, 470, 406, 471, -1, 472, -1, 477, - -1, 480, -1, 827, 741, 473, -1, 473, 474, -1, - -1, 61, 815, 475, -1, 475, -1, 476, -1, 215, - 220, -1, 220, -1, 338, 606, 494, -1, 252, 173, - 606, 494, -1, 47, 401, 764, 402, -1, 87, 765, - -1, 262, 813, 482, 485, 486, -1, 89, -1, 215, - 89, -1, 156, 90, -1, 156, 146, -1, 182, 813, - 478, -1, 478, 479, -1, -1, 150, 88, -1, 114, - 88, -1, 150, 62, -1, 114, 62, -1, 150, 153, - -1, 114, 153, -1, 61, 815, 481, -1, 481, -1, - 47, 401, 764, 402, -1, 338, 401, 483, 402, 606, - 494, -1, 252, 173, 401, 483, 402, 606, 494, -1, - 128, 173, 401, 483, 402, 262, 813, 482, 485, 486, - 528, -1, 401, 483, 402, -1, -1, 484, -1, 483, - 406, 484, -1, 827, -1, 193, 132, -1, 193, 243, - -1, 193, 298, -1, -1, 487, -1, 488, -1, 487, - 488, -1, 488, 487, -1, -1, 230, 342, 489, -1, - 230, 92, 489, -1, 207, 6, -1, 272, -1, 39, - -1, 293, 220, -1, 293, 87, -1, 155, 401, 812, - 402, -1, -1, 359, 535, -1, 359, 228, -1, 360, - 228, -1, -1, 230, 56, 104, -1, 230, 56, 92, - 280, -1, 230, 56, 249, 280, -1, -1, 317, 815, - -1, -1, 344, 152, 317, 815, -1, -1, 67, 468, - 316, 496, 20, 700, -1, 813, 497, 491, 492, 493, - -1, 401, 498, 402, -1, -1, 499, -1, 498, 406, - 499, -1, 827, -1, 67, 468, 289, 813, 502, -1, - 13, 289, 813, 502, -1, 502, 503, -1, -1, 37, - 505, -1, 80, -1, 207, 80, -1, 151, 504, 505, - -1, 194, 505, -1, 196, 505, -1, 207, 194, -1, - 207, 196, -1, 240, 36, 561, -1, 303, 413, 505, - -1, 271, 413, 505, -1, 36, -1, -1, 506, -1, - 507, -1, 381, -1, 393, 381, -1, 826, -1, 67, - 509, 514, 175, 440, -1, 67, 509, 514, 175, 440, - 139, 510, 511, 512, -1, 333, -1, -1, 815, -1, - 815, 562, -1, 347, 510, -1, -1, 174, 824, -1, - -1, 104, 514, 175, 440, 455, -1, 104, 514, 175, - 144, 117, 440, 455, -1, 255, -1, -1, 67, 317, - 815, 516, 189, 824, -1, 241, 815, -1, -1, 104, - 317, 815, -1, 104, 317, 144, 117, 815, -1, 67, - 329, 815, 519, 520, 230, 813, 522, 116, 256, 821, - 401, 525, 402, -1, 67, 61, 329, 815, 9, 520, - 230, 813, 527, 528, 126, 105, 279, 116, 256, 821, - 401, 525, 402, -1, 28, -1, 9, -1, 521, -1, - 521, 234, 521, -1, 521, 234, 521, 234, 521, -1, - 161, -1, 92, -1, 342, -1, 126, 523, 524, -1, - -1, 105, -1, -1, 279, -1, 304, -1, 526, -1, - 525, 406, 526, -1, -1, 386, -1, 381, -1, 824, - -1, 383, -1, 384, -1, 827, -1, 131, 813, -1, - -1, 529, -1, 529, 530, -1, 530, -1, 530, 529, - -1, -1, 215, 89, -1, 89, -1, 156, 146, -1, - 156, 90, -1, 104, 329, 815, 230, 813, 455, -1, - 104, 329, 144, 117, 815, 230, 813, 455, -1, 67, - 22, 815, 47, 401, 764, 402, 528, -1, 104, 22, - 815, 455, -1, 67, 10, 821, 539, 535, -1, 67, - 10, 821, 540, -1, 67, 232, 614, 535, -1, 67, - 334, 561, 535, -1, 67, 334, 561, -1, 67, 334, - 561, 20, 401, 739, 402, -1, 67, 334, 561, 20, - 111, 401, 543, 402, -1, 67, 321, 285, 242, 561, - 535, -1, 67, 321, 285, 96, 561, 535, -1, 67, - 321, 285, 319, 561, 535, -1, 67, 321, 285, 59, - 561, 535, -1, 401, 536, 402, -1, 537, -1, 536, - 406, 537, -1, 829, 388, 538, -1, 829, -1, 601, - -1, 833, -1, 780, -1, 505, -1, 824, -1, 401, - 784, 402, -1, 401, 394, 402, -1, 401, 541, 402, - -1, 542, -1, 541, 406, 542, -1, 380, 388, 538, - -1, 824, -1, 543, 406, 824, -1, 67, 232, 49, - 561, 547, 126, 334, 741, 344, 817, 548, 20, 545, - -1, 546, -1, 545, 406, 546, -1, 232, 823, 614, - 549, -1, 232, 823, 614, 401, 613, 402, 549, -1, - 133, 823, 821, 595, -1, 133, 823, 401, 784, 402, - 821, 595, -1, 308, 741, -1, 87, -1, -1, 122, - 561, -1, -1, 261, -1, -1, 67, 232, 122, 561, - 344, 817, -1, 13, 232, 122, 561, 344, 817, 7, - 545, -1, 13, 232, 122, 561, 344, 817, 104, 552, - -1, 553, -1, 552, 406, 553, -1, 232, 823, 401, - 784, 402, -1, 133, 823, 401, 784, 402, -1, 104, - 232, 49, 561, 344, 817, 455, -1, 104, 232, 49, - 144, 117, 561, 344, 817, 455, -1, 104, 232, 122, - 561, 344, 817, 455, -1, 104, 232, 122, 144, 117, - 561, 344, 817, 455, -1, 104, 240, 36, 814, 455, - -1, 260, 240, 36, 814, 325, 815, -1, 104, 559, - 144, 117, 560, 455, -1, 104, 559, 560, 455, -1, - 316, -1, 289, -1, 354, -1, 152, -1, 334, -1, - 102, -1, 64, -1, 283, -1, 321, 285, 242, -1, - 321, 285, 96, -1, 321, 285, 319, -1, 321, 285, - 59, -1, 561, -1, 560, 406, 561, -1, 827, -1, - 827, 562, -1, 404, 818, -1, 562, 404, 818, -1, - 332, 707, 812, 455, -1, 55, 230, 565, 561, 169, - 566, -1, 55, 230, 10, 821, 539, 169, 566, -1, - 55, 230, 133, 821, 595, 169, 566, -1, 55, 230, - 232, 614, 401, 613, 402, 169, 566, -1, 55, 230, - 61, 815, 230, 561, 169, 566, -1, 55, 230, 281, - 815, 230, 561, 169, 566, -1, 55, 230, 281, 815, - 169, 566, -1, 55, 230, 329, 815, 230, 561, 169, - 566, -1, 55, 230, 232, 49, 561, 344, 817, 169, - 566, -1, 55, 230, 232, 122, 561, 344, 817, 169, - 566, -1, 55, 230, 176, 224, 505, 169, 566, -1, - 55, 230, 42, 401, 741, 20, 741, 402, 169, 566, - -1, 55, 230, 514, 175, 561, 169, 566, -1, 55, - 230, 321, 285, 242, 561, 169, 566, -1, 55, 230, - 321, 285, 96, 561, 169, 566, -1, 55, 230, 321, - 285, 319, 561, 169, 566, -1, 55, 230, 321, 285, - 59, 561, 169, 566, -1, 54, -1, 81, -1, 283, - -1, 152, -1, 289, -1, 316, -1, 102, -1, 334, - -1, 354, -1, 64, -1, 317, -1, 277, -1, 824, - -1, 220, -1, 123, 568, 569, 815, -1, 123, 815, - -1, 199, 568, 569, 815, -1, 199, 815, -1, -1, - 206, -1, 253, -1, 124, -1, 177, -1, 4, 826, - -1, 264, 826, -1, 826, -1, 11, -1, 129, -1, - 129, 826, -1, 129, 11, -1, 27, -1, 27, 826, - -1, 27, 11, -1, 131, -1, 149, -1, 135, 572, - 230, 575, 325, 576, 578, -1, 275, 572, 230, 575, - 131, 576, 455, -1, 275, 135, 233, 126, 572, 230, - 575, 131, 576, 455, -1, 573, -1, 11, -1, 11, - 254, -1, 574, -1, 573, 406, 574, -1, 288, -1, - 262, -1, 67, -1, 827, -1, 812, -1, 316, 812, - -1, 289, 812, -1, 133, 579, -1, 81, 814, -1, - 175, 814, -1, 283, 814, -1, 317, 814, -1, 577, - -1, 576, 406, 577, -1, 825, -1, 138, 825, -1, - 359, 135, 233, -1, -1, 580, -1, 579, 406, 580, - -1, 821, 595, -1, 135, 573, 325, 814, 583, 584, - -1, 275, 573, 131, 814, 584, 455, -1, 275, 8, - 233, 126, 573, 131, 814, 584, 455, -1, 359, 8, - 233, -1, -1, 136, 36, 825, -1, -1, 67, 586, - 152, 819, 230, 813, 587, 401, 588, 402, 606, 493, - 737, -1, 67, 586, 152, 58, 819, 230, 813, 587, - 401, 588, 402, 606, 493, 737, -1, 338, -1, -1, - 344, 817, -1, -1, 589, -1, 588, 406, 589, -1, - 827, 590, 591, 592, -1, 767, 590, 591, 592, -1, - 401, 764, 402, 590, 591, 592, -1, 561, -1, 344, - 561, -1, -1, 21, -1, 95, -1, -1, 375, -1, - 376, -1, -1, 67, 594, 133, 821, 595, 274, 600, - 602, 606, -1, 67, 594, 133, 821, 595, 602, 606, - -1, 234, 268, -1, -1, 401, 596, 402, -1, 401, - 402, -1, 597, -1, 596, 406, 597, -1, 598, 599, - 601, -1, 599, 598, 601, -1, 599, 601, -1, 598, - 601, -1, 601, -1, 149, -1, 236, -1, 158, -1, - 149, 236, -1, 828, -1, 601, -1, 741, -1, 828, - 562, 396, 334, -1, 294, 828, 562, 396, 334, -1, - 604, -1, 602, 604, -1, 38, 230, 220, 159, -1, - 274, 220, 230, 220, 159, -1, 309, -1, 147, -1, - 301, -1, 355, -1, 119, 287, 91, -1, 119, 287, - 168, -1, 287, 91, -1, 287, 168, -1, 66, 505, - -1, 280, 505, -1, 442, -1, 20, 605, -1, 175, - 440, -1, 603, -1, 824, -1, 824, 406, 824, -1, - 359, 535, -1, -1, 13, 133, 580, 608, 609, -1, - 603, -1, 608, 603, -1, 272, -1, -1, 104, 133, - 821, 595, 455, -1, 104, 133, 144, 117, 821, 595, - 455, -1, 104, 10, 821, 539, 455, -1, 104, 10, - 144, 117, 821, 539, 455, -1, 104, 232, 614, 401, - 613, 402, 455, -1, 104, 232, 144, 117, 614, 401, - 613, 402, 455, -1, 741, -1, 741, 406, 741, -1, - 213, 406, 741, -1, 741, 406, 213, -1, 777, -1, - 827, 404, 614, -1, 67, 42, 401, 741, 20, 741, - 402, 359, 133, 580, 616, -1, 67, 42, 401, 741, - 20, 741, 402, 360, 133, 616, -1, 20, 148, -1, - 20, 23, -1, -1, 104, 42, 618, 401, 741, 20, - 741, 402, 455, -1, 144, 117, -1, -1, 263, 620, - 813, 621, -1, 263, 315, 815, 621, -1, 263, 81, - 815, 621, -1, 152, -1, 316, -1, 127, -1, -1, - 13, 10, 821, 539, 266, 325, 815, -1, 13, 64, - 561, 266, 325, 815, -1, 13, 81, 816, 266, 325, - 816, -1, 13, 133, 580, 266, 325, 815, -1, 13, - 138, 825, 266, 325, 825, -1, 13, 514, 175, 815, - 266, 325, 815, -1, 13, 232, 49, 561, 344, 817, - 266, 325, 815, -1, 13, 232, 122, 561, 344, 817, - 266, 325, 815, -1, 13, 283, 815, 266, 325, 815, - -1, 13, 316, 734, 266, 325, 815, -1, 13, 289, - 734, 266, 325, 815, -1, 13, 354, 734, 266, 325, - 815, -1, 13, 152, 734, 266, 325, 815, -1, 13, - 316, 734, 266, 623, 815, 325, 815, -1, 13, 329, - 815, 230, 734, 266, 325, 815, -1, 13, 277, 825, - 266, 325, 825, -1, 13, 343, 825, 266, 325, 825, - -1, 13, 317, 815, 266, 325, 815, -1, 13, 321, - 285, 242, 561, 266, 325, 815, -1, 13, 321, 285, - 96, 561, 266, 325, 815, -1, 13, 321, 285, 319, - 561, 266, 325, 815, -1, 13, 321, 285, 59, 561, - 266, 325, 815, -1, 54, -1, -1, 13, 10, 821, - 539, 293, 283, 815, -1, 13, 102, 561, 293, 283, - 815, -1, 13, 133, 580, 293, 283, 815, -1, 13, - 289, 734, 293, 283, 815, -1, 13, 316, 734, 293, - 283, 815, -1, 13, 334, 561, 293, 283, 815, -1, - 13, 10, 821, 539, 241, 325, 825, -1, 13, 64, - 561, 241, 325, 825, -1, 13, 81, 816, 241, 325, - 825, -1, 13, 102, 561, 241, 325, 825, -1, 13, - 133, 580, 241, 325, 825, -1, 13, 514, 175, 815, - 241, 325, 825, -1, 13, 232, 614, 401, 613, 402, - 241, 325, 825, -1, 13, 232, 49, 561, 344, 817, - 241, 325, 825, -1, 13, 232, 122, 561, 344, 817, - 241, 325, 825, -1, 13, 283, 815, 241, 325, 825, - -1, 13, 334, 561, 241, 325, 825, -1, 13, 317, - 815, 241, 325, 825, -1, 13, 321, 285, 96, 561, - 241, 325, 825, -1, 13, 321, 285, 59, 561, 241, - 325, 825, -1, -1, 67, 594, 281, 815, 20, 627, - 230, 632, 325, 813, 737, 100, 633, 628, -1, 216, - -1, 630, -1, 401, 629, 402, -1, 629, 405, 631, - -1, 631, -1, 700, -1, 679, -1, 690, -1, 684, - -1, 635, -1, 630, -1, -1, 288, -1, 342, -1, - 92, -1, 161, -1, 162, -1, 12, -1, -1, 104, - 281, 815, 230, 813, 455, -1, 104, 281, 144, 117, - 815, 230, 813, 455, -1, 217, 827, -1, 184, 827, - -1, 340, 827, -1, 340, 394, -1, 3, 639, -1, - 29, 639, 642, -1, 303, 327, 642, -1, 56, 639, - -1, 110, 639, -1, 278, 639, -1, 282, 827, -1, - 265, 282, 827, -1, 265, 827, -1, 278, 639, 325, - 282, 827, -1, 278, 639, 325, 827, -1, 250, 327, - 824, -1, 56, 251, 824, -1, 278, 251, 824, -1, - 361, -1, 327, -1, -1, 171, 181, 436, -1, 258, - 231, -1, 258, 362, -1, 640, -1, 641, 406, 640, - -1, 641, 640, -1, 641, -1, -1, 67, 468, 354, - 813, 482, 20, 700, 644, -1, 67, 234, 268, 468, - 354, 813, 482, 20, 700, 644, -1, 379, 233, -1, - 377, 47, 233, -1, 378, 47, 233, -1, -1, 185, - 820, -1, 67, 81, 816, 413, 647, -1, 647, 648, - -1, -1, 317, 649, 815, -1, 317, 649, 87, -1, - 189, 649, 824, -1, 189, 649, 87, -1, 319, 649, - 815, -1, 319, 649, 87, -1, 108, 649, 824, -1, - 108, 649, 823, -1, 108, 649, 87, -1, 60, 183, - 649, 826, -1, 241, 649, 815, -1, 241, 649, 87, - -1, 388, -1, -1, 13, 81, 816, 413, 652, -1, - 13, 81, 816, 442, -1, 652, 653, -1, -1, 60, - 183, 649, 826, -1, 104, 81, 816, -1, 104, 81, - 144, 117, 816, -1, 67, 102, 561, 657, 741, 473, - -1, 13, 102, 561, 454, -1, 13, 102, 561, 104, - 215, 220, -1, 13, 102, 561, 293, 215, 220, -1, - 13, 102, 561, 7, 480, -1, 13, 102, 561, 104, - 61, 815, 455, -1, 20, -1, -1, 13, 321, 285, - 96, 561, 535, -1, 13, 321, 285, 59, 561, 7, - 192, 126, 814, 359, 560, -1, 13, 321, 285, 59, - 561, 13, 192, 126, 814, 359, 560, -1, 13, 321, - 285, 59, 561, 13, 192, 268, 561, 359, 561, -1, - 13, 321, 285, 59, 561, 13, 192, 126, 814, 268, - 561, 359, 561, -1, 13, 321, 285, 59, 561, 104, - 192, 126, 814, -1, 13, 321, 285, 59, 561, 104, - 192, 144, 117, 126, 814, -1, 67, 547, 64, 561, - 126, 824, 325, 824, 131, 561, -1, 51, 813, 662, - -1, 51, -1, 51, 819, 230, 813, -1, 344, 819, - -1, -1, 345, 667, 668, 666, -1, 345, 667, 668, - 666, 813, -1, 345, 667, 668, 666, 664, -1, 665, - 666, -1, 665, 666, 813, 669, -1, 16, -1, 15, - -1, 352, -1, -1, 132, -1, -1, 130, -1, -1, - 401, 814, 402, -1, -1, 118, 672, 666, 671, -1, - 700, -1, 679, -1, 690, -1, 684, -1, 697, -1, - 676, -1, 665, -1, -1, 250, 815, 674, 20, 675, - -1, 401, 784, 402, -1, -1, 700, -1, 679, -1, - 690, -1, 684, -1, 116, 815, 677, -1, 67, 468, - 316, 496, 20, 116, 815, 677, -1, 401, 782, 402, - -1, -1, 83, 815, -1, 83, 250, 815, -1, 83, - 11, -1, 83, 250, 11, -1, 161, 167, 813, 680, - 683, -1, 700, -1, 401, 681, 402, 700, -1, 87, - 349, -1, 682, -1, 681, 406, 682, -1, 827, 804, - -1, 273, 809, -1, -1, 92, 131, 735, 685, 738, - 683, -1, 344, 727, -1, -1, 190, 707, 812, 687, - 689, -1, 149, 688, 197, -1, -1, 5, 295, -1, - 279, 295, -1, 279, 115, -1, 295, 342, 115, -1, - 295, -1, 295, 279, 115, -1, 115, -1, 5, 115, - -1, 219, -1, -1, 342, 735, 293, 691, 726, 738, - 683, -1, 692, -1, 691, 406, 692, -1, 693, -1, - 694, -1, 695, 388, 806, -1, 401, 696, 402, 388, - 808, -1, 827, 804, -1, 695, -1, 696, 406, 695, - -1, 86, 815, 698, 79, 699, 126, 700, -1, -1, - 698, 207, 284, -1, 698, 284, -1, 698, 32, -1, - 698, 160, -1, -1, 359, 142, -1, 360, 142, -1, - 702, -1, 701, -1, 401, 702, 402, -1, 401, 701, - 402, -1, 704, -1, 703, 711, -1, 703, 710, 720, - 715, -1, 703, 710, 714, 721, -1, 704, -1, 701, - -1, 288, 709, 809, 705, 726, 737, 718, 719, -1, - 725, -1, 703, 337, 708, 703, -1, 703, 165, 708, - 703, -1, 703, 113, 708, 703, -1, 167, 706, -1, - -1, 320, 707, 813, -1, 318, 707, 813, -1, 186, - 320, 707, 813, -1, 186, 318, 707, 813, -1, 134, - 320, 707, 813, -1, 134, 318, 707, 813, -1, 316, - 813, -1, 813, -1, 316, -1, -1, 11, -1, 99, - -1, -1, 99, -1, 99, 230, 401, 782, 402, -1, - 11, -1, -1, 711, -1, -1, 235, 36, 712, -1, - 713, -1, 712, 406, 713, -1, 764, 344, 780, 592, - -1, 764, 591, 592, -1, 183, 716, 227, 717, -1, - 227, 717, 183, 716, -1, 183, 716, -1, 227, 717, - -1, 183, 716, 406, 717, -1, 714, -1, -1, 764, - -1, 11, -1, 764, -1, 138, 36, 782, -1, -1, - 140, 764, -1, -1, 722, -1, 126, 258, 231, -1, - 720, -1, -1, 723, -1, 722, 723, -1, 126, 342, - 724, 689, -1, 126, 295, 724, 689, -1, 225, 814, - -1, -1, 349, 808, -1, 725, 406, 808, -1, 131, - 727, -1, -1, 728, -1, 727, 406, 728, -1, 734, - -1, 734, 730, -1, 736, -1, 736, 730, -1, 736, - 20, 401, 739, 402, -1, 736, 20, 827, 401, 739, - 402, -1, 736, 827, 401, 739, 402, -1, 701, -1, - 701, 730, -1, 729, -1, 401, 729, 402, 730, -1, - 401, 729, 402, -1, 728, 71, 172, 728, -1, 728, - 731, 172, 728, 733, -1, 728, 172, 728, 733, -1, - 728, 203, 731, 172, 728, -1, 728, 203, 172, 728, - -1, 20, 827, 401, 814, 402, -1, 20, 827, -1, - 827, 401, 814, 402, -1, 827, -1, 132, 732, -1, - 180, 732, -1, 276, 732, -1, 157, -1, 237, -1, - -1, 344, 401, 814, 402, -1, 230, 764, -1, 813, - -1, 813, 394, -1, 231, 813, -1, 231, 401, 813, - 402, -1, 734, -1, 734, 827, -1, 734, 20, 827, - -1, 767, -1, 357, 764, -1, -1, 357, 764, -1, - 357, 73, 225, 815, -1, 357, 73, 225, 387, -1, - -1, 740, -1, 739, 406, 740, -1, 827, 741, -1, - 743, 742, -1, 294, 743, 742, -1, 743, 19, 399, - 823, 400, -1, 294, 743, 19, 399, 823, 400, -1, - 742, 399, 400, -1, 742, 399, 823, 400, -1, -1, - 745, -1, 747, -1, 749, -1, 753, -1, 760, -1, - 761, 763, -1, 761, 401, 823, 402, 763, -1, 747, - -1, 750, -1, 754, -1, 760, -1, 828, 746, -1, - 828, 562, 746, -1, 401, 782, 402, -1, -1, 163, - -1, 164, -1, 299, -1, 31, -1, 259, -1, 125, - 748, -1, 103, 248, -1, 85, 746, -1, 84, 746, - -1, 223, 746, -1, 34, -1, 401, 823, 402, -1, - -1, 751, -1, 752, -1, 751, -1, 752, -1, 33, - 758, 401, 782, 402, -1, 33, 758, -1, 755, -1, - 756, -1, 755, -1, 756, -1, 757, 401, 823, 402, - 759, -1, 757, 759, -1, 45, 758, -1, 44, 758, - -1, 350, -1, 202, 45, 758, -1, 202, 44, 758, - -1, 204, 758, -1, 351, -1, -1, 45, 293, 827, - -1, -1, 324, 401, 823, 402, 762, -1, 324, 762, - -1, 323, 401, 823, 402, 762, -1, 323, 762, -1, - 166, -1, 359, 323, 374, -1, 360, 323, 374, -1, - -1, 372, -1, 198, -1, 82, -1, 143, -1, 195, - -1, 286, -1, 372, 325, 198, -1, 82, 325, 143, - -1, 82, 325, 195, -1, 82, 325, 286, -1, 143, - 325, 195, -1, 143, 325, 286, -1, 195, 325, 286, - -1, -1, 766, -1, 764, 403, 741, -1, 764, 25, - 323, 374, 764, -1, 392, 764, -1, 393, 764, -1, - 764, 392, 764, -1, 764, 393, 764, -1, 764, 394, - 764, -1, 764, 395, 764, -1, 764, 396, 764, -1, - 764, 397, 764, -1, 764, 389, 764, -1, 764, 390, - 764, -1, 764, 388, 764, -1, 764, 779, 764, -1, - 779, 764, -1, 764, 779, -1, 764, 17, 764, -1, - 764, 234, 764, -1, 215, 764, -1, 764, 182, 764, - -1, 764, 182, 764, 112, 764, -1, 764, 215, 182, - 764, -1, 764, 215, 182, 764, 112, 764, -1, 764, - 145, 764, -1, 764, 145, 764, 112, 764, -1, 764, - 215, 145, 764, -1, 764, 215, 145, 764, 112, 764, - -1, 764, 297, 325, 764, -1, 764, 297, 325, 764, - 112, 764, -1, 764, 215, 297, 325, 764, -1, 764, - 215, 297, 325, 764, 112, 764, -1, 764, 169, 220, - -1, 764, 170, -1, 764, 169, 215, 220, -1, 764, - 218, -1, 775, 238, 775, -1, 764, 169, 331, -1, - 764, 169, 215, 331, -1, 764, 169, 121, -1, 764, - 169, 215, 121, -1, 764, 169, 339, -1, 764, 169, - 215, 339, -1, 764, 169, 99, 131, 764, -1, 764, - 169, 215, 99, 131, 764, -1, 764, 169, 225, 401, - 784, 402, -1, 764, 169, 215, 225, 401, 784, 402, - -1, 764, 30, 805, 765, 17, 765, -1, 764, 215, - 30, 805, 765, 17, 765, -1, 764, 30, 313, 765, - 17, 765, -1, 764, 215, 30, 313, 765, 17, 765, - -1, 764, 149, 795, -1, 764, 215, 149, 795, -1, - 764, 781, 776, 701, -1, 764, 781, 776, 401, 764, - 402, -1, 338, 701, -1, 764, 169, 101, -1, 764, - 169, 215, 101, -1, 766, -1, 765, 403, 741, -1, - 392, 765, -1, 393, 765, -1, 765, 392, 765, -1, - 765, 393, 765, -1, 765, 394, 765, -1, 765, 395, - 765, -1, 765, 396, 765, -1, 765, 397, 765, -1, - 765, 389, 765, -1, 765, 390, 765, -1, 765, 388, - 765, -1, 765, 779, 765, -1, 779, 765, -1, 765, - 779, -1, 765, 169, 99, 131, 765, -1, 765, 169, - 215, 99, 131, 765, -1, 765, 169, 225, 401, 784, - 402, -1, 765, 169, 215, 225, 401, 784, 402, -1, - 765, 169, 101, -1, 765, 169, 215, 101, -1, 801, - -1, 822, -1, 387, 804, -1, 401, 764, 402, 804, - -1, 796, -1, 767, -1, 701, -1, 117, 701, -1, - 19, 701, -1, 19, 786, -1, 775, -1, 821, 401, - 402, -1, 821, 401, 782, 402, -1, 821, 401, 11, - 782, 402, -1, 821, 401, 99, 782, 402, -1, 821, - 401, 394, 402, -1, 74, -1, 76, -1, 76, 401, - 823, 402, -1, 77, -1, 77, 401, 823, 402, -1, - 187, -1, 187, 401, 823, 402, -1, 188, -1, 188, - 401, 823, 402, -1, 75, -1, 78, -1, 292, -1, - 343, -1, 42, 401, 764, 20, 741, 402, -1, 120, - 401, 783, 402, -1, 239, 401, 788, 402, -1, 247, - 401, 790, 402, -1, 311, 401, 791, 402, -1, 328, - 401, 764, 20, 741, 402, -1, 330, 401, 35, 794, - 402, -1, 330, 401, 178, 794, 402, -1, 330, 401, - 326, 794, 402, -1, 330, 401, 794, 402, -1, 221, - 401, 764, 406, 764, 402, -1, 52, 401, 782, 402, - -1, 137, 401, 782, 402, -1, 179, 401, 782, 402, - -1, 365, 401, 782, 402, -1, 366, 401, 200, 829, - 402, -1, 366, 401, 200, 829, 406, 770, 402, -1, - 366, 401, 200, 829, 406, 782, 402, -1, 366, 401, - 200, 829, 406, 770, 406, 782, 402, -1, 367, 401, - 771, 402, -1, 368, 401, 773, 764, 774, 402, -1, - 369, 401, 200, 829, 402, -1, 369, 401, 200, 829, - 406, 764, 402, -1, 370, 401, 764, 406, 768, 769, - 402, -1, 371, 401, 773, 764, 20, 743, 402, -1, - 353, 764, -1, 353, 207, 348, -1, 406, 302, 373, - -1, 406, 302, 207, -1, 406, 302, 207, 348, -1, - -1, 364, 401, 771, 402, -1, 772, -1, 771, 406, - 772, -1, 764, 20, 829, -1, 764, -1, 101, -1, - 63, -1, 249, 358, -1, 310, 358, -1, -1, 279, - 401, 782, 402, -1, 279, 401, 402, -1, 401, 782, - 406, 764, 402, -1, 18, -1, 300, -1, 11, -1, - 385, -1, 778, -1, 392, -1, 393, -1, 394, -1, - 395, -1, 396, -1, 397, -1, 389, -1, 390, -1, - 388, -1, 385, -1, 232, 401, 614, 402, -1, 777, - -1, 232, 401, 614, 402, -1, 777, -1, 232, 401, - 614, 402, -1, 182, -1, 215, 182, -1, 145, -1, - 215, 145, -1, 764, -1, 782, 406, 764, -1, 787, - 131, 764, -1, -1, 741, -1, 784, 406, 741, -1, - 786, -1, 785, 406, 786, -1, 399, 782, 400, -1, - 399, 785, 400, -1, 380, -1, 372, -1, 198, -1, - 82, -1, 143, -1, 195, -1, 286, -1, 382, -1, - 764, 789, 792, 793, -1, 764, 789, 792, -1, 245, - 764, -1, 765, 149, 765, -1, -1, 764, 792, 793, - -1, 764, 793, 792, -1, 764, 792, -1, 764, 793, - -1, 782, -1, -1, 131, 764, -1, 126, 764, -1, - 764, 131, 782, -1, 131, 782, -1, 782, -1, 701, - -1, 401, 782, 402, -1, 41, 800, 797, 799, 110, - -1, 798, -1, 797, 798, -1, 356, 764, 322, 764, - -1, 106, 764, -1, -1, 764, -1, -1, 811, -1, - 811, 803, -1, 404, 818, -1, 404, 394, -1, 399, - 764, 400, -1, 399, 764, 407, 764, 400, -1, 802, - -1, 803, 802, -1, -1, 804, 802, -1, 24, -1, - -1, 764, -1, 87, -1, 806, -1, 807, 406, 806, - -1, 401, 807, 402, -1, 810, -1, 809, 406, 810, - -1, 764, 20, 829, -1, 764, -1, 394, -1, 834, - -1, 827, -1, 813, -1, 812, 406, 813, -1, 811, - -1, 811, 803, -1, 815, -1, 814, 406, 815, -1, - 827, -1, 827, -1, 827, -1, 829, -1, 827, -1, - 824, -1, 828, -1, 811, 803, -1, 823, -1, 381, - -1, 824, -1, 383, -1, 384, -1, 821, 824, -1, - 821, 401, 782, 402, 824, -1, 744, 824, -1, 761, - 824, 763, -1, 761, 401, 823, 402, 824, 763, -1, - 331, -1, 121, -1, 220, -1, 386, -1, 382, -1, - 827, -1, 386, -1, 393, 386, -1, 380, -1, 830, - -1, 831, -1, 380, -1, 830, -1, 832, -1, 380, - -1, 830, -1, 831, -1, 832, -1, 833, -1, 3, - -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, - -1, 9, -1, 10, -1, 12, -1, 13, -1, 14, - -1, 22, -1, 23, -1, 25, -1, 27, -1, 28, - -1, 29, -1, 36, -1, 37, -1, 38, -1, 39, - -1, 40, -1, 43, -1, 46, -1, 48, -1, 49, - -1, 50, -1, 51, -1, 55, -1, 56, -1, 57, - -1, 58, -1, 59, -1, 60, -1, 62, -1, 63, - -1, 64, -1, 65, -1, 66, -1, 68, -1, 69, - -1, 70, -1, 72, -1, 73, -1, 79, -1, 80, - -1, 81, -1, 82, -1, 83, -1, 86, -1, 88, - -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, - -1, 96, -1, 97, -1, 98, -1, 101, -1, 102, - -1, 103, -1, 104, -1, 105, -1, 107, -1, 108, - -1, 109, -1, 111, -1, 112, -1, 114, -1, 115, - -1, 116, -1, 118, -1, 119, -1, 122, -1, 123, - -1, 124, -1, 127, -1, 129, -1, 133, -1, 134, - -1, 136, -1, 139, -1, 141, -1, 142, -1, 143, - -1, 144, -1, 146, -1, 147, -1, 148, -1, 150, - -1, 151, -1, 152, -1, 153, -1, 154, -1, 155, - -1, 159, -1, 160, -1, 161, -1, 162, -1, 168, - -1, 171, -1, 173, -1, 174, -1, 175, -1, 176, - -1, 177, -1, 181, -1, 184, -1, 185, -1, 186, - -1, 189, -1, 190, -1, 191, -1, 192, -1, 193, - -1, 194, -1, 195, -1, 196, -1, 197, -1, 198, - -1, 199, -1, 200, -1, 201, -1, 206, -1, 207, - -1, 208, -1, 209, -1, 210, -1, 211, -1, 212, - -1, 214, -1, 216, -1, 217, -1, 219, -1, 222, - -1, 224, -1, 225, -1, 228, -1, 232, -1, 233, - -1, 240, -1, 241, -1, 242, -1, 243, -1, 244, - -1, 246, -1, 250, -1, 251, -1, 249, -1, 253, - -1, 254, -1, 255, -1, 256, -1, 257, -1, 258, - -1, 260, -1, 261, -1, 263, -1, 264, -1, 265, - -1, 266, -1, 267, -1, 268, -1, 269, -1, 270, - -1, 271, -1, 272, -1, 274, -1, 275, -1, 277, - -1, 278, -1, 280, -1, 281, -1, 282, -1, 283, - -1, 284, -1, 285, -1, 286, -1, 287, -1, 289, - -1, 290, -1, 291, -1, 293, -1, 295, -1, 296, - -1, 298, -1, 301, -1, 302, -1, 303, -1, 304, - -1, 305, -1, 306, -1, 307, -1, 308, -1, 309, - -1, 310, -1, 312, -1, 314, -1, 315, -1, 317, - -1, 318, -1, 319, -1, 320, -1, 321, -1, 327, - -1, 329, -1, 332, -1, 333, -1, 334, -1, 335, - -1, 336, -1, 339, -1, 340, -1, 341, -1, 342, - -1, 345, -1, 346, -1, 347, -1, 348, -1, 351, - -1, 353, -1, 354, -1, 355, -1, 358, -1, 359, - -1, 360, -1, 361, -1, 362, -1, 363, -1, 372, - -1, 373, -1, 374, -1, 31, -1, 33, -1, 34, - -1, 44, -1, 45, -1, 52, -1, 84, -1, 85, - -1, 117, -1, 120, -1, 125, -1, 137, -1, 158, - -1, 163, -1, 164, -1, 166, -1, 179, -1, 202, - -1, 204, -1, 213, -1, 221, -1, 223, -1, 236, - -1, 239, -1, 247, -1, 248, -1, 259, -1, 279, - -1, 294, -1, 299, -1, 311, -1, 323, -1, 324, - -1, 328, -1, 330, -1, 349, -1, 350, -1, 364, - -1, 365, -1, 366, -1, 367, -1, 368, -1, 369, - -1, 370, -1, 371, -1, 26, -1, 30, -1, 32, - -1, 71, -1, 130, -1, 132, -1, 145, -1, 157, - -1, 169, -1, 170, -1, 172, -1, 180, -1, 182, - -1, 203, -1, 218, -1, 237, -1, 238, -1, 276, - -1, 297, -1, 352, -1, 11, -1, 15, -1, 16, - -1, 17, -1, 18, -1, 19, -1, 20, -1, 21, - -1, 24, -1, 35, -1, 41, -1, 42, -1, 47, - -1, 53, -1, 54, -1, 61, -1, 67, -1, 74, - -1, 75, -1, 76, -1, 77, -1, 78, -1, 87, - -1, 89, -1, 95, -1, 99, -1, 100, -1, 106, - -1, 110, -1, 113, -1, 121, -1, 126, -1, 128, - -1, 131, -1, 135, -1, 138, -1, 140, -1, 149, - -1, 156, -1, 165, -1, 167, -1, 178, -1, 183, - -1, 187, -1, 188, -1, 205, -1, 215, -1, 220, - -1, 226, -1, 227, -1, 229, -1, 230, -1, 231, - -1, 234, -1, 235, -1, 245, -1, 252, -1, 262, - -1, 273, -1, 288, -1, 292, -1, 300, -1, 313, - -1, 316, -1, 322, -1, 325, -1, 326, -1, 331, - -1, 337, -1, 338, -1, 343, -1, 344, -1, 356, - -1, 357, -1, 229, -1, 205, -1 + 427, 0, -1, 428, -1, 428, 423, 429, -1, 429, + -1, 699, -1, 700, -1, 705, -1, 541, -1, 555, + -1, 655, -1, 442, -1, 673, -1, 674, -1, 522, + -1, 467, -1, 436, -1, 435, -1, 708, -1, 707, + -1, 559, -1, 438, -1, 437, -1, 713, -1, 465, + -1, 477, -1, 710, -1, 607, -1, 462, -1, 478, + -1, 515, -1, 574, -1, 663, -1, 709, -1, 704, + -1, 539, -1, 550, -1, 636, -1, 441, -1, 586, + -1, 592, -1, 593, -1, 528, -1, 445, -1, 521, + -1, 487, -1, 536, -1, 560, -1, 430, -1, 434, + -1, 556, -1, 695, -1, 727, -1, 746, -1, 576, + -1, 733, -1, 466, -1, 575, -1, 665, -1, 540, + -1, 554, -1, 444, -1, 596, -1, 597, -1, 598, + -1, 534, -1, 683, -1, 600, -1, 538, -1, 573, + -1, 439, -1, 440, -1, 558, -1, 703, -1, 725, + -1, 719, -1, 610, -1, 613, -1, 624, -1, 628, + -1, 728, -1, 685, -1, 694, -1, 735, -1, 684, + -1, 722, -1, 599, -1, 667, -1, 659, -1, 658, + -1, 660, -1, 670, -1, 614, -1, 625, -1, 675, + -1, 749, -1, 687, -1, 605, -1, 686, -1, 739, + -1, 712, -1, 459, -1, 449, -1, 461, -1, 692, + -1, -1, 69, 292, 893, 431, 432, -1, 378, -1, + -1, 432, 433, -1, -1, 256, 892, -1, 256, 229, + -1, 114, 256, 892, -1, 353, 256, 892, -1, 328, + -1, 223, -1, 161, -1, 220, -1, 70, -1, 217, + -1, 71, -1, 218, -1, 72, -1, 219, -1, 200, + -1, 221, -1, 61, 192, 894, -1, 363, 358, 892, + -1, 360, 882, -1, 330, 891, -1, 8, 882, -1, + 292, 882, -1, 156, 292, 882, -1, 156, 144, 882, + -1, 69, 360, 893, 431, 432, -1, 13, 292, 893, + 431, 432, -1, 13, 292, 893, 460, -1, 13, 360, + 893, 431, 432, -1, 13, 360, 893, 460, -1, 109, + 292, 882, -1, 109, 292, 151, 122, 882, -1, 109, + 360, 882, -1, 109, 360, 151, 122, 882, -1, 69, + 144, 893, 431, 432, -1, 13, 144, 893, 443, 360, + 882, -1, 7, -1, 109, -1, 109, 144, 882, -1, + 109, 144, 151, 122, 882, -1, 69, 298, 446, 26, + 893, 447, -1, 69, 298, 895, 447, -1, 895, -1, + -1, 447, 448, -1, -1, 487, -1, 628, -1, 521, + -1, 560, -1, 613, -1, 692, -1, 309, 450, -1, + 309, 195, 450, -1, 309, 307, 450, -1, 451, 341, + 452, -1, 451, 406, 452, -1, 451, 341, 92, -1, + 451, 406, 92, -1, 451, 137, 75, -1, 339, 394, + 456, -1, 343, 690, -1, 307, 47, 20, 343, 690, + -1, 43, 892, -1, 298, 892, -1, 210, 457, -1, + 292, 458, -1, 307, 26, 458, -1, 307, 26, 92, + -1, 383, 242, 831, -1, 895, -1, 451, 422, 895, + -1, 453, -1, 452, 424, 453, -1, 455, -1, 458, + -1, 527, -1, 272, 352, -1, 272, 58, -1, 282, + 272, -1, 305, -1, 347, -1, 126, -1, 239, -1, + 235, -1, 892, -1, 398, -1, 818, 892, 820, -1, + 818, 419, 891, 420, 892, 820, -1, 527, -1, 92, + -1, 195, -1, 892, -1, 92, -1, -1, 895, -1, + 892, -1, 285, 451, -1, 285, 339, 394, -1, 285, + 343, 178, 190, -1, 285, 307, 26, -1, 285, 11, + -1, 309, 450, -1, 459, -1, 312, 451, -1, 312, + 339, 394, -1, 312, 343, 178, 190, -1, 312, 307, + 26, -1, 312, 11, -1, 309, 63, 463, 464, -1, + 11, -1, 880, -1, 95, -1, 153, -1, 49, -1, + 103, 11, -1, 103, 334, -1, 103, 336, -1, 103, + 258, -1, 13, 332, 790, 468, -1, 13, 159, 881, + 468, -1, 13, 304, 881, 468, -1, 13, 372, 881, + 468, -1, 469, -1, 468, 424, 469, -1, 7, 671, + 492, -1, 13, 671, 895, 470, -1, 13, 671, 895, + 109, 224, 229, -1, 13, 671, 895, 309, 224, 229, + -1, 13, 671, 895, 309, 321, 894, -1, 13, 671, + 895, 309, 324, 895, -1, 109, 671, 895, 471, -1, + 13, 671, 895, 672, 350, 798, 472, -1, 7, 500, + -1, 109, 62, 883, 471, -1, 309, 378, 237, -1, + 309, 379, 237, -1, 52, 239, 883, -1, 309, 379, + 52, -1, 112, 345, 883, -1, 112, 14, 345, 883, + -1, 112, 284, 345, 883, -1, 112, 345, 11, -1, + 112, 345, 360, -1, 102, 345, 883, -1, 102, 345, + 11, -1, 102, 345, 360, -1, 112, 296, 883, -1, + 112, 14, 296, 883, -1, 112, 284, 296, 883, -1, + 102, 296, 883, -1, 161, 881, -1, 216, 161, 881, + -1, 252, 341, 893, -1, 309, 333, 883, -1, 309, + 473, -1, 285, 473, -1, 309, 92, 822, -1, 109, + 92, -1, 39, -1, 287, -1, -1, 361, 822, -1, + -1, 419, 475, 420, -1, 378, 473, -1, -1, 476, + -1, 475, 424, 476, -1, 897, 406, 580, -1, 897, + -1, 897, 422, 897, 406, 580, -1, 897, 422, 897, + -1, 51, 883, -1, 51, 11, -1, 67, 483, 881, + 502, 484, 479, 480, 485, 431, 481, -1, 67, 750, + 341, 480, 431, 481, -1, 137, -1, 341, -1, 892, + -1, 322, -1, 323, -1, 481, 482, -1, -1, 32, + -1, 237, -1, 98, 706, 892, -1, 229, 706, 892, + -1, 74, -1, 147, -1, 270, 706, 892, -1, 117, + 706, 892, -1, 133, 270, 503, -1, 133, 224, 229, + 503, -1, 32, -1, -1, 378, 237, -1, -1, 486, + 99, 892, -1, -1, 361, -1, -1, 69, 488, 332, + 881, 419, 489, 420, 510, 511, 512, 513, -1, 69, + 488, 332, 881, 234, 881, 419, 489, 420, 511, 512, + 513, -1, 336, -1, 334, -1, 195, 336, -1, 195, + 334, -1, 140, 336, -1, 140, 334, -1, -1, 490, + -1, -1, 491, -1, 490, 424, 491, -1, 492, -1, + 497, -1, 500, -1, 895, 798, 493, -1, 493, 494, + -1, -1, 62, 883, 495, -1, 495, -1, 496, -1, + 224, 229, -1, 229, -1, 355, 652, 514, -1, 265, + 180, 652, 514, -1, 48, 419, 822, 420, -1, 92, + 823, -1, 277, 881, 502, 505, 506, -1, 94, -1, + 224, 94, -1, 163, 95, -1, 163, 153, -1, 191, + 881, 498, -1, 498, 499, -1, -1, 157, 93, -1, + 119, 93, -1, 157, 63, -1, 119, 63, -1, 157, + 160, -1, 119, 160, -1, 62, 883, 501, -1, 501, + -1, 48, 419, 822, 420, -1, 355, 419, 503, 420, + 652, 514, -1, 265, 180, 419, 503, 420, 652, 514, + -1, 134, 180, 419, 503, 420, 277, 881, 502, 505, + 506, 570, -1, 419, 503, 420, -1, -1, 504, -1, + 503, 424, 504, -1, 895, -1, 202, 138, -1, 202, + 254, -1, 202, 314, -1, -1, 507, -1, 508, -1, + 507, 508, -1, 508, 507, -1, -1, 239, 359, 509, + -1, 239, 97, 509, -1, 216, 6, -1, 287, -1, + 39, -1, 309, 229, -1, 309, 92, -1, 162, 419, + 880, 420, -1, -1, 378, 473, -1, 378, 237, -1, + 379, 237, -1, -1, 239, 57, 109, -1, 239, 57, + 97, 295, -1, 239, 57, 262, 295, -1, -1, 333, + 883, -1, -1, 361, 159, 333, 883, -1, -1, 69, + 488, 332, 516, 20, 749, 520, -1, 881, 517, 511, + 512, 513, -1, 419, 518, 420, -1, -1, 519, -1, + 518, 424, 519, -1, 895, -1, 378, 85, -1, 378, + 216, 85, -1, -1, 69, 488, 304, 881, 523, -1, + 13, 304, 881, 524, -1, 524, -1, -1, 525, -1, + 524, 525, -1, 37, 527, -1, 84, -1, 216, 84, + -1, 158, 526, 527, -1, 203, 527, -1, 205, 527, + -1, 216, 203, -1, 216, 205, -1, 251, 36, 603, + -1, 319, 431, 527, -1, 286, -1, 286, 431, 527, + -1, 36, -1, -1, 399, -1, 411, 399, -1, 894, + -1, 69, 529, 535, 182, 458, -1, 69, 529, 535, + 182, 458, 145, 530, 532, 533, -1, 349, -1, -1, + 883, -1, 883, 604, -1, 364, 530, -1, 216, 364, + -1, 531, -1, -1, 181, 892, -1, -1, 109, 535, + 182, 458, 471, -1, 109, 535, 182, 151, 122, 458, + 471, -1, 268, -1, -1, 69, 333, 883, 537, 198, + 892, -1, 252, 883, -1, -1, 109, 333, 883, -1, + 109, 333, 151, 122, 883, -1, 69, 134, 85, 381, + 883, 532, 542, -1, 109, 134, 85, 381, 883, 471, + -1, 109, 134, 85, 381, 151, 122, 883, 471, -1, + 13, 134, 85, 381, 883, 531, 544, -1, 13, 134, + 85, 381, 883, 531, -1, 13, 134, 85, 381, 883, + 544, -1, 243, 419, 543, 420, -1, -1, 547, -1, + 543, 424, 547, -1, 243, 419, 545, 420, -1, 546, + -1, 545, 424, 546, -1, 547, -1, 309, 547, -1, + 7, 547, -1, 109, 548, -1, 548, 549, -1, 897, + -1, 892, -1, 69, 306, 883, 551, 553, 134, 85, + 381, 883, 542, -1, 350, 892, -1, -1, 371, 892, + -1, 371, 229, -1, 552, -1, -1, 109, 306, 883, + 471, -1, 109, 306, 151, 122, 883, 471, -1, 13, + 306, 883, 552, 544, -1, 13, 306, 883, 552, -1, + 13, 306, 883, 544, -1, 69, 360, 201, 132, 557, + 306, 883, 542, -1, 82, -1, 360, -1, 893, -1, + 109, 360, 201, 132, 557, 306, 883, -1, 109, 360, + 201, 151, 122, 132, 557, 306, 883, -1, 13, 360, + 201, 132, 557, 306, 883, 544, -1, 69, 345, 883, + 561, 562, 239, 881, 564, 121, 269, 889, 419, 567, + 420, -1, 69, 62, 345, 883, 9, 562, 239, 881, + 569, 570, 132, 110, 294, 121, 269, 889, 419, 567, + 420, -1, 28, -1, 9, -1, 563, -1, 562, 244, + 563, -1, 168, -1, 97, -1, 359, -1, 348, -1, + 132, 565, 566, -1, -1, 110, -1, -1, 294, -1, + 320, -1, 568, -1, 567, 424, 568, -1, -1, 891, + -1, 399, -1, 892, -1, 401, -1, 402, -1, 895, + -1, 137, 881, -1, -1, 571, -1, 571, 572, -1, + 572, -1, 572, 571, -1, -1, 224, 94, -1, 94, + -1, 163, 153, -1, 163, 95, -1, 109, 345, 883, + 239, 881, 471, -1, 109, 345, 151, 122, 883, 239, + 881, 471, -1, 69, 22, 883, 48, 419, 822, 420, + 570, -1, 109, 22, 883, 471, -1, 69, 10, 889, + 581, 577, -1, 69, 10, 889, 582, -1, 69, 241, + 662, 577, -1, 69, 350, 603, 577, -1, 69, 350, + 603, -1, 69, 350, 603, 20, 419, 796, 420, -1, + 69, 350, 603, 20, 116, 419, 585, 420, -1, 69, + 337, 300, 253, 603, 577, -1, 69, 337, 300, 101, + 603, 577, -1, 69, 337, 300, 335, 603, 577, -1, + 69, 337, 300, 60, 603, 577, -1, 419, 578, 420, + -1, 579, -1, 578, 424, 579, -1, 897, 406, 580, + -1, 897, -1, 646, -1, 901, -1, 848, -1, 527, + -1, 892, -1, 419, 851, 420, -1, 419, 412, 420, + -1, 419, 583, 420, -1, 584, -1, 583, 424, 584, + -1, 398, 406, 580, -1, 892, -1, 585, 424, 892, + -1, 69, 241, 50, 603, 589, 132, 350, 798, 361, + 885, 590, 20, 587, -1, 588, -1, 587, 424, 588, + -1, 241, 891, 662, 591, -1, 241, 891, 662, 661, + 591, -1, 139, 891, 889, 638, -1, 139, 891, 419, + 851, 420, 889, 638, -1, 324, 798, -1, 92, -1, + -1, 127, 603, -1, -1, 275, -1, -1, 69, 241, + 127, 603, 361, 885, -1, 13, 241, 127, 603, 361, + 885, 7, 587, -1, 13, 241, 127, 603, 361, 885, + 109, 594, -1, 595, -1, 594, 424, 595, -1, 241, + 891, 419, 851, 420, -1, 139, 891, 419, 851, 420, + -1, 109, 241, 50, 603, 361, 885, 471, -1, 109, + 241, 50, 151, 122, 603, 361, 885, 471, -1, 109, + 241, 127, 603, 361, 885, 471, -1, 109, 241, 127, + 151, 122, 603, 361, 885, 471, -1, 109, 251, 36, + 882, 471, -1, 274, 251, 36, 882, 341, 883, -1, + 109, 601, 151, 122, 602, 471, -1, 109, 601, 602, + 471, -1, 332, -1, 304, -1, 372, -1, 159, -1, + 350, -1, 107, -1, 66, -1, 298, -1, 337, 300, + 253, -1, 337, 300, 101, -1, 337, 300, 335, -1, + 337, 300, 60, -1, 603, -1, 602, 424, 603, -1, + 895, -1, 895, 604, -1, 422, 886, -1, 604, 422, + 886, -1, 348, 759, 791, 606, 471, -1, 65, 150, + -1, 286, 150, -1, -1, 56, 239, 608, 603, 176, + 609, -1, 56, 239, 10, 889, 581, 176, 609, -1, + 56, 239, 139, 889, 638, 176, 609, -1, 56, 239, + 241, 662, 661, 176, 609, -1, 56, 239, 62, 883, + 239, 603, 176, 609, -1, 56, 239, 296, 883, 239, + 603, 176, 609, -1, 56, 239, 296, 883, 176, 609, + -1, 56, 239, 345, 883, 239, 603, 176, 609, -1, + 56, 239, 241, 50, 603, 361, 885, 176, 609, -1, + 56, 239, 241, 127, 603, 361, 885, 176, 609, -1, + 56, 239, 183, 233, 527, 176, 609, -1, 56, 239, + 42, 419, 798, 20, 798, 420, 176, 609, -1, 56, + 239, 535, 182, 603, 176, 609, -1, 56, 239, 337, + 300, 253, 603, 176, 609, -1, 56, 239, 337, 300, + 101, 603, 176, 609, -1, 56, 239, 337, 300, 335, + 603, 176, 609, -1, 56, 239, 337, 300, 60, 603, + 176, 609, -1, 55, -1, 86, -1, 298, -1, 159, + -1, 304, -1, 332, -1, 107, -1, 350, -1, 372, + -1, 66, -1, 333, -1, 292, -1, 892, -1, 229, + -1, 128, 611, 612, 883, -1, 128, 883, -1, 208, + 611, 612, 883, -1, 208, 883, -1, -1, 215, -1, + 266, -1, 129, -1, 184, -1, 4, 894, -1, 279, + 894, -1, 894, -1, 11, -1, 135, -1, 135, 894, + -1, 135, 11, -1, 27, -1, 27, 894, -1, 27, + 11, -1, 137, -1, 156, -1, 141, 615, 239, 618, + 341, 619, 621, -1, 290, 615, 239, 618, 137, 619, + 471, -1, 290, 141, 242, 132, 615, 239, 618, 137, + 619, 471, -1, 616, -1, 11, -1, 11, 267, -1, + 11, 419, 503, 420, -1, 11, 267, 419, 503, 420, + -1, 617, -1, 616, 424, 617, -1, 303, 502, -1, + 277, 502, -1, 69, 502, -1, 895, 502, -1, 880, + -1, 332, 880, -1, 304, 880, -1, 134, 85, 381, + 882, -1, 134, 306, 882, -1, 139, 622, -1, 86, + 882, -1, 182, 882, -1, 298, 882, -1, 333, 882, + -1, 620, -1, 619, 424, 620, -1, 893, -1, 144, + 893, -1, 378, 141, 242, -1, -1, 623, -1, 622, + 424, 623, -1, 889, 638, -1, 141, 616, 341, 882, + 626, 627, -1, 290, 616, 137, 882, 627, 471, -1, + 290, 8, 242, 132, 616, 137, 882, 627, 471, -1, + 378, 8, 242, -1, -1, 142, 36, 893, -1, -1, + 69, 629, 159, 887, 239, 881, 630, 419, 631, 420, + 474, 513, 794, -1, 69, 629, 159, 59, 887, 239, + 881, 630, 419, 631, 420, 474, 513, 794, -1, 355, + -1, -1, 361, 885, -1, -1, 632, -1, 631, 424, + 632, -1, 895, 633, 634, 635, -1, 825, 633, 634, + 635, -1, 419, 822, 420, 633, 634, 635, -1, 603, + -1, 361, 603, -1, -1, 21, -1, 100, -1, -1, + 395, -1, 396, -1, -1, 69, 637, 139, 889, 640, + 289, 645, 648, 652, -1, 69, 637, 139, 889, 640, + 289, 332, 419, 654, 420, 648, 652, -1, 69, 637, + 139, 889, 640, 648, 652, -1, 244, 283, -1, -1, + 419, 639, 420, -1, 419, 420, -1, 642, -1, 639, + 424, 642, -1, 419, 641, 420, -1, 419, 420, -1, + 647, -1, 641, 424, 647, -1, 643, 644, 646, -1, + 644, 643, 646, -1, 644, 646, -1, 643, 646, -1, + 646, -1, 156, -1, 246, -1, 165, -1, 156, 246, + -1, 368, -1, 896, -1, 646, -1, 798, -1, 896, + 604, 414, 350, -1, 310, 896, 604, 414, 350, -1, + 642, -1, 642, 92, 822, -1, 642, 406, 822, -1, + 650, -1, 648, 650, -1, 38, 239, 229, 166, -1, + 289, 229, 239, 229, 166, -1, 325, -1, 154, -1, + 317, -1, 373, -1, 124, 302, 96, -1, 124, 302, + 175, -1, 302, 96, -1, 302, 175, -1, 68, 527, + -1, 295, 527, -1, 460, -1, 20, 651, -1, 182, + 458, -1, 377, -1, 649, -1, 892, -1, 892, 424, + 892, -1, 378, 577, -1, -1, 644, 646, -1, 653, + -1, 654, 424, 653, -1, 13, 139, 623, 656, 657, + -1, 649, -1, 656, 649, -1, 287, -1, -1, 109, + 139, 889, 638, 471, -1, 109, 139, 151, 122, 889, + 638, 471, -1, 109, 10, 889, 581, 471, -1, 109, + 10, 151, 122, 889, 581, 471, -1, 109, 241, 662, + 661, 471, -1, 109, 241, 151, 122, 662, 661, 471, + -1, 419, 798, 420, -1, 419, 798, 424, 798, 420, + -1, 419, 222, 424, 798, 420, -1, 419, 798, 424, + 222, 420, -1, 845, -1, 895, 422, 662, -1, 69, + 42, 419, 798, 20, 798, 420, 378, 139, 623, 664, + -1, 69, 42, 419, 798, 20, 798, 420, 379, 139, + 664, -1, 69, 42, 419, 798, 20, 798, 420, 378, + 165, 664, -1, 20, 155, -1, 20, 23, -1, -1, + 109, 42, 666, 419, 798, 20, 798, 420, 471, -1, + 151, 122, -1, -1, 278, 668, 881, 669, -1, 278, + 331, 883, 669, -1, 278, 86, 883, 669, -1, 159, + -1, 332, -1, 133, -1, -1, 13, 10, 889, 581, + 281, 341, 883, -1, 13, 66, 603, 281, 341, 883, + -1, 13, 86, 884, 281, 341, 884, -1, 13, 139, + 623, 281, 341, 883, -1, 13, 144, 893, 281, 341, + 893, -1, 13, 535, 182, 883, 281, 341, 883, -1, + 13, 241, 50, 603, 361, 885, 281, 341, 883, -1, + 13, 241, 127, 603, 361, 885, 281, 341, 883, -1, + 13, 298, 883, 281, 341, 883, -1, 13, 332, 790, + 281, 341, 883, -1, 13, 304, 881, 281, 341, 883, + -1, 13, 372, 881, 281, 341, 883, -1, 13, 159, + 881, 281, 341, 883, -1, 13, 332, 790, 281, 671, + 883, 341, 883, -1, 13, 345, 883, 239, 881, 281, + 341, 883, -1, 13, 292, 893, 281, 341, 893, -1, + 13, 360, 893, 281, 341, 893, -1, 13, 333, 883, + 281, 341, 883, -1, 13, 337, 300, 253, 603, 281, + 341, 883, -1, 13, 337, 300, 101, 603, 281, 341, + 883, -1, 13, 337, 300, 335, 603, 281, 341, 883, + -1, 13, 337, 300, 60, 603, 281, 341, 883, -1, + 13, 350, 603, 281, 341, 883, -1, 55, -1, -1, + 309, 85, -1, -1, 13, 10, 889, 581, 309, 298, + 883, -1, 13, 107, 603, 309, 298, 883, -1, 13, + 139, 623, 309, 298, 883, -1, 13, 332, 790, 309, + 298, 883, -1, 13, 304, 881, 309, 298, 883, -1, + 13, 372, 881, 309, 298, 883, -1, 13, 350, 603, + 309, 298, 883, -1, 13, 10, 889, 581, 252, 341, + 893, -1, 13, 66, 603, 252, 341, 893, -1, 13, + 86, 884, 252, 341, 893, -1, 13, 107, 603, 252, + 341, 893, -1, 13, 139, 623, 252, 341, 893, -1, + 13, 535, 182, 883, 252, 341, 893, -1, 13, 241, + 662, 661, 252, 341, 893, -1, 13, 241, 50, 603, + 361, 885, 252, 341, 893, -1, 13, 241, 127, 603, + 361, 885, 252, 341, 893, -1, 13, 298, 883, 252, + 341, 893, -1, 13, 350, 603, 252, 341, 893, -1, + 13, 333, 883, 252, 341, 893, -1, 13, 337, 300, + 101, 603, 252, 341, 893, -1, 13, 337, 300, 60, + 603, 252, 341, 893, -1, 13, 134, 85, 381, 883, + 252, 341, 893, -1, 13, 306, 883, 252, 341, 893, + -1, -1, 69, 637, 296, 883, 20, 676, 239, 681, + 341, 881, 794, 105, 682, 677, -1, 225, -1, 679, + -1, 419, 678, 420, -1, 678, 423, 680, -1, 680, + -1, 749, -1, 728, -1, 739, -1, 733, -1, 684, + -1, 679, -1, -1, 303, -1, 359, -1, 97, -1, + 168, -1, 169, -1, 12, -1, -1, 109, 296, 883, + 239, 881, 471, -1, 109, 296, 151, 122, 883, 239, + 881, 471, -1, 226, 895, -1, 193, 895, -1, 357, + 895, -1, 357, 412, -1, 3, 688, -1, 29, 688, + 691, -1, 319, 343, 691, -1, 57, 688, -1, 115, + 688, -1, 293, 688, -1, 297, 895, -1, 280, 297, + 895, -1, 280, 895, -1, 293, 688, 341, 297, 895, + -1, 293, 688, 341, 895, -1, 263, 343, 892, -1, + 57, 264, 892, -1, 293, 264, 892, -1, 380, -1, + 343, -1, -1, 178, 190, 454, -1, 272, 240, -1, + 272, 382, -1, 689, -1, 690, 424, 689, -1, 690, + 689, -1, 690, -1, -1, 69, 488, 372, 881, 502, + 20, 749, 693, -1, 69, 244, 283, 488, 372, 881, + 502, 20, 749, 693, -1, 378, 48, 242, -1, 378, + 40, 48, 242, -1, 378, 195, 48, 242, -1, -1, + 194, 888, -1, 69, 86, 884, 431, 696, -1, 696, + 697, -1, -1, 333, 698, 883, -1, 333, 698, 92, + -1, 198, 698, 892, -1, 198, 698, 92, -1, 335, + 698, 883, -1, 335, 698, 92, -1, 113, 698, 892, + -1, 113, 698, 891, -1, 113, 698, 92, -1, 185, + 698, 892, -1, 185, 698, 92, -1, 186, 698, 892, + -1, 186, 698, 92, -1, 61, 192, 698, 894, -1, + 252, 698, 883, -1, 252, 698, 92, -1, 406, -1, + -1, 13, 86, 884, 431, 701, -1, 13, 86, 884, + 309, 333, 883, -1, 13, 86, 884, 460, -1, 701, + 702, -1, -1, 61, 192, 698, 894, -1, 109, 86, + 884, -1, 109, 86, 151, 122, 884, -1, 69, 107, + 603, 706, 798, 493, -1, 13, 107, 603, 470, -1, + 13, 107, 603, 109, 224, 229, -1, 13, 107, 603, + 309, 224, 229, -1, 13, 107, 603, 7, 500, -1, + 13, 107, 603, 109, 62, 883, 471, -1, 20, -1, + -1, 13, 337, 300, 101, 603, 577, -1, 13, 337, + 300, 60, 603, 7, 201, 132, 882, 378, 602, -1, + 13, 337, 300, 60, 603, 13, 201, 132, 882, 378, + 602, -1, 13, 337, 300, 60, 603, 13, 201, 283, + 603, 378, 603, -1, 13, 337, 300, 60, 603, 13, + 201, 132, 882, 283, 603, 378, 603, -1, 13, 337, + 300, 60, 603, 109, 201, 132, 882, -1, 13, 337, + 300, 60, 603, 109, 201, 151, 122, 132, 882, -1, + 69, 589, 66, 603, 132, 892, 341, 892, 137, 603, + -1, 52, 715, 881, 711, -1, 52, 715, -1, 52, + 715, 887, 239, 881, -1, 361, 887, -1, -1, 362, + 716, 717, 715, -1, 362, 716, 717, 715, 881, -1, + 362, 716, 717, 715, 713, -1, 714, 715, -1, 714, + 715, 881, 718, -1, 16, -1, 15, -1, 370, -1, + -1, 138, -1, -1, 136, -1, -1, 419, 882, 420, + -1, -1, 123, 721, 715, 720, -1, 749, -1, 728, + -1, 739, -1, 733, -1, 746, -1, 515, -1, 725, + -1, 714, -1, -1, 263, 883, 723, 20, 724, -1, + 419, 851, 420, -1, -1, 749, -1, 728, -1, 739, + -1, 733, -1, 121, 883, 726, -1, 69, 488, 332, + 516, 20, 121, 883, 726, -1, 419, 850, 420, -1, + -1, 88, 883, -1, 88, 263, 883, -1, 88, 11, + -1, 88, 263, 11, -1, 168, 174, 881, 729, 732, + -1, 749, -1, 419, 730, 420, 749, -1, 92, 366, + -1, 731, -1, 730, 424, 731, -1, 895, 872, -1, + 288, 877, -1, -1, 97, 137, 792, 734, 795, 732, + -1, 361, 783, -1, -1, 199, 759, 791, 736, 738, + -1, 156, 737, 206, -1, -1, 5, 311, -1, 294, + 311, -1, 294, 120, -1, 311, 359, 120, -1, 311, + -1, 311, 294, 120, -1, 120, -1, 5, 120, -1, + 228, -1, -1, 359, 792, 309, 740, 782, 795, 732, + -1, 741, -1, 740, 424, 741, -1, 742, -1, 743, + -1, 744, 406, 874, -1, 419, 745, 420, 406, 876, + -1, 895, 872, -1, 744, -1, 745, 424, 744, -1, + 91, 883, 747, 83, 748, 132, 749, -1, -1, 747, + 216, 299, -1, 747, 299, -1, 747, 32, -1, 747, + 167, -1, -1, 378, 148, -1, 379, 148, -1, 751, + -1, 750, -1, 419, 751, 420, -1, 419, 750, 420, + -1, 753, -1, 752, 763, -1, 752, 762, 776, 767, + -1, 752, 762, 766, 777, -1, 754, 753, -1, 754, + 752, 763, -1, 754, 752, 762, 776, 767, -1, 754, + 752, 762, 766, 777, -1, 753, -1, 750, -1, 303, + 761, 877, 757, 782, 794, 774, 775, 833, -1, 781, + -1, 332, 790, -1, 752, 354, 760, 752, -1, 752, + 172, 760, 752, -1, 752, 118, 760, 752, -1, 378, + 755, -1, 378, 276, 755, -1, 756, -1, 755, 424, + 756, -1, 883, 718, 20, 750, -1, 174, 758, -1, + -1, 336, 759, 881, -1, 334, 759, 881, -1, 195, + 336, 759, 881, -1, 195, 334, 759, 881, -1, 140, + 336, 759, 881, -1, 140, 334, 759, 881, -1, 332, + 881, -1, 881, -1, 332, -1, -1, 11, -1, 104, + -1, -1, 104, -1, 104, 239, 419, 850, 420, -1, + 11, -1, -1, 763, -1, -1, 245, 36, 764, -1, + 765, -1, 764, 424, 765, -1, 822, 361, 848, 635, + -1, 822, 634, 635, -1, 192, 768, 236, 770, -1, + 236, 770, 192, 768, -1, 192, 768, -1, 236, 770, + -1, 192, 768, 424, 770, -1, 236, 771, 772, -1, + 128, 773, 769, 772, 240, -1, 236, 771, 772, 128, + 773, 769, 772, 240, -1, 766, -1, -1, 822, -1, + 11, -1, 894, -1, 419, 822, 420, -1, -1, 822, + -1, 824, -1, 294, -1, 295, -1, 129, -1, 215, + -1, 144, 36, 850, -1, -1, 146, 822, -1, -1, + 778, -1, 132, 272, 240, -1, 776, -1, -1, 779, + -1, 778, 779, -1, 132, 359, 780, 738, -1, 132, + 311, 780, 738, -1, 234, 880, -1, -1, 366, 876, + -1, 781, 424, 876, -1, 137, 783, -1, -1, 784, + -1, 783, 424, 784, -1, 790, -1, 790, 786, -1, + 793, -1, 793, 786, -1, 793, 20, 419, 796, 420, + -1, 793, 20, 895, 419, 796, 420, -1, 793, 895, + 419, 796, 420, -1, 750, -1, 750, 786, -1, 785, + -1, 419, 785, 420, 786, -1, 419, 785, 420, -1, + 784, 73, 179, 784, -1, 784, 787, 179, 784, 789, + -1, 784, 179, 784, 789, -1, 784, 212, 787, 179, + 784, -1, 784, 212, 179, 784, -1, 20, 895, 419, + 882, 420, -1, 20, 895, -1, 895, 419, 882, 420, + -1, 895, -1, 138, 788, -1, 189, 788, -1, 291, + 788, -1, 164, -1, 247, -1, -1, 361, 419, 882, + 420, -1, 239, 822, -1, 881, -1, 881, 412, -1, + 240, 881, -1, 240, 419, 881, 420, -1, 790, -1, + 791, 424, 790, -1, 790, -1, 790, 895, -1, 790, + 20, 895, -1, 825, -1, 375, 822, -1, -1, 375, + 822, -1, 375, 75, 234, 883, -1, 375, 75, 234, + 405, -1, -1, 797, -1, 796, 424, 797, -1, 895, + 798, -1, 800, 799, -1, 310, 800, 799, -1, 800, + 19, 417, 891, 418, -1, 310, 800, 19, 417, 891, + 418, -1, 800, 19, -1, 310, 800, 19, -1, 799, + 417, 418, -1, 799, 417, 891, 418, -1, -1, 802, + -1, 804, -1, 806, -1, 810, -1, 817, -1, 818, + 820, -1, 818, 419, 891, 420, 820, -1, 804, -1, + 807, -1, 811, -1, 817, -1, 896, 803, -1, 896, + 604, 803, -1, 419, 850, 420, -1, -1, 170, -1, + 171, -1, 315, -1, 31, -1, 273, -1, 130, 805, + -1, 108, 261, -1, 90, 803, -1, 89, 803, -1, + 232, 803, -1, 34, -1, 419, 891, 420, -1, -1, + 808, -1, 809, -1, 808, -1, 809, -1, 33, 815, + 419, 850, 420, -1, 33, 815, -1, 812, -1, 813, + -1, 812, -1, 813, -1, 814, 419, 891, 420, 816, + -1, 814, 816, -1, 46, 815, -1, 45, 815, -1, + 367, -1, 211, 46, 815, -1, 211, 45, 815, -1, + 213, 815, -1, 369, -1, -1, 46, 309, 895, -1, + -1, 340, 419, 891, 420, 819, -1, 340, 819, -1, + 339, 419, 891, 420, 819, -1, 339, 819, -1, 173, + -1, 397, 394, -1, 379, 339, 394, -1, -1, 392, + -1, 207, -1, 87, -1, 149, -1, 204, -1, 821, + -1, 392, 341, 207, -1, 87, 341, 149, -1, 87, + 341, 204, -1, 87, 341, 821, -1, 149, 341, 204, + -1, 149, 341, 821, -1, 204, 341, 821, -1, -1, + 301, -1, 301, 419, 891, 420, -1, 824, -1, 822, + 421, 798, -1, 822, 25, 339, 394, 822, -1, 410, + 822, -1, 411, 822, -1, 822, 410, 822, -1, 822, + 411, 822, -1, 822, 412, 822, -1, 822, 413, 822, + -1, 822, 414, 822, -1, 822, 415, 822, -1, 822, + 407, 822, -1, 822, 408, 822, -1, 822, 406, 822, + -1, 822, 847, 822, -1, 847, 822, -1, 822, 847, + -1, 822, 17, 822, -1, 822, 244, 822, -1, 224, + 822, -1, 822, 191, 822, -1, 822, 191, 822, 117, + 822, -1, 822, 224, 191, 822, -1, 822, 224, 191, + 822, 117, 822, -1, 822, 152, 822, -1, 822, 152, + 822, 117, 822, -1, 822, 224, 152, 822, -1, 822, + 224, 152, 822, 117, 822, -1, 822, 313, 341, 822, + -1, 822, 313, 341, 822, 117, 822, -1, 822, 224, + 313, 341, 822, -1, 822, 224, 313, 341, 822, 117, + 822, -1, 822, 176, 229, -1, 822, 177, -1, 822, + 176, 224, 229, -1, 822, 227, -1, 843, 249, 843, + -1, 822, 176, 347, -1, 822, 176, 224, 347, -1, + 822, 176, 126, -1, 822, 176, 224, 126, -1, 822, + 176, 356, -1, 822, 176, 224, 356, -1, 822, 176, + 104, 137, 822, -1, 822, 176, 224, 104, 137, 822, + -1, 822, 176, 234, 419, 851, 420, -1, 822, 176, + 224, 234, 419, 851, 420, -1, 822, 30, 873, 823, + 17, 823, -1, 822, 224, 30, 873, 823, 17, 823, + -1, 822, 30, 329, 823, 17, 823, -1, 822, 224, + 30, 329, 823, 17, 823, -1, 822, 156, 863, -1, + 822, 224, 156, 863, -1, 822, 849, 844, 750, -1, + 822, 849, 844, 419, 822, 420, -1, 355, 750, -1, + 822, 176, 106, -1, 822, 176, 224, 106, -1, 824, + -1, 823, 421, 798, -1, 410, 823, -1, 411, 823, + -1, 823, 410, 823, -1, 823, 411, 823, -1, 823, + 412, 823, -1, 823, 413, 823, -1, 823, 414, 823, + -1, 823, 415, 823, -1, 823, 407, 823, -1, 823, + 408, 823, -1, 823, 406, 823, -1, 823, 847, 823, + -1, 847, 823, -1, 823, 847, -1, 823, 176, 104, + 137, 823, -1, 823, 176, 224, 104, 137, 823, -1, + 823, 176, 234, 419, 851, 420, -1, 823, 176, 224, + 234, 419, 851, 420, -1, 823, 176, 106, -1, 823, + 176, 224, 106, -1, 869, -1, 890, -1, 405, 872, + -1, 419, 822, 420, 872, -1, 864, -1, 825, -1, + 750, -1, 122, 750, -1, 19, 750, -1, 19, 852, + -1, 843, -1, 889, 419, 420, 836, -1, 889, 419, + 850, 420, 836, -1, 889, 419, 368, 822, 420, 836, + -1, 889, 419, 850, 424, 368, 822, 420, 836, -1, + 889, 419, 11, 850, 420, 836, -1, 889, 419, 104, + 850, 420, 836, -1, 889, 419, 412, 420, 836, -1, + 77, -1, 80, -1, 80, 419, 891, 420, -1, 81, + -1, 81, 419, 891, 420, -1, 196, -1, 196, 419, + 891, 420, -1, 197, -1, 197, 419, 891, 420, -1, + 78, -1, 82, -1, 308, -1, 360, -1, 76, -1, + 79, -1, 42, 419, 822, 20, 798, 420, -1, 125, + 419, 854, 420, -1, 250, 419, 856, 420, -1, 259, + 419, 858, 420, -1, 327, 419, 859, 420, -1, 344, + 419, 822, 20, 798, 420, -1, 346, 419, 35, 862, + 420, -1, 346, 419, 187, 862, 420, -1, 346, 419, + 342, 862, 420, -1, 346, 419, 862, 420, -1, 230, + 419, 822, 424, 822, 420, -1, 53, 419, 850, 420, + -1, 143, 419, 850, 420, -1, 188, 419, 850, 420, + -1, 385, 419, 850, 420, -1, 386, 419, 209, 897, + 420, -1, 386, 419, 209, 897, 424, 828, 420, -1, + 386, 419, 209, 897, 424, 850, 420, -1, 386, 419, + 209, 897, 424, 828, 424, 850, 420, -1, 387, 419, + 829, 420, -1, 388, 419, 831, 822, 832, 420, -1, + 389, 419, 209, 897, 420, -1, 389, 419, 209, 897, + 424, 822, 420, -1, 390, 419, 822, 424, 826, 827, + 420, -1, 391, 419, 831, 822, 20, 800, 420, -1, + 371, 822, -1, 371, 216, 365, -1, 424, 318, 393, + -1, 424, 318, 216, -1, 424, 318, 216, 365, -1, + -1, 384, 419, 829, 420, -1, 830, -1, 829, 424, + 830, -1, 822, 20, 897, -1, 822, -1, 106, -1, + 64, -1, 262, 376, -1, 326, 376, -1, -1, 377, + 834, -1, -1, 835, -1, 834, 424, 835, -1, 895, + 20, 837, -1, 248, 837, -1, 248, 895, -1, -1, + 419, 838, 839, 762, 840, 420, -1, 895, -1, -1, + 255, 36, 850, -1, -1, 271, 841, -1, 295, 841, + -1, -1, 842, -1, 30, 842, 17, 842, -1, 351, + 260, -1, 351, 131, -1, 75, 294, -1, 294, 419, + 850, 420, -1, 294, 419, 420, -1, 419, 850, 424, + 822, 420, -1, 18, -1, 316, -1, 11, -1, 403, + -1, 846, -1, 410, -1, 411, -1, 412, -1, 413, + -1, 414, -1, 415, -1, 407, -1, 408, -1, 406, + -1, 403, -1, 241, 419, 662, 420, -1, 845, -1, + 241, 419, 662, 420, -1, 845, -1, 241, 419, 662, + 420, -1, 191, -1, 224, 191, -1, 152, -1, 224, + 152, -1, 822, -1, 850, 424, 822, -1, 798, -1, + 851, 424, 798, -1, 417, 850, 418, -1, 417, 853, + 418, -1, 417, 418, -1, 852, -1, 853, 424, 852, + -1, 855, 137, 822, -1, -1, 398, -1, 392, -1, + 207, -1, 87, -1, 149, -1, 204, -1, 301, -1, + 892, -1, 822, 857, 860, 861, -1, 822, 857, 860, + -1, 257, 822, -1, 823, 156, 823, -1, -1, 822, + 860, 861, -1, 822, 861, 860, -1, 822, 860, -1, + 822, 861, -1, 850, -1, -1, 137, 822, -1, 132, + 822, -1, 822, 137, 850, -1, 137, 850, -1, 850, + -1, 750, -1, 419, 850, 420, -1, 41, 868, 865, + 867, 115, -1, 866, -1, 865, 866, -1, 374, 822, + 338, 822, -1, 111, 822, -1, -1, 822, -1, -1, + 879, -1, 879, 871, -1, 422, 886, -1, 422, 412, + -1, 417, 822, 418, -1, 417, 822, 425, 822, 418, + -1, 870, -1, 871, 870, -1, -1, 872, 870, -1, + 24, -1, -1, 822, -1, 92, -1, 874, -1, 875, + 424, 874, -1, 419, 875, 420, -1, 878, -1, 877, + 424, 878, -1, 822, 20, 897, -1, 822, 398, -1, + 822, -1, 412, -1, 902, -1, 895, -1, 881, -1, + 880, 424, 881, -1, 879, -1, 879, 871, -1, 883, + -1, 882, 424, 883, -1, 895, -1, 895, -1, 895, + -1, 897, -1, 895, -1, 892, -1, 896, -1, 879, + 871, -1, 891, -1, 399, -1, 892, -1, 401, -1, + 402, -1, 889, 892, -1, 889, 419, 850, 420, 892, + -1, 801, 892, -1, 818, 892, 820, -1, 818, 419, + 891, 420, 892, 820, -1, 347, -1, 126, -1, 229, + -1, 404, -1, 400, -1, 895, -1, 891, -1, 410, + 891, -1, 411, 891, -1, 398, -1, 898, -1, 899, + -1, 398, -1, 898, -1, 900, -1, 398, -1, 898, + -1, 899, -1, 900, -1, 901, -1, 3, -1, 4, + -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, + -1, 10, -1, 12, -1, 13, -1, 14, -1, 22, + -1, 23, -1, 25, -1, 27, -1, 28, -1, 29, + -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, + -1, 43, -1, 44, -1, 47, -1, 49, -1, 50, + -1, 51, -1, 52, -1, 56, -1, 57, -1, 58, + -1, 59, -1, 60, -1, 61, -1, 63, -1, 64, + -1, 65, -1, 66, -1, 67, -1, 68, -1, 70, + -1, 71, -1, 72, -1, 74, -1, 75, -1, 83, + -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, + -1, 91, -1, 93, -1, 95, -1, 96, -1, 97, + -1, 98, -1, 99, -1, 101, -1, 102, -1, 103, + -1, 106, -1, 107, -1, 108, -1, 109, -1, 110, + -1, 112, -1, 113, -1, 114, -1, 116, -1, 117, + -1, 119, -1, 120, -1, 121, -1, 123, -1, 124, + -1, 127, -1, 129, -1, 131, -1, 133, -1, 135, + -1, 139, -1, 140, -1, 142, -1, 145, -1, 147, + -1, 148, -1, 149, -1, 150, -1, 151, -1, 153, + -1, 154, -1, 155, -1, 157, -1, 158, -1, 159, + -1, 160, -1, 161, -1, 162, -1, 166, -1, 167, + -1, 168, -1, 169, -1, 175, -1, 178, -1, 180, + -1, 181, -1, 182, -1, 183, -1, 184, -1, 185, + -1, 186, -1, 190, -1, 193, -1, 194, -1, 195, + -1, 198, -1, 199, -1, 200, -1, 201, -1, 202, + -1, 203, -1, 204, -1, 205, -1, 206, -1, 207, + -1, 208, -1, 209, -1, 210, -1, 215, -1, 216, + -1, 217, -1, 218, -1, 219, -1, 220, -1, 221, + -1, 223, -1, 225, -1, 226, -1, 228, -1, 231, + -1, 233, -1, 234, -1, 237, -1, 241, -1, 242, + -1, 243, -1, 251, -1, 252, -1, 253, -1, 254, + -1, 255, -1, 256, -1, 258, -1, 260, -1, 263, + -1, 264, -1, 262, -1, 266, -1, 267, -1, 268, + -1, 269, -1, 270, -1, 271, -1, 272, -1, 274, + -1, 275, -1, 276, -1, 278, -1, 279, -1, 280, + -1, 281, -1, 282, -1, 283, -1, 284, -1, 285, + -1, 286, -1, 287, -1, 289, -1, 290, -1, 292, + -1, 293, -1, 295, -1, 296, -1, 297, -1, 298, + -1, 299, -1, 300, -1, 301, -1, 302, -1, 304, + -1, 305, -1, 306, -1, 307, -1, 309, -1, 311, + -1, 312, -1, 314, -1, 317, -1, 318, -1, 319, + -1, 320, -1, 321, -1, 322, -1, 323, -1, 324, + -1, 325, -1, 326, -1, 328, -1, 330, -1, 331, + -1, 333, -1, 334, -1, 335, -1, 336, -1, 337, + -1, 343, -1, 345, -1, 348, -1, 349, -1, 350, + -1, 351, -1, 352, -1, 353, -1, 356, -1, 357, + -1, 358, -1, 359, -1, 362, -1, 363, -1, 364, + -1, 365, -1, 369, -1, 371, -1, 372, -1, 373, + -1, 376, -1, 379, -1, 380, -1, 381, -1, 382, + -1, 383, -1, 392, -1, 393, -1, 394, -1, 31, + -1, 33, -1, 34, -1, 45, -1, 46, -1, 53, + -1, 89, -1, 90, -1, 122, -1, 125, -1, 130, + -1, 143, -1, 165, -1, 170, -1, 171, -1, 173, + -1, 188, -1, 211, -1, 213, -1, 222, -1, 230, + -1, 232, -1, 246, -1, 250, -1, 259, -1, 261, + -1, 273, -1, 294, -1, 310, -1, 315, -1, 327, + -1, 339, -1, 340, -1, 344, -1, 346, -1, 366, + -1, 367, -1, 384, -1, 385, -1, 386, -1, 387, + -1, 388, -1, 389, -1, 390, -1, 391, -1, 26, + -1, 30, -1, 32, -1, 73, -1, 79, -1, 136, + -1, 138, -1, 152, -1, 164, -1, 176, -1, 177, + -1, 179, -1, 189, -1, 191, -1, 212, -1, 227, + -1, 247, -1, 248, -1, 249, -1, 291, -1, 313, + -1, 370, -1, 11, -1, 15, -1, 16, -1, 17, + -1, 18, -1, 19, -1, 20, -1, 21, -1, 24, + -1, 35, -1, 41, -1, 42, -1, 48, -1, 54, + -1, 55, -1, 62, -1, 69, -1, 76, -1, 77, + -1, 78, -1, 80, -1, 81, -1, 82, -1, 92, + -1, 94, -1, 100, -1, 104, -1, 105, -1, 111, + -1, 115, -1, 118, -1, 126, -1, 128, -1, 132, + -1, 134, -1, 137, -1, 141, -1, 144, -1, 146, + -1, 156, -1, 163, -1, 172, -1, 174, -1, 187, + -1, 192, -1, 196, -1, 197, -1, 214, -1, 224, + -1, 229, -1, 235, -1, 236, -1, 238, -1, 239, + -1, 240, -1, 244, -1, 245, -1, 257, -1, 265, + -1, 277, -1, 288, -1, 303, -1, 308, -1, 316, + -1, 329, -1, 332, -1, 338, -1, 341, -1, 342, + -1, 347, -1, 354, -1, 355, -1, 360, -1, 361, + -1, 368, -1, 374, -1, 375, -1, 377, -1, 378, + -1, 238, -1, 214, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 539, 539, 543, 549, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 650, 660, 671, 672, - 681, 682, 686, 691, 695, 700, 705, 709, 713, 717, - 721, 725, 729, 733, 737, 742, 746, 750, 754, 758, - 763, 768, 772, 776, 780, 784, 798, 816, 827, 844, - 856, 876, 883, 902, 909, 926, 944, 955, 956, 968, - 975, 992, 1004, 1016, 1017, 1021, 1022, 1030, 1031, 1032, - 1033, 1034, 1035, 1049, 1055, 1061, 1070, 1078, 1086, 1093, - 1100, 1108, 1119, 1127, 1135, 1146, 1154, 1162, 1169, 1179, - 1180, 1187, 1188, 1191, 1193, 1195, 1199, 1200, 1201, 1202, - 1206, 1207, 1208, 1209, 1221, 1225, 1229, 1242, 1254, 1255, - 1256, 1260, 1261, 1262, 1266, 1267, 1271, 1278, 1285, 1292, - 1299, 1309, 1310, 1315, 1321, 1327, 1333, 1339, 1349, 1359, - 1360, 1364, 1365, 1373, 1388, 1394, 1400, 1406, 1422, 1430, - 1441, 1442, 1448, 1456, 1465, 1473, 1481, 1490, 1499, 1511, - 1521, 1529, 1538, 1545, 1553, 1561, 1569, 1577, 1585, 1592, - 1599, 1607, 1614, 1621, 1629, 1637, 1645, 1653, 1661, 1668, - 1675, 1676, 1682, 1690, 1698, 1706, 1716, 1724, 1728, 1729, - 1730, 1734, 1735, 1748, 1754, 1777, 1799, 1814, 1815, 1824, - 1825, 1826, 1832, 1833, 1838, 1842, 1846, 1850, 1854, 1858, - 1862, 1866, 1870, 1874, 1883, 1887, 1891, 1895, 1900, 1904, - 1908, 1909, 1920, 1934, 1960, 1961, 1962, 1963, 1964, 1965, - 1966, 1970, 1971, 1975, 1979, 1986, 1987, 1988, 1991, 2003, - 2004, 2008, 2029, 2030, 2049, 2060, 2071, 2083, 2095, 2106, - 2125, 2154, 2160, 2166, 2172, 2190, 2200, 2201, 2205, 2206, - 2207, 2208, 2209, 2210, 2219, 2240, 2244, 2254, 2266, 2278, - 2296, 2297, 2301, 2302, 2305, 2311, 2315, 2322, 2327, 2339, - 2341, 2343, 2345, 2348, 2351, 2354, 2358, 2359, 2360, 2361, - 2362, 2365, 2366, 2371, 2372, 2373, 2374, 2377, 2378, 2379, - 2380, 2383, 2384, 2387, 2388, 2398, 2419, 2431, 2432, 2436, - 2437, 2441, 2466, 2477, 2486, 2487, 2490, 2494, 2498, 2502, - 2506, 2510, 2514, 2518, 2522, 2526, 2530, 2536, 2537, 2541, - 2542, 2545, 2546, 2553, 2565, 2575, 2589, 2590, 2598, 2599, - 2603, 2604, 2608, 2609, 2613, 2621, 2632, 2633, 2643, 2653, - 2654, 2667, 2674, 2692, 2710, 2734, 2735, 2739, 2745, 2751, - 2760, 2761, 2762, 2766, 2771, 2781, 2782, 2786, 2787, 2791, - 2792, 2793, 2797, 2803, 2804, 2805, 2806, 2807, 2811, 2812, - 2816, 2818, 2826, 2833, 2842, 2846, 2847, 2851, 2852, 2857, - 2867, 2889, 2908, 2931, 2941, 2952, 2962, 2972, 2983, 3017, - 3024, 3033, 3042, 3051, 3062, 3065, 3066, 3069, 3073, 3080, - 3081, 3082, 3083, 3084, 3087, 3088, 3091, 3094, 3095, 3098, - 3104, 3106, 3123, 3138, 3139, 3143, 3153, 3163, 3172, 3182, - 3191, 3192, 3195, 3196, 3199, 3200, 3205, 3215, 3224, 3236, - 3237, 3241, 3249, 3261, 3270, 3282, 3291, 3312, 3322, 3340, - 3349, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, - 3370, 3371, 3372, 3376, 3377, 3380, 3381, 3384, 3386, 3399, - 3430, 3439, 3448, 3457, 3467, 3476, 3485, 3495, 3504, 3513, - 3522, 3531, 3540, 3549, 3557, 3565, 3573, 3584, 3585, 3586, - 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594, 3595, 3599, - 3600, 3610, 3617, 3626, 3633, 3646, 3652, 3659, 3666, 3673, - 3680, 3687, 3694, 3701, 3708, 3715, 3722, 3729, 3736, 3743, - 3752, 3753, 3763, 3778, 3791, 3817, 3819, 3821, 3825, 3827, - 3831, 3832, 3833, 3834, 3842, 3849, 3856, 3863, 3870, 3877, - 3884, 3891, 3902, 3903, 3906, 3916, 3930, 3931, 3935, 3936, - 3941, 3957, 3970, 3980, 3992, 3993, 3996, 3997, 4012, 4028, - 4047, 4048, 4052, 4053, 4056, 4057, 4065, 4074, 4083, 4094, - 4095, 4096, 4099, 4100, 4101, 4104, 4105, 4106, 4122, 4134, - 4149, 4150, 4153, 4154, 4158, 4159, 4173, 4181, 4189, 4197, - 4205, 4216, 4217, 4218, 4219, 4225, 4229, 4244, 4245, 4251, - 4263, 4264, 4271, 4275, 4279, 4283, 4287, 4291, 4295, 4299, - 4303, 4307, 4311, 4315, 4319, 4327, 4331, 4335, 4341, 4342, - 4349, 4350, 4362, 4373, 4374, 4379, 4380, 4395, 4405, 4418, - 4428, 4441, 4451, 4464, 4471, 4473, 4475, 4480, 4482, 4493, - 4503, 4515, 4516, 4517, 4521, 4532, 4533, 4547, 4555, 4565, - 4578, 4579, 4582, 4583, 4593, 4602, 4610, 4618, 4627, 4635, - 4643, 4652, 4661, 4669, 4678, 4687, 4696, 4705, 4714, 4723, - 4731, 4739, 4747, 4755, 4763, 4771, 4781, 4782, 4792, 4801, - 4809, 4818, 4826, 4834, 4850, 4859, 4867, 4875, 4883, 4892, - 4900, 4909, 4918, 4927, 4935, 4943, 4951, 4959, 4977, 4976, - 4995, 4996, 4997, 5002, 5008, 5017, 5018, 5019, 5020, 5021, - 5025, 5026, 5029, 5030, 5031, 5032, 5036, 5037, 5038, 5043, - 5053, 5074, 5084, 5095, 5103, 5124, 5131, 5138, 5145, 5152, - 5159, 5166, 5174, 5182, 5190, 5198, 5206, 5213, 5220, 5229, - 5230, 5231, 5235, 5238, 5241, 5248, 5250, 5252, 5257, 5259, - 5271, 5282, 5300, 5306, 5312, 5318, 5328, 5344, 5354, 5355, - 5359, 5363, 5367, 5371, 5375, 5379, 5383, 5387, 5391, 5395, - 5399, 5403, 5413, 5414, 5425, 5435, 5446, 5447, 5451, 5465, - 5472, 5489, 5501, 5510, 5518, 5526, 5535, 5546, 5547, 5558, - 5568, 5578, 5588, 5598, 5608, 5616, 5637, 5660, 5667, 5675, - 5685, 5686, 5698, 5710, 5722, 5734, 5746, 5761, 5762, 5766, - 5767, 5770, 5771, 5774, 5775, 5779, 5780, 5791, 5802, 5803, - 5804, 5805, 5806, 5807, 5811, 5812, 5822, 5832, 5833, 5837, - 5838, 5839, 5840, 5850, 5858, 5875, 5876, 5886, 5892, 5898, - 5904, 5920, 5929, 5935, 5941, 5950, 5952, 5957, 5968, 5969, - 5980, 5993, 5994, 5997, 6008, 6009, 6012, 6013, 6014, 6015, - 6016, 6017, 6018, 6019, 6022, 6023, 6034, 6051, 6052, 6056, - 6057, 6061, 6069, 6096, 6107, 6108, 6118, 6129, 6130, 6131, - 6132, 6133, 6136, 6137, 6138, 6186, 6187, 6191, 6192, 6202, - 6203, 6209, 6215, 6224, 6225, 6252, 6266, 6267, 6271, 6275, - 6282, 6292, 6300, 6305, 6310, 6315, 6320, 6325, 6330, 6335, - 6342, 6343, 6346, 6347, 6348, 6355, 6356, 6357, 6358, 6362, - 6363, 6367, 6371, 6372, 6375, 6383, 6395, 6397, 6399, 6401, - 6403, 6414, 6416, 6420, 6421, 6431, 6435, 6436, 6440, 6441, - 6445, 6446, 6450, 6451, 6455, 6456, 6460, 6468, 6479, 6480, - 6485, 6491, 6509, 6510, 6514, 6515, 6525, 6529, 6534, 6541, - 6549, 6556, 6566, 6576, 6602, 6609, 6613, 6639, 6643, 6655, - 6668, 6682, 6693, 6708, 6714, 6719, 6725, 6732, 6733, 6734, - 6735, 6739, 6740, 6752, 6753, 6758, 6765, 6772, 6779, 6798, - 6802, 6809, 6819, 6824, 6825, 6830, 6831, 6839, 6847, 6852, - 6856, 6862, 6883, 6888, 6894, 6900, 6910, 6912, 6915, 6919, - 6920, 6921, 6922, 6923, 6924, 6930, 6950, 6951, 6952, 6953, - 6964, 6970, 6978, 6979, 6985, 6990, 6995, 7000, 7005, 7010, - 7015, 7020, 7026, 7032, 7038, 7045, 7065, 7074, 7078, 7086, - 7090, 7098, 7110, 7131, 7135, 7141, 7145, 7158, 7177, 7200, - 7202, 7204, 7206, 7208, 7210, 7215, 7216, 7220, 7221, 7228, - 7241, 7253, 7262, 7273, 7281, 7282, 7283, 7287, 7288, 7289, - 7290, 7291, 7292, 7293, 7295, 7297, 7300, 7303, 7305, 7308, - 7310, 7336, 7337, 7339, 7358, 7360, 7362, 7364, 7366, 7368, - 7370, 7372, 7374, 7376, 7378, 7381, 7383, 7385, 7388, 7390, - 7392, 7395, 7397, 7407, 7409, 7419, 7421, 7431, 7433, 7444, - 7456, 7466, 7478, 7498, 7505, 7512, 7519, 7526, 7530, 7537, - 7544, 7551, 7558, 7565, 7572, 7576, 7584, 7588, 7592, 7599, - 7606, 7619, 7632, 7650, 7670, 7679, 7686, 7701, 7705, 7722, - 7724, 7726, 7728, 7730, 7732, 7734, 7736, 7738, 7740, 7742, - 7744, 7746, 7748, 7750, 7752, 7754, 7758, 7763, 7767, 7771, - 7775, 7791, 7792, 7793, 7807, 7819, 7821, 7823, 7832, 7841, - 7850, 7852, 7869, 7879, 7889, 7903, 7913, 7933, 7961, 7978, - 7995, 8009, 8027, 8044, 8061, 8078, 8096, 8106, 8116, 8126, - 8136, 8138, 8148, 8163, 8174, 8187, 8206, 8219, 8229, 8239, - 8249, 8253, 8259, 8266, 8273, 8277, 8281, 8285, 8289, 8293, - 8297, 8305, 8309, 8313, 8318, 8331, 8333, 8341, 8343, 8345, - 8348, 8351, 8354, 8355, 8358, 8366, 8376, 8377, 8380, 8381, - 8382, 8395, 8396, 8397, 8400, 8401, 8402, 8405, 8406, 8409, - 8410, 8411, 8412, 8413, 8414, 8415, 8416, 8417, 8420, 8422, - 8427, 8429, 8434, 8436, 8438, 8440, 8442, 8444, 8456, 8460, - 8467, 8474, 8477, 8478, 8481, 8483, 8487, 8493, 8506, 8507, - 8508, 8509, 8510, 8511, 8512, 8513, 8522, 8526, 8533, 8540, - 8541, 8557, 8561, 8566, 8570, 8587, 8592, 8596, 8599, 8602, - 8603, 8604, 8607, 8614, 8624, 8637, 8638, 8642, 8652, 8653, - 8656, 8657, 8665, 8669, 8676, 8680, 8684, 8691, 8701, 8702, - 8706, 8707, 8710, 8711, 8722, 8723, 8727, 8728, 8736, 8747, - 8748, 8752, 8760, 8768, 8790, 8791, 8795, 8796, 8807, 8814, - 8840, 8842, 8847, 8850, 8853, 8855, 8857, 8859, 8869, 8871, - 8879, 8886, 8893, 8900, 8907, 8919, 8929, 8940, 8948, 8959, - 8969, 8973, 8977, 8985, 8986, 8987, 8989, 8990, 9006, 9007, - 9008, 9013, 9014, 9015, 9021, 9022, 9023, 9024, 9025, 9045, - 9046, 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, - 9056, 9057, 9058, 9059, 9060, 9061, 9062, 9063, 9064, 9065, - 9066, 9067, 9068, 9069, 9070, 9071, 9072, 9073, 9074, 9075, - 9076, 9077, 9078, 9079, 9080, 9081, 9082, 9083, 9084, 9085, - 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, 9095, - 9096, 9097, 9098, 9099, 9100, 9101, 9102, 9103, 9104, 9105, - 9106, 9107, 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, - 9116, 9117, 9118, 9119, 9120, 9121, 9122, 9123, 9124, 9125, - 9126, 9127, 9128, 9129, 9130, 9131, 9132, 9133, 9134, 9135, - 9136, 9137, 9138, 9139, 9140, 9141, 9142, 9143, 9144, 9145, - 9146, 9147, 9148, 9149, 9150, 9151, 9152, 9153, 9154, 9155, - 9156, 9157, 9158, 9159, 9160, 9161, 9162, 9163, 9164, 9165, - 9166, 9167, 9168, 9169, 9170, 9171, 9172, 9173, 9174, 9175, - 9176, 9177, 9178, 9179, 9180, 9181, 9182, 9183, 9184, 9185, - 9186, 9187, 9188, 9189, 9190, 9191, 9192, 9193, 9194, 9195, - 9196, 9197, 9198, 9199, 9200, 9201, 9202, 9203, 9204, 9205, - 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213, 9214, 9215, - 9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223, 9224, 9225, - 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, - 9236, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, - 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253, 9254, 9255, - 9256, 9257, 9258, 9259, 9260, 9261, 9262, 9263, 9264, 9265, - 9266, 9267, 9268, 9269, 9270, 9271, 9272, 9273, 9274, 9275, - 9276, 9277, 9291, 9292, 9293, 9294, 9295, 9296, 9297, 9298, - 9299, 9300, 9301, 9302, 9303, 9304, 9305, 9306, 9307, 9308, - 9309, 9310, 9311, 9312, 9313, 9314, 9315, 9316, 9317, 9318, - 9319, 9320, 9321, 9322, 9323, 9324, 9325, 9326, 9327, 9328, - 9329, 9330, 9331, 9332, 9333, 9334, 9335, 9349, 9350, 9351, - 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359, 9360, 9361, - 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9378, 9379, 9380, - 9381, 9382, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, - 9391, 9392, 9393, 9394, 9395, 9396, 9397, 9398, 9399, 9400, - 9401, 9402, 9403, 9404, 9405, 9406, 9407, 9408, 9409, 9410, - 9411, 9412, 9413, 9414, 9415, 9416, 9417, 9418, 9419, 9420, - 9421, 9422, 9423, 9424, 9425, 9426, 9427, 9428, 9429, 9430, - 9431, 9432, 9433, 9434, 9435, 9436, 9437, 9438, 9439, 9440, - 9441, 9442, 9443, 9444, 9445, 9446, 9447, 9448, 9449, 9450, - 9451, 9456, 9465 + 0, 596, 596, 600, 606, 615, 616, 617, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, + 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, + 660, 661, 662, 663, 664, 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, 696, 697, 698, 699, + 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 716, 726, 737, 738, 747, + 748, 752, 757, 761, 766, 771, 775, 779, 783, 787, + 791, 795, 799, 803, 808, 812, 816, 820, 824, 829, + 834, 838, 842, 846, 850, 864, 882, 893, 910, 922, + 942, 949, 968, 975, 992, 1010, 1021, 1022, 1034, 1041, + 1058, 1070, 1082, 1083, 1087, 1088, 1096, 1097, 1098, 1099, + 1100, 1101, 1115, 1121, 1127, 1136, 1144, 1152, 1159, 1166, + 1174, 1185, 1193, 1201, 1209, 1217, 1228, 1236, 1244, 1251, + 1261, 1262, 1269, 1270, 1273, 1275, 1277, 1281, 1282, 1283, + 1284, 1288, 1289, 1290, 1291, 1303, 1307, 1311, 1326, 1349, + 1350, 1351, 1355, 1356, 1357, 1361, 1362, 1366, 1373, 1380, + 1387, 1394, 1404, 1405, 1410, 1416, 1422, 1428, 1434, 1444, + 1454, 1455, 1459, 1460, 1468, 1483, 1489, 1495, 1501, 1519, + 1527, 1535, 1543, 1554, 1555, 1560, 1568, 1577, 1585, 1593, + 1602, 1611, 1623, 1633, 1641, 1650, 1657, 1664, 1672, 1680, + 1688, 1696, 1704, 1711, 1718, 1726, 1733, 1740, 1748, 1756, + 1764, 1772, 1780, 1788, 1796, 1804, 1812, 1822, 1830, 1834, + 1835, 1836, 1840, 1841, 1845, 1848, 1849, 1853, 1854, 1859, + 1863, 1867, 1872, 1887, 1893, 1916, 1938, 1953, 1954, 1963, + 1964, 1965, 1971, 1972, 1977, 1981, 1985, 1989, 1993, 1997, + 2001, 2005, 2009, 2013, 2022, 2026, 2030, 2034, 2039, 2043, + 2047, 2048, 2059, 2073, 2099, 2100, 2101, 2102, 2103, 2104, + 2105, 2109, 2110, 2114, 2118, 2125, 2126, 2127, 2130, 2142, + 2143, 2147, 2168, 2169, 2188, 2199, 2210, 2222, 2234, 2245, + 2264, 2293, 2299, 2305, 2311, 2329, 2339, 2340, 2344, 2345, + 2346, 2347, 2348, 2349, 2358, 2379, 2383, 2393, 2405, 2417, + 2435, 2436, 2440, 2441, 2444, 2450, 2454, 2462, 2467, 2479, + 2481, 2483, 2485, 2488, 2491, 2494, 2498, 2499, 2500, 2501, + 2502, 2505, 2506, 2511, 2512, 2513, 2514, 2517, 2518, 2519, + 2520, 2523, 2524, 2527, 2528, 2538, 2563, 2575, 2576, 2580, + 2581, 2585, 2601, 2602, 2603, 2616, 2627, 2636, 2637, 2640, + 2641, 2644, 2648, 2652, 2656, 2660, 2664, 2668, 2672, 2676, + 2680, 2684, 2688, 2694, 2695, 2699, 2700, 2705, 2717, 2727, + 2741, 2742, 2750, 2751, 2755, 2756, 2760, 2761, 2765, 2766, + 2770, 2778, 2789, 2790, 2800, 2810, 2811, 2824, 2831, 2847, + 2864, 2872, 2889, 2898, 2906, 2917, 2918, 2922, 2926, 2934, + 2938, 2942, 2949, 2953, 2958, 2963, 2970, 2977, 2982, 2992, + 3006, 3007, 3012, 3013, 3017, 3018, 3028, 3036, 3053, 3062, + 3070, 3086, 3098, 3099, 3100, 3110, 3118, 3135, 3154, 3172, + 3195, 3196, 3200, 3202, 3211, 3212, 3213, 3214, 3218, 3223, + 3233, 3234, 3238, 3239, 3243, 3244, 3245, 3249, 3255, 3256, + 3257, 3258, 3259, 3263, 3264, 3268, 3270, 3279, 3286, 3296, + 3300, 3301, 3305, 3306, 3311, 3321, 3343, 3362, 3385, 3395, + 3406, 3416, 3426, 3437, 3473, 3480, 3489, 3498, 3507, 3518, + 3521, 3522, 3525, 3529, 3536, 3537, 3538, 3539, 3540, 3543, + 3544, 3547, 3550, 3551, 3559, 3565, 3567, 3584, 3599, 3600, + 3604, 3613, 3622, 3631, 3641, 3650, 3651, 3654, 3655, 3658, + 3667, 3672, 3682, 3691, 3703, 3704, 3708, 3716, 3728, 3737, + 3749, 3758, 3779, 3789, 3807, 3816, 3828, 3829, 3830, 3831, + 3832, 3833, 3834, 3835, 3836, 3837, 3838, 3839, 3843, 3844, + 3847, 3848, 3851, 3853, 3866, 3877, 3878, 3879, 3904, 3913, + 3922, 3931, 3940, 3949, 3958, 3968, 3977, 3986, 3995, 4004, + 4013, 4022, 4030, 4038, 4046, 4057, 4058, 4059, 4060, 4061, + 4062, 4063, 4064, 4065, 4066, 4067, 4068, 4072, 4073, 4083, + 4090, 4099, 4106, 4119, 4125, 4132, 4139, 4146, 4153, 4160, + 4167, 4174, 4181, 4188, 4195, 4202, 4209, 4216, 4225, 4226, + 4236, 4251, 4264, 4289, 4291, 4293, 4295, 4302, 4311, 4312, + 4315, 4322, 4329, 4336, 4350, 4357, 4364, 4371, 4378, 4385, + 4392, 4399, 4406, 4413, 4424, 4425, 4428, 4438, 4452, 4453, + 4457, 4458, 4463, 4479, 4492, 4502, 4514, 4515, 4518, 4519, + 4534, 4550, 4569, 4570, 4574, 4575, 4578, 4579, 4587, 4596, + 4605, 4616, 4617, 4618, 4621, 4622, 4623, 4626, 4627, 4628, + 4644, 4656, 4669, 4684, 4685, 4688, 4689, 4693, 4694, 4702, + 4703, 4707, 4708, 4723, 4732, 4741, 4750, 4759, 4771, 4772, + 4773, 4774, 4775, 4781, 4785, 4800, 4801, 4807, 4817, 4821, + 4826, 4836, 4837, 4844, 4848, 4852, 4856, 4860, 4864, 4868, + 4872, 4876, 4880, 4884, 4888, 4892, 4900, 4904, 4908, 4912, + 4918, 4919, 4926, 4927, 4930, 4942, 4946, 4961, 4972, 4973, + 4978, 4979, 4994, 5004, 5017, 5027, 5040, 5050, 5063, 5071, + 5073, 5075, 5080, 5082, 5093, 5104, 5115, 5128, 5129, 5130, + 5134, 5145, 5146, 5160, 5168, 5178, 5191, 5192, 5195, 5196, + 5206, 5215, 5223, 5231, 5240, 5248, 5256, 5265, 5274, 5282, + 5291, 5300, 5309, 5318, 5327, 5336, 5344, 5352, 5360, 5368, + 5376, 5384, 5392, 5402, 5403, 5406, 5407, 5417, 5426, 5434, + 5443, 5451, 5459, 5467, 5483, 5492, 5500, 5508, 5516, 5525, + 5533, 5542, 5551, 5560, 5568, 5576, 5584, 5592, 5600, 5608, + 5626, 5625, 5644, 5645, 5646, 5651, 5657, 5666, 5667, 5668, + 5669, 5670, 5674, 5675, 5678, 5679, 5680, 5681, 5685, 5686, + 5687, 5692, 5702, 5723, 5731, 5740, 5746, 5765, 5772, 5779, + 5786, 5793, 5800, 5807, 5815, 5823, 5831, 5839, 5847, 5854, + 5861, 5870, 5871, 5872, 5876, 5879, 5882, 5889, 5891, 5893, + 5898, 5900, 5912, 5923, 5937, 5943, 5949, 5955, 5965, 5981, + 5991, 5992, 5996, 6000, 6004, 6008, 6012, 6016, 6020, 6024, + 6028, 6032, 6036, 6040, 6044, 6048, 6052, 6056, 6066, 6067, + 6078, 6085, 6096, 6107, 6108, 6112, 6126, 6133, 6150, 6162, + 6171, 6179, 6187, 6196, 6207, 6208, 6219, 6229, 6239, 6249, + 6259, 6269, 6277, 6298, 6321, 6329, 6338, 6349, 6350, 6362, + 6375, 6388, 6401, 6414, 6430, 6431, 6435, 6436, 6439, 6440, + 6443, 6444, 6448, 6449, 6460, 6471, 6472, 6473, 6474, 6475, + 6476, 6477, 6481, 6482, 6492, 6502, 6503, 6507, 6508, 6509, + 6510, 6520, 6528, 6545, 6546, 6556, 6562, 6568, 6574, 6590, + 6599, 6605, 6611, 6620, 6622, 6627, 6638, 6639, 6650, 6663, + 6664, 6675, 6686, 6687, 6690, 6691, 6692, 6693, 6694, 6695, + 6696, 6697, 6700, 6701, 6712, 6729, 6730, 6734, 6735, 6739, + 6747, 6775, 6786, 6787, 6797, 6808, 6809, 6810, 6811, 6812, + 6815, 6816, 6817, 6865, 6866, 6870, 6871, 6885, 6886, 6892, + 6899, 6906, 6913, 6920, 6927, 6937, 6938, 6965, 6980, 6981, + 7000, 7004, 7008, 7023, 7030, 7040, 7041, 7044, 7056, 7066, + 7074, 7079, 7084, 7089, 7094, 7099, 7104, 7109, 7116, 7117, + 7120, 7121, 7122, 7129, 7130, 7131, 7132, 7136, 7137, 7141, + 7145, 7146, 7149, 7158, 7171, 7173, 7175, 7177, 7179, 7189, + 7191, 7193, 7198, 7200, 7204, 7205, 7218, 7219, 7220, 7224, + 7232, 7237, 7238, 7243, 7244, 7248, 7249, 7253, 7254, 7258, + 7259, 7263, 7264, 7268, 7269, 7273, 7281, 7292, 7293, 7298, + 7304, 7322, 7323, 7327, 7328, 7338, 7342, 7347, 7354, 7362, + 7369, 7379, 7389, 7417, 7424, 7428, 7454, 7458, 7470, 7483, + 7497, 7508, 7523, 7529, 7534, 7540, 7547, 7548, 7549, 7550, + 7554, 7555, 7567, 7568, 7573, 7580, 7587, 7594, 7605, 7606, + 7619, 7623, 7630, 7640, 7645, 7646, 7651, 7652, 7660, 7668, + 7673, 7677, 7683, 7704, 7709, 7716, 7721, 7727, 7732, 7741, + 7743, 7746, 7750, 7751, 7752, 7753, 7754, 7755, 7760, 7790, + 7791, 7792, 7793, 7804, 7810, 7818, 7819, 7825, 7830, 7835, + 7840, 7845, 7850, 7855, 7860, 7866, 7872, 7878, 7885, 7907, + 7916, 7920, 7928, 7932, 7940, 7952, 7973, 7977, 7983, 7987, + 8000, 8019, 8042, 8044, 8046, 8048, 8050, 8052, 8057, 8058, + 8062, 8063, 8070, 8079, 8087, 8096, 8107, 8115, 8116, 8117, + 8121, 8123, 8125, 8127, 8129, 8131, 8133, 8138, 8143, 8149, + 8157, 8162, 8169, 8176, 8180, 8184, 8214, 8215, 8217, 8238, + 8240, 8242, 8244, 8246, 8248, 8250, 8252, 8254, 8256, 8258, + 8261, 8263, 8265, 8268, 8270, 8272, 8275, 8277, 8289, 8291, + 8303, 8305, 8317, 8319, 8332, 8344, 8356, 8368, 8390, 8397, + 8404, 8411, 8418, 8422, 8429, 8436, 8443, 8450, 8457, 8464, + 8468, 8476, 8480, 8489, 8496, 8503, 8516, 8529, 8548, 8569, + 8579, 8586, 8602, 8607, 8625, 8627, 8629, 8631, 8633, 8635, + 8637, 8639, 8641, 8643, 8645, 8647, 8649, 8651, 8653, 8655, + 8657, 8661, 8666, 8670, 8674, 8679, 8696, 8697, 8698, 8713, + 8725, 8727, 8729, 8739, 8749, 8759, 8767, 8785, 8797, 8809, + 8821, 8833, 8849, 8861, 8883, 8904, 8914, 8927, 8943, 8956, + 8966, 8979, 8989, 9002, 9014, 9026, 9038, 9050, 9062, 9074, + 9076, 9088, 9105, 9118, 9133, 9154, 9169, 9181, 9193, 9205, + 9209, 9216, 9224, 9232, 9236, 9240, 9244, 9248, 9252, 9256, + 9265, 9269, 9273, 9278, 9292, 9294, 9298, 9300, 9302, 9305, + 9308, 9311, 9312, 9315, 9323, 9333, 9334, 9337, 9338, 9339, + 9346, 9347, 9351, 9352, 9357, 9365, 9367, 9379, 9382, 9406, + 9407, 9410, 9411, 9420, 9424, 9429, 9432, 9447, 9476, 9480, + 9484, 9501, 9502, 9503, 9506, 9507, 9508, 9511, 9512, 9515, + 9516, 9517, 9518, 9519, 9520, 9521, 9522, 9523, 9526, 9528, + 9533, 9535, 9540, 9542, 9544, 9546, 9548, 9550, 9562, 9566, + 9572, 9573, 9576, 9580, 9584, 9590, 9591, 9596, 9600, 9607, + 9608, 9609, 9610, 9611, 9612, 9613, 9614, 9623, 9627, 9634, + 9641, 9642, 9658, 9662, 9667, 9671, 9686, 9691, 9695, 9698, + 9701, 9702, 9703, 9706, 9713, 9723, 9737, 9738, 9742, 9753, + 9754, 9757, 9758, 9766, 9770, 9777, 9781, 9785, 9792, 9802, + 9803, 9807, 9808, 9811, 9812, 9823, 9824, 9833, 9834, 9842, + 9853, 9854, 9857, 9873, 9881, 9889, 9911, 9912, 9916, 9917, + 9928, 9936, 9964, 9966, 9971, 9974, 9977, 9979, 9981, 9983, + 9993, 9995, 10003, 10007, 10011, 10015, 10019, 10028, 10035, 10043, + 10047, 10053, 10070, 10074, 10078, 10084, 10085, 10086, 10088, 10089, + 10090, 10106, 10107, 10108, 10113, 10114, 10115, 10121, 10122, 10123, + 10124, 10125, 10145, 10146, 10147, 10148, 10149, 10150, 10151, 10152, + 10153, 10154, 10155, 10156, 10157, 10158, 10159, 10160, 10161, 10162, + 10163, 10164, 10165, 10166, 10167, 10168, 10169, 10170, 10171, 10172, + 10173, 10174, 10175, 10176, 10177, 10178, 10179, 10180, 10181, 10182, + 10183, 10184, 10185, 10186, 10187, 10188, 10189, 10190, 10191, 10192, + 10193, 10194, 10195, 10196, 10197, 10198, 10199, 10200, 10201, 10202, + 10203, 10204, 10205, 10206, 10207, 10208, 10209, 10210, 10211, 10212, + 10213, 10214, 10215, 10216, 10217, 10218, 10219, 10220, 10221, 10222, + 10223, 10224, 10225, 10226, 10227, 10228, 10229, 10230, 10231, 10232, + 10233, 10234, 10235, 10236, 10237, 10238, 10239, 10240, 10241, 10242, + 10243, 10244, 10245, 10246, 10247, 10248, 10249, 10250, 10251, 10252, + 10253, 10254, 10255, 10256, 10257, 10258, 10259, 10260, 10261, 10262, + 10263, 10264, 10265, 10266, 10267, 10268, 10269, 10270, 10271, 10272, + 10273, 10274, 10275, 10276, 10277, 10278, 10279, 10280, 10281, 10282, + 10283, 10284, 10285, 10286, 10287, 10288, 10289, 10290, 10291, 10292, + 10293, 10294, 10295, 10296, 10297, 10298, 10299, 10300, 10301, 10302, + 10303, 10304, 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, + 10313, 10314, 10315, 10316, 10317, 10318, 10319, 10320, 10321, 10322, + 10323, 10324, 10325, 10326, 10327, 10328, 10329, 10330, 10331, 10332, + 10333, 10334, 10335, 10336, 10337, 10338, 10339, 10340, 10341, 10342, + 10343, 10344, 10345, 10346, 10347, 10348, 10349, 10350, 10351, 10352, + 10353, 10354, 10355, 10356, 10357, 10358, 10359, 10360, 10361, 10362, + 10363, 10364, 10365, 10366, 10367, 10368, 10369, 10370, 10371, 10372, + 10373, 10374, 10375, 10376, 10377, 10378, 10379, 10380, 10381, 10382, + 10383, 10384, 10385, 10386, 10387, 10388, 10389, 10390, 10404, 10405, + 10406, 10407, 10408, 10409, 10410, 10411, 10412, 10413, 10414, 10415, + 10416, 10417, 10418, 10419, 10420, 10421, 10422, 10423, 10424, 10425, + 10426, 10427, 10428, 10429, 10430, 10431, 10432, 10433, 10434, 10435, + 10436, 10437, 10438, 10439, 10440, 10441, 10442, 10443, 10444, 10445, + 10446, 10447, 10448, 10462, 10463, 10464, 10465, 10466, 10467, 10468, + 10469, 10470, 10471, 10472, 10473, 10474, 10475, 10476, 10477, 10478, + 10479, 10480, 10481, 10482, 10483, 10493, 10494, 10495, 10496, 10497, + 10498, 10499, 10500, 10501, 10502, 10503, 10504, 10505, 10506, 10507, + 10508, 10509, 10510, 10511, 10512, 10513, 10514, 10515, 10516, 10517, + 10518, 10519, 10520, 10521, 10522, 10523, 10524, 10525, 10526, 10527, + 10528, 10529, 10530, 10531, 10532, 10533, 10534, 10535, 10536, 10537, + 10538, 10539, 10540, 10541, 10542, 10543, 10544, 10545, 10546, 10547, + 10548, 10549, 10550, 10551, 10552, 10553, 10554, 10555, 10556, 10557, + 10558, 10559, 10560, 10561, 10562, 10563, 10564, 10565, 10566, 10567, + 10568, 10569, 10570, 10571, 10576, 10586 }; #endif @@ -2294,64 +2448,67 @@ static const char *const yytname[] = "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "AT", "AUTHORIZATION", "BACKWARD", "BEFORE", "BEGIN_P", "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", "BOTH", "BY", "CACHE", "CALLED", "CASCADE", "CASCADED", - "CASE", "CAST", "CHAIN", "CHAR_P", "CHARACTER", "CHARACTERISTICS", - "CHECK", "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", "COALESCE", - "COLLATE", "COLUMN", "COMMENT", "COMMIT", "COMMITTED", "CONCURRENTLY", - "CONFIGURATION", "CONNECTION", "CONSTRAINT", "CONSTRAINTS", "CONTENT_P", - "CONVERSION_P", "COPY", "COST", "CREATE", "CREATEDB", "CREATEROLE", - "CREATEUSER", "CROSS", "CSV", "CURRENT_P", "CURRENT_DATE", - "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", - "CURSOR", "CYCLE", "DATABASE", "DAY_P", "DEALLOCATE", "DEC", "DECIMAL_P", - "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINER", - "DELETE_P", "DELIMITER", "DELIMITERS", "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", "EXCEPT", "EXCLUDING", "EXCLUSIVE", "EXECUTE", - "EXISTS", "EXPLAIN", "EXTERNAL", "EXTRACT", "FALSE_P", "FAMILY", "FETCH", - "FIRST_P", "FLOAT_P", "FOR", "FORCE", "FOREIGN", "FORWARD", "FREEZE", - "FROM", "FULL", "FUNCTION", "GLOBAL", "GRANT", "GRANTED", "GREATEST", - "GROUP_P", "HANDLER", "HAVING", "HEADER_P", "HOLD", "HOUR_P", "IF_P", - "ILIKE", "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", "IN_P", "INCLUDING", - "INCREMENT", "INDEX", "INDEXES", "INHERIT", "INHERITS", "INITIALLY", - "INNER_P", "INOUT", "INPUT_P", "INSENSITIVE", "INSERT", "INSTEAD", - "INT_P", "INTEGER", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IS", - "ISNULL", "ISOLATION", "JOIN", "KEY", "LANCOMPILER", "LANGUAGE", - "LARGE_P", "LAST_P", "LEADING", "LEAST", "LEFT", "LEVEL", "LIKE", - "LIMIT", "LISTEN", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", - "LOCATION", "LOCK_P", "LOGIN_P", "MAPPING", "MATCH", "MAXVALUE", - "MINUTE_P", "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", - "NATIONAL", "NATURAL", "NCHAR", "NEW", "NEXT", "NO", "NOCREATEDB", - "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", "NOLOGIN_P", "NONE", - "NOSUPERUSER", "NOT", "NOTHING", "NOTIFY", "NOTNULL", "NOWAIT", "NULL_P", - "NULLIF", "NULLS_P", "NUMERIC", "OBJECT_P", "OF", "OFF", "OFFSET", - "OIDS", "OLD", "ON", "ONLY", "OPERATOR", "OPTION", "OR", "ORDER", - "OUT_P", "OUTER_P", "OVERLAPS", "OVERLAY", "OWNED", "OWNER", "PARSER", - "PARTIAL", "PASSWORD", "PLACING", "PLANS", "POSITION", "PRECISION", - "PRESERVE", "PREPARE", "PREPARED", "PRIMARY", "PRIOR", "PRIVILEGES", - "PROCEDURAL", "PROCEDURE", "QUOTE", "READ", "REAL", "REASSIGN", - "RECHECK", "REFERENCES", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", + "CASE", "CAST", "CATALOG_P", "CHAIN", "CHAR_P", "CHARACTER", + "CHARACTERISTICS", "CHECK", "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", + "COALESCE", "COLLATE", "COLUMN", "COMMENT", "COMMIT", "COMMITTED", + "CONCURRENTLY", "CONFIGURATION", "CONNECTION", "CONSTRAINT", + "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", "COPY", "COST", + "CREATE", "CREATEDB", "CREATEROLE", "CREATEUSER", "CROSS", "CSV", + "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", "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", "EXCEPT", "EXCLUDING", "EXCLUSIVE", + "EXECUTE", "EXISTS", "EXPLAIN", "EXTERNAL", "EXTRACT", "FALSE_P", + "FAMILY", "FETCH", "FIRST_P", "FLOAT_P", "FOLLOWING", "FOR", "FORCE", + "FOREIGN", "FORWARD", "FREEZE", "FROM", "FULL", "FUNCTION", "GLOBAL", + "GRANT", "GRANTED", "GREATEST", "GROUP_P", "HANDLER", "HAVING", + "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "ILIKE", "IMMEDIATE", + "IMMUTABLE", "IMPLICIT_P", "IN_P", "INCLUDING", "INCREMENT", "INDEX", + "INDEXES", "INHERIT", "INHERITS", "INITIALLY", "INNER_P", "INOUT", + "INPUT_P", "INSENSITIVE", "INSERT", "INSTEAD", "INT_P", "INTEGER", + "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IS", "ISNULL", "ISOLATION", + "JOIN", "KEY", "LANCOMPILER", "LANGUAGE", "LARGE_P", "LAST_P", + "LC_COLLATE_P", "LC_CTYPE_P", "LEADING", "LEAST", "LEFT", "LEVEL", + "LIKE", "LIMIT", "LISTEN", "LOAD", "LOCAL", "LOCALTIME", + "LOCALTIMESTAMP", "LOCATION", "LOCK_P", "LOGIN_P", "MAPPING", "MATCH", + "MAXVALUE", "MINUTE_P", "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", + "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NEW", "NEXT", "NO", + "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", "NOLOGIN_P", + "NONE", "NOSUPERUSER", "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", "OUT_P", "OUTER_P", "OVER", "OVERLAPS", "OVERLAY", + "OWNED", "OWNER", "PARSER", "PARTIAL", "PARTITION", "PASSWORD", + "PLACING", "PLANS", "POSITION", "PRECEDING", "PRECISION", "PRESERVE", + "PREPARE", "PREPARED", "PRIMARY", "PRIOR", "PRIVILEGES", "PROCEDURAL", + "PROCEDURE", "QUOTE", "RANGE", "READ", "REAL", "REASSIGN", "RECHECK", + "RECURSIVE", "REFERENCES", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNING", "RETURNS", "REVOKE", "RIGHT", "ROLE", "ROLLBACK", "ROW", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", "SEARCH", "SECOND_P", - "SECURITY", "SELECT", "SEQUENCE", "SERIALIZABLE", "SESSION", + "SECURITY", "SELECT", "SEQUENCE", "SERIALIZABLE", "SERVER", "SESSION", "SESSION_USER", "SET", "SETOF", "SHARE", "SHOW", "SIMILAR", "SIMPLE", "SMALLINT", "SOME", "STABLE", "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", "STRICT_P", "STRIP_P", "SUBSTRING", "SUPERUSER_P", "SYMMETRIC", "SYSID", "SYSTEM_P", "TABLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "THEN", "TIME", "TIMESTAMP", "TO", "TRAILING", "TRANSACTION", "TREAT", "TRIGGER", "TRIM", - "TRUE_P", "TRUNCATE", "TRUSTED", "TYPE_P", "UNCOMMITTED", "UNENCRYPTED", - "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNTIL", "UPDATE", "USER", - "USING", "VACUUM", "VALID", "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", - "VARYING", "VERBOSE", "VERSION_P", "VIEW", "VOLATILE", "WHEN", "WHERE", - "WHITESPACE_P", "WITH", "WITHOUT", "WORK", "WRITE", "XML_P", - "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", "XMLFOREST", "XMLPARSE", - "XMLPI", "XMLROOT", "XMLSERIALIZE", "YEAR_P", "YES_P", "ZONE", - "NULLS_FIRST", "NULLS_LAST", "WITH_CASCADED", "WITH_LOCAL", "WITH_CHECK", - "IDENT", "FCONST", "SCONST", "BCONST", "XCONST", "Op", "ICONST", "PARAM", - "'='", "'<'", "'>'", "POSTFIXOP", "'+'", "'-'", "'*'", "'/'", "'%'", - "'^'", "UMINUS", "'['", "']'", "'('", "')'", "TYPECAST", "'.'", "';'", - "','", "':'", "$accept", "stmtblock", "stmtmulti", "stmt", + "TRUE_P", "TRUNCATE", "TRUSTED", "TYPE_P", "UNBOUNDED", "UNCOMMITTED", + "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNTIL", + "UPDATE", "USER", "USING", "VACUUM", "VALID", "VALIDATOR", "VALUE_P", + "VALUES", "VARCHAR", "VARIADIC", "VARYING", "VERBOSE", "VERSION_P", + "VIEW", "VOLATILE", "WHEN", "WHERE", "WHITESPACE_P", "WINDOW", "WITH", + "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", "XMLATTRIBUTES", + "XMLCONCAT", "XMLELEMENT", "XMLFOREST", "XMLPARSE", "XMLPI", "XMLROOT", + "XMLSERIALIZE", "YEAR_P", "YES_P", "ZONE", "NULLS_FIRST", "NULLS_LAST", + "WITH_TIME", "IDENT", "FCONST", "SCONST", "BCONST", "XCONST", "Op", + "ICONST", "PARAM", "'='", "'<'", "'>'", "POSTFIXOP", "'+'", "'-'", "'*'", + "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "TYPECAST", + "'.'", "';'", "','", "':'", "$accept", "stmtblock", "stmtmulti", "stmt", "CreateRoleStmt", "opt_with", "OptRoleList", "OptRoleElem", "CreateUserStmt", "AlterRoleStmt", "AlterRoleSetStmt", "AlterUserStmt", "AlterUserSetStmt", "DropRoleStmt", "DropUserStmt", "CreateGroupStmt", @@ -2362,11 +2519,11 @@ static const char *const yytname[] = "VariableResetStmt", "SetResetClause", "VariableShowStmt", "ConstraintsSetStmt", "constraints_set_list", "constraints_set_mode", "CheckPointStmt", "DiscardStmt", "AlterTableStmt", "alter_table_cmds", - "alter_table_cmd", "alter_rel_cmds", "alter_rel_cmd", - "alter_column_default", "opt_drop_behavior", "alter_using", - "ClosePortalStmt", "CopyStmt", "copy_from", "copy_file_name", - "copy_opt_list", "copy_opt_item", "opt_binary", "opt_oids", - "copy_delimiter", "opt_using", "CreateStmt", "OptTemp", + "alter_table_cmd", "alter_column_default", "opt_drop_behavior", + "alter_using", "reloptions", "opt_reloptions", "reloption_list", + "reloption_elem", "ClosePortalStmt", "CopyStmt", "copy_from", + "copy_file_name", "copy_opt_list", "copy_opt_item", "opt_binary", + "opt_oids", "copy_delimiter", "opt_using", "CreateStmt", "OptTemp", "OptTableElementList", "TableElementList", "TableElement", "columnDef", "ColQualList", "ColConstraint", "ColConstraintElem", "ConstraintAttr", "TableLikeClause", "TableLikeOptionList", "TableLikeOption", @@ -2374,93 +2531,108 @@ static const char *const yytname[] = "columnElem", "key_match", "key_actions", "key_update", "key_delete", "key_action", "OptInherit", "OptWith", "OnCommitOption", "OptTableSpace", "OptConsTableSpace", "CreateAsStmt", "create_as_target", "OptCreateAs", - "CreateAsList", "CreateAsElement", "CreateSeqStmt", "AlterSeqStmt", - "OptSeqList", "OptSeqElem", "opt_by", "NumericOnly", "FloatOnly", - "IntegerOnly", "CreatePLangStmt", "opt_trusted", "handler_name", - "opt_validator", "opt_lancompiler", "DropPLangStmt", "opt_procedural", - "CreateTableSpaceStmt", "OptTableSpaceOwner", "DropTableSpaceStmt", - "CreateTrigStmt", "TriggerActionTime", "TriggerEvents", - "TriggerOneEvent", "TriggerForSpec", "TriggerForOpt", "TriggerForType", - "TriggerFuncArgs", "TriggerFuncArg", "OptConstrFromTable", - "ConstraintAttributeSpec", "ConstraintDeferrabilitySpec", - "ConstraintTimeSpec", "DropTrigStmt", "CreateAssertStmt", - "DropAssertStmt", "DefineStmt", "definition", "def_list", "def_elem", - "def_arg", "aggr_args", "old_aggr_definition", "old_aggr_list", - "old_aggr_elem", "enum_val_list", "CreateOpClassStmt", + "CreateAsList", "CreateAsElement", "opt_with_data", "CreateSeqStmt", + "AlterSeqStmt", "OptSeqOptList", "SeqOptList", "SeqOptElem", "opt_by", + "NumericOnly", "CreatePLangStmt", "opt_trusted", "handler_name", + "validator_clause", "opt_validator", "opt_lancompiler", "DropPLangStmt", + "opt_procedural", "CreateTableSpaceStmt", "OptTableSpaceOwner", + "DropTableSpaceStmt", "CreateFdwStmt", "DropFdwStmt", "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", "CreateUserMappingStmt", "auth_ident", + "DropUserMappingStmt", "AlterUserMappingStmt", "CreateTrigStmt", + "TriggerActionTime", "TriggerEvents", "TriggerOneEvent", + "TriggerForSpec", "TriggerForOpt", "TriggerForType", "TriggerFuncArgs", + "TriggerFuncArg", "OptConstrFromTable", "ConstraintAttributeSpec", + "ConstraintDeferrabilitySpec", "ConstraintTimeSpec", "DropTrigStmt", + "CreateAssertStmt", "DropAssertStmt", "DefineStmt", "definition", + "def_list", "def_elem", "def_arg", "aggr_args", "old_aggr_definition", + "old_aggr_list", "old_aggr_elem", "enum_val_list", "CreateOpClassStmt", "opclass_item_list", "opclass_item", "opt_default", "opt_opfamily", "opt_recheck", "CreateOpFamilyStmt", "AlterOpFamilyStmt", "opclass_drop_list", "opclass_drop", "DropOpClassStmt", "DropOpFamilyStmt", "DropOwnedStmt", "ReassignOwnedStmt", "DropStmt", "drop_type", "any_name_list", "any_name", "attrs", "TruncateStmt", - "CommentStmt", "comment_type", "comment_text", "FetchStmt", - "fetch_direction", "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", "IndexStmt", - "index_opt_unique", "access_method_clause", "index_params", "index_elem", - "opt_class", "opt_asc_desc", "opt_nulls_order", "CreateFunctionStmt", - "opt_or_replace", "func_args", "func_args_list", "func_arg", "arg_class", - "param_name", "func_return", "func_type", "createfunc_opt_list", - "common_func_opt_item", "createfunc_opt_item", "func_as", - "opt_definition", "AlterFunctionStmt", "alterfunc_opt_list", + "opt_restart_seqs", "CommentStmt", "comment_type", "comment_text", + "FetchStmt", "fetch_direction", "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", + "IndexStmt", "index_opt_unique", "access_method_clause", "index_params", + "index_elem", "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", "createfunc_opt_list", "common_func_opt_item", + "createfunc_opt_item", "func_as", "opt_definition", "table_func_column", + "table_func_column_list", "AlterFunctionStmt", "alterfunc_opt_list", "opt_restrict", "RemoveFuncStmt", "RemoveAggrStmt", "RemoveOperStmt", "oper_argtypes", "any_operator", "CreateCastStmt", "cast_context", "DropCastStmt", "opt_if_exists", "ReindexStmt", "reindex_type", - "opt_force", "RenameStmt", "opt_column", "AlterObjectSchemaStmt", - "AlterOwnerStmt", "RuleStmt", "@1", "RuleActionList", "RuleActionMulti", - "RuleActionStmt", "RuleActionStmtOrEmpty", "event", "opt_instead", - "DropRuleStmt", "NotifyStmt", "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_item", "opt_equal", "AlterDatabaseStmt", - "AlterDatabaseSetStmt", "alterdb_opt_list", "alterdb_opt_item", - "DropdbStmt", "CreateDomainStmt", "AlterDomainStmt", "opt_as", - "AlterTSDictionaryStmt", "AlterTSConfigurationStmt", - "CreateConversionStmt", "ClusterStmt", "cluster_index_specification", - "VacuumStmt", "AnalyzeStmt", "analyze_keyword", "opt_verbose", - "opt_full", "opt_freeze", "opt_name_list", "ExplainStmt", - "ExplainableStmt", "opt_analyze", "PrepareStmt", "prep_type_clause", - "PreparableStmt", "ExecuteStmt", "execute_param_clause", - "DeallocateStmt", "InsertStmt", "insert_rest", "insert_column_list", - "insert_column_item", "returning_clause", "DeleteStmt", "using_clause", - "LockStmt", "opt_lock", "lock_type", "opt_nowait", "UpdateStmt", - "set_clause_list", "set_clause", "single_set_clause", - "multiple_set_clause", "set_target", "set_target_list", - "DeclareCursorStmt", "cursor_options", "opt_hold", "SelectStmt", - "select_with_parens", "select_no_parens", "select_clause", - "simple_select", "into_clause", "OptTempTableName", "opt_table", - "opt_all", "opt_distinct", "opt_sort_clause", "sort_clause", - "sortby_list", "sortby", "select_limit", "opt_select_limit", - "select_limit_value", "select_offset_value", "group_clause", + "opt_force", "RenameStmt", "opt_column", "opt_set_data", + "AlterObjectSchemaStmt", "AlterOwnerStmt", "RuleStmt", "@1", + "RuleActionList", "RuleActionMulti", "RuleActionStmt", + "RuleActionStmtOrEmpty", "event", "opt_instead", "DropRuleStmt", + "NotifyStmt", "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_item", + "opt_equal", "AlterDatabaseStmt", "AlterDatabaseSetStmt", + "alterdb_opt_list", "alterdb_opt_item", "DropdbStmt", "CreateDomainStmt", + "AlterDomainStmt", "opt_as", "AlterTSDictionaryStmt", + "AlterTSConfigurationStmt", "CreateConversionStmt", "ClusterStmt", + "cluster_index_specification", "VacuumStmt", "AnalyzeStmt", + "analyze_keyword", "opt_verbose", "opt_full", "opt_freeze", + "opt_name_list", "ExplainStmt", "ExplainableStmt", "opt_analyze", + "PrepareStmt", "prep_type_clause", "PreparableStmt", "ExecuteStmt", + "execute_param_clause", "DeallocateStmt", "InsertStmt", "insert_rest", + "insert_column_list", "insert_column_item", "returning_clause", + "DeleteStmt", "using_clause", "LockStmt", "opt_lock", "lock_type", + "opt_nowait", "UpdateStmt", "set_clause_list", "set_clause", + "single_set_clause", "multiple_set_clause", "set_target", + "set_target_list", "DeclareCursorStmt", "cursor_options", "opt_hold", + "SelectStmt", "select_with_parens", "select_no_parens", "select_clause", + "simple_select", "with_clause", "cte_list", "common_table_expr", + "into_clause", "OptTempTableName", "opt_table", "opt_all", + "opt_distinct", "opt_sort_clause", "sort_clause", "sortby_list", + "sortby", "select_limit", "opt_select_limit", "select_limit_value", + "opt_select_fetch_first_value", "select_offset_value", + "select_offset_value2", "row_or_rows", "first_or_next", "group_clause", "having_clause", "for_locking_clause", "opt_for_locking_clause", "for_locking_items", "for_locking_item", "locked_rels_list", "values_clause", "from_clause", "from_list", "table_ref", "joined_table", "alias_clause", "join_type", "join_outer", "join_qual", "relation_expr", - "relation_expr_opt_alias", "func_table", "where_clause", - "where_or_current_clause", "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", - "ConstInterval", "opt_timezone", "opt_interval", "a_expr", "b_expr", - "c_expr", "func_expr", "xml_root_version", "opt_xml_root_standalone", - "xml_attributes", "xml_attribute_list", "xml_attribute_el", - "document_or_content", "xml_whitespace_option", "row", "sub_type", - "all_Op", "MathOp", "qual_Op", "qual_all_Op", "subquery_Op", "expr_list", - "extract_list", "type_list", "array_expr_list", "array_expr", - "extract_arg", "overlay_list", "overlay_placing", "position_list", - "substr_list", "substr_from", "substr_for", "trim_list", "in_expr", - "case_expr", "when_clause_list", "when_clause", "case_default", - "case_arg", "columnref", "indirection_el", "indirection", - "opt_indirection", "opt_asymmetric", "ctext_expr", "ctext_expr_list", - "ctext_row", "target_list", "target_el", "relation_name", - "qualified_name_list", "qualified_name", "name_list", "name", - "database_name", "access_method", "attr_name", "index_name", "file_name", - "func_name", "AexprConst", "Iconst", "Sconst", "RoleId", "SignedIconst", - "ColId", "type_function_name", "ColLabel", "unreserved_keyword", + "relation_expr_list", "relation_expr_opt_alias", "func_table", + "where_clause", "where_or_current_clause", "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", "ConstInterval", "opt_timezone", "opt_interval", + "interval_second", "a_expr", "b_expr", "c_expr", "func_expr", + "xml_root_version", "opt_xml_root_standalone", "xml_attributes", + "xml_attribute_list", "xml_attribute_el", "document_or_content", + "xml_whitespace_option", "window_clause", "window_definition_list", + "window_definition", "over_clause", "window_specification", + "opt_existing_window_name", "opt_partition_clause", "opt_frame_clause", + "frame_extent", "frame_bound", "row", "sub_type", "all_Op", "MathOp", + "qual_Op", "qual_all_Op", "subquery_Op", "expr_list", "type_list", + "array_expr", "array_expr_list", "extract_list", "extract_arg", + "overlay_list", "overlay_placing", "position_list", "substr_list", + "substr_from", "substr_for", "trim_list", "in_expr", "case_expr", + "when_clause_list", "when_clause", "case_default", "case_arg", + "columnref", "indirection_el", "indirection", "opt_indirection", + "opt_asymmetric", "ctext_expr", "ctext_expr_list", "ctext_row", + "target_list", "target_el", "relation_name", "qualified_name_list", + "qualified_name", "name_list", "name", "database_name", "access_method", + "attr_name", "index_name", "file_name", "func_name", "AexprConst", + "Iconst", "Sconst", "RoleId", "SignedIconst", "ColId", + "type_function_name", "ColLabel", "unreserved_keyword", "col_name_keyword", "type_func_name_keyword", "reserved_keyword", "SpecialRuleRelation", 0 }; @@ -2509,197 +2681,216 @@ static const unsigned short int yytoknum[] = 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 61, 60, - 62, 643, 43, 45, 42, 47, 37, 94, 644, 91, - 93, 40, 41, 645, 46, 59, 44, 58 + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 660, 61, 60, 62, 661, + 43, 45, 42, 47, 37, 94, 662, 91, 93, 40, + 41, 663, 46, 59, 44, 58 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned short int yyr1[] = { - 0, 408, 409, 410, 410, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 412, 413, 413, - 414, 414, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 415, 415, 415, 416, 417, 418, 419, - 420, 421, 421, 422, 422, 423, 424, 425, 425, 426, - 426, 427, 427, 428, 428, 429, 429, 430, 430, 430, - 430, 430, 430, 431, 431, 431, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, 432, 433, - 433, 434, 434, 435, 435, 435, 436, 436, 436, 436, - 437, 437, 437, 437, 438, 438, 438, 438, 438, 438, - 438, 439, 439, 439, 440, 440, 441, 441, 441, 441, - 441, 442, 442, 443, 443, 443, 443, 443, 444, 445, - 445, 446, 446, 447, 448, 448, 448, 448, 449, 449, - 450, 450, 451, 451, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, - 452, 452, 453, 453, 453, 453, 454, 454, 455, 455, - 455, 456, 456, 457, 457, 458, 458, 459, 459, 460, - 460, 460, 461, 461, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 463, 463, 464, 464, 465, 465, - 466, 466, 467, 467, 468, 468, 468, 468, 468, 468, - 468, 469, 469, 470, 470, 471, 471, 471, 472, 473, - 473, 474, 474, 474, 475, 475, 475, 475, 475, 475, - 475, 476, 476, 476, 476, 477, 478, 478, 479, 479, - 479, 479, 479, 479, 480, 480, 481, 481, 481, 481, - 482, 482, 483, 483, 484, 485, 485, 485, 485, 486, - 486, 486, 486, 486, 487, 488, 489, 489, 489, 489, - 489, 490, 490, 491, 491, 491, 491, 492, 492, 492, - 492, 493, 493, 494, 494, 495, 496, 497, 497, 498, - 498, 499, 500, 501, 502, 502, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 504, 504, 505, - 505, 506, 506, 507, 508, 508, 509, 509, 510, 510, - 511, 511, 512, 512, 513, 513, 514, 514, 515, 516, - 516, 517, 517, 518, 518, 519, 519, 520, 520, 520, - 521, 521, 521, 522, 522, 523, 523, 524, 524, 525, - 525, 525, 526, 526, 526, 526, 526, 526, 527, 527, - 528, 528, 528, 528, 528, 529, 529, 530, 530, 531, - 531, 532, 533, 534, 534, 534, 534, 534, 534, 534, - 534, 534, 534, 534, 535, 536, 536, 537, 537, 538, - 538, 538, 538, 538, 539, 539, 540, 541, 541, 542, - 543, 543, 544, 545, 545, 546, 546, 546, 546, 546, - 547, 547, 548, 548, 549, 549, 550, 551, 551, 552, - 552, 553, 553, 554, 554, 555, 555, 556, 557, 558, - 558, 559, 559, 559, 559, 559, 559, 559, 559, 559, - 559, 559, 559, 560, 560, 561, 561, 562, 562, 563, - 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, - 564, 564, 564, 564, 564, 564, 564, 565, 565, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 565, 566, - 566, 567, 567, 567, 567, 568, 568, 568, 568, 568, - 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, - 569, 569, 570, 571, 571, 572, 572, 572, 573, 573, - 574, 574, 574, 574, 575, 575, 575, 575, 575, 575, - 575, 575, 576, 576, 577, 577, 578, 578, 579, 579, - 580, 581, 582, 582, 583, 583, 584, 584, 585, 585, - 586, 586, 587, 587, 588, 588, 589, 589, 589, 590, - 590, 590, 591, 591, 591, 592, 592, 592, 593, 593, - 594, 594, 595, 595, 596, 596, 597, 597, 597, 597, - 597, 598, 598, 598, 598, 599, 600, 601, 601, 601, - 602, 602, 603, 603, 603, 603, 603, 603, 603, 603, - 603, 603, 603, 603, 603, 604, 604, 604, 605, 605, - 606, 606, 607, 608, 608, 609, 609, 610, 610, 611, - 611, 612, 612, 613, 613, 613, 613, 614, 614, 615, - 615, 616, 616, 616, 617, 618, 618, 619, 619, 619, - 620, 620, 621, 621, 622, 622, 622, 622, 622, 622, - 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, - 622, 622, 622, 622, 622, 622, 623, 623, 624, 624, - 624, 624, 624, 624, 625, 625, 625, 625, 625, 625, - 625, 625, 625, 625, 625, 625, 625, 625, 627, 626, - 628, 628, 628, 629, 629, 630, 630, 630, 630, 630, - 631, 631, 632, 632, 632, 632, 633, 633, 633, 634, - 634, 635, 636, 637, 637, 638, 638, 638, 638, 638, - 638, 638, 638, 638, 638, 638, 638, 638, 638, 639, - 639, 639, 640, 640, 640, 641, 641, 641, 642, 642, - 643, 643, 644, 644, 644, 644, 645, 646, 647, 647, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 649, 649, 650, 651, 652, 652, 653, 654, - 654, 655, 656, 656, 656, 656, 656, 657, 657, 658, - 659, 659, 659, 659, 659, 659, 660, 661, 661, 661, - 662, 662, 663, 663, 663, 664, 664, 665, 665, 666, - 666, 667, 667, 668, 668, 669, 669, 670, 671, 671, - 671, 671, 671, 671, 672, 672, 673, 674, 674, 675, - 675, 675, 675, 676, 676, 677, 677, 678, 678, 678, - 678, 679, 680, 680, 680, 681, 681, 682, 683, 683, - 684, 685, 685, 686, 687, 687, 688, 688, 688, 688, - 688, 688, 688, 688, 689, 689, 690, 691, 691, 692, - 692, 693, 694, 695, 696, 696, 697, 698, 698, 698, - 698, 698, 699, 699, 699, 700, 700, 701, 701, 702, - 702, 702, 702, 703, 703, 704, 704, 704, 704, 704, - 705, 705, 706, 706, 706, 706, 706, 706, 706, 706, - 707, 707, 708, 708, 708, 709, 709, 709, 709, 710, - 710, 711, 712, 712, 713, 713, 714, 714, 714, 714, - 714, 715, 715, 716, 716, 717, 718, 718, 719, 719, - 720, 720, 721, 721, 722, 722, 723, 723, 724, 724, - 725, 725, 726, 726, 727, 727, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 729, 729, 729, - 729, 729, 729, 730, 730, 730, 730, 731, 731, 731, - 731, 732, 732, 733, 733, 734, 734, 734, 734, 735, - 735, 735, 736, 737, 737, 738, 738, 738, 738, 739, - 739, 740, 741, 741, 741, 741, 742, 742, 742, 743, - 743, 743, 743, 743, 743, 743, 744, 744, 744, 744, - 745, 745, 746, 746, 747, 747, 747, 747, 747, 747, - 747, 747, 747, 747, 747, 748, 748, 749, 749, 750, - 750, 751, 752, 753, 753, 754, 754, 755, 756, 757, - 757, 757, 757, 757, 757, 758, 758, 759, 759, 760, - 760, 760, 760, 761, 762, 762, 762, 763, 763, 763, - 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, - 763, 764, 764, 764, 764, 764, 764, 764, 764, 764, - 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, - 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, - 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, - 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, - 764, 764, 764, 764, 764, 764, 764, 764, 764, 765, - 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, - 765, 766, 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 768, 768, 769, 769, 769, - 769, 770, 771, 771, 772, 772, 773, 773, 774, 774, - 774, 775, 775, 775, 776, 776, 776, 777, 777, 778, - 778, 778, 778, 778, 778, 778, 778, 778, 779, 779, - 780, 780, 781, 781, 781, 781, 781, 781, 782, 782, - 783, 783, 784, 784, 785, 785, 786, 786, 787, 787, - 787, 787, 787, 787, 787, 787, 788, 788, 789, 790, - 790, 791, 791, 791, 791, 791, 791, 792, 793, 794, - 794, 794, 795, 795, 796, 797, 797, 798, 799, 799, - 800, 800, 801, 801, 802, 802, 802, 802, 803, 803, - 804, 804, 805, 805, 806, 806, 807, 807, 808, 809, - 809, 810, 810, 810, 811, 811, 812, 812, 813, 813, - 814, 814, 815, 816, 817, 818, 819, 820, 821, 821, + 0, 426, 427, 428, 428, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 430, 431, 431, 432, + 432, 433, 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 434, 435, 436, 437, 438, + 439, 439, 440, 440, 441, 442, 443, 443, 444, 444, + 445, 445, 446, 446, 447, 447, 448, 448, 448, 448, + 448, 448, 449, 449, 449, 450, 450, 450, 450, 450, + 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, + 451, 451, 452, 452, 453, 453, 453, 454, 454, 454, + 454, 455, 455, 455, 455, 456, 456, 456, 456, 456, + 456, 456, 457, 457, 457, 458, 458, 459, 459, 459, + 459, 459, 460, 460, 461, 461, 461, 461, 461, 462, + 463, 463, 464, 464, 465, 466, 466, 466, 466, 467, + 467, 467, 467, 468, 468, 469, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 470, 470, 471, + 471, 471, 472, 472, 473, 474, 474, 475, 475, 476, + 476, 476, 476, 477, 477, 478, 478, 479, 479, 480, + 480, 480, 481, 481, 482, 482, 482, 482, 482, 482, + 482, 482, 482, 482, 483, 483, 484, 484, 485, 485, + 486, 486, 487, 487, 488, 488, 488, 488, 488, 488, + 488, 489, 489, 490, 490, 491, 491, 491, 492, 493, + 493, 494, 494, 494, 495, 495, 495, 495, 495, 495, + 495, 496, 496, 496, 496, 497, 498, 498, 499, 499, + 499, 499, 499, 499, 500, 500, 501, 501, 501, 501, + 502, 502, 503, 503, 504, 505, 505, 505, 505, 506, + 506, 506, 506, 506, 507, 508, 509, 509, 509, 509, + 509, 510, 510, 511, 511, 511, 511, 512, 512, 512, + 512, 513, 513, 514, 514, 515, 516, 517, 517, 518, + 518, 519, 520, 520, 520, 521, 522, 523, 523, 524, + 524, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 526, 526, 527, 527, 527, 528, 528, + 529, 529, 530, 530, 531, 531, 532, 532, 533, 533, + 534, 534, 535, 535, 536, 537, 537, 538, 538, 539, + 540, 540, 541, 541, 541, 542, 542, 543, 543, 544, + 545, 545, 546, 546, 546, 546, 547, 548, 549, 550, + 551, 551, 552, 552, 553, 553, 554, 554, 555, 555, + 555, 556, 557, 557, 557, 558, 558, 559, 560, 560, + 561, 561, 562, 562, 563, 563, 563, 563, 564, 564, + 565, 565, 566, 566, 567, 567, 567, 568, 568, 568, + 568, 568, 568, 569, 569, 570, 570, 570, 570, 570, + 571, 571, 572, 572, 573, 573, 574, 575, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 577, + 578, 578, 579, 579, 580, 580, 580, 580, 580, 581, + 581, 582, 583, 583, 584, 585, 585, 586, 587, 587, + 588, 588, 588, 588, 588, 589, 589, 590, 590, 591, + 591, 592, 593, 593, 594, 594, 595, 595, 596, 596, + 597, 597, 598, 599, 600, 600, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 602, 602, + 603, 603, 604, 604, 605, 606, 606, 606, 607, 607, + 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, + 607, 607, 607, 607, 607, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 609, 609, 610, + 610, 610, 610, 611, 611, 611, 611, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 612, 612, + 613, 614, 614, 615, 615, 615, 615, 615, 616, 616, + 617, 617, 617, 617, 618, 618, 618, 618, 618, 618, + 618, 618, 618, 618, 619, 619, 620, 620, 621, 621, + 622, 622, 623, 624, 625, 625, 626, 626, 627, 627, + 628, 628, 629, 629, 630, 630, 631, 631, 632, 632, + 632, 633, 633, 633, 634, 634, 634, 635, 635, 635, + 636, 636, 636, 637, 637, 638, 638, 639, 639, 640, + 640, 641, 641, 642, 642, 642, 642, 642, 643, 643, + 643, 643, 643, 644, 645, 646, 646, 646, 647, 647, + 647, 648, 648, 649, 649, 649, 649, 649, 649, 649, + 649, 649, 649, 649, 649, 649, 650, 650, 650, 650, + 651, 651, 652, 652, 653, 654, 654, 655, 656, 656, + 657, 657, 658, 658, 659, 659, 660, 660, 661, 661, + 661, 661, 662, 662, 663, 663, 663, 664, 664, 664, + 665, 666, 666, 667, 667, 667, 668, 668, 669, 669, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 671, 671, 672, 672, 673, 673, 673, + 673, 673, 673, 673, 674, 674, 674, 674, 674, 674, + 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, + 676, 675, 677, 677, 677, 678, 678, 679, 679, 679, + 679, 679, 680, 680, 681, 681, 681, 681, 682, 682, + 682, 683, 683, 684, 685, 686, 686, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, + 687, 688, 688, 688, 689, 689, 689, 690, 690, 690, + 691, 691, 692, 692, 693, 693, 693, 693, 694, 695, + 696, 696, 697, 697, 697, 697, 697, 697, 697, 697, + 697, 697, 697, 697, 697, 697, 697, 697, 698, 698, + 699, 699, 700, 701, 701, 702, 703, 703, 704, 705, + 705, 705, 705, 705, 706, 706, 707, 708, 708, 708, + 708, 708, 708, 709, 710, 710, 710, 711, 711, 712, + 712, 712, 713, 713, 714, 714, 715, 715, 716, 716, + 717, 717, 718, 718, 719, 720, 720, 720, 720, 720, + 720, 720, 721, 721, 722, 723, 723, 724, 724, 724, + 724, 725, 725, 726, 726, 727, 727, 727, 727, 728, + 729, 729, 729, 730, 730, 731, 732, 732, 733, 734, + 734, 735, 736, 736, 737, 737, 737, 737, 737, 737, + 737, 737, 738, 738, 739, 740, 740, 741, 741, 742, + 743, 744, 745, 745, 746, 747, 747, 747, 747, 747, + 748, 748, 748, 749, 749, 750, 750, 751, 751, 751, + 751, 751, 751, 751, 751, 752, 752, 753, 753, 753, + 753, 753, 753, 754, 754, 755, 755, 756, 757, 757, + 758, 758, 758, 758, 758, 758, 758, 758, 759, 759, + 760, 760, 760, 761, 761, 761, 761, 762, 762, 763, + 764, 764, 765, 765, 766, 766, 766, 766, 766, 766, + 766, 766, 767, 767, 768, 768, 769, 769, 769, 770, + 771, 772, 772, 773, 773, 774, 774, 775, 775, 776, + 776, 777, 777, 778, 778, 779, 779, 780, 780, 781, + 781, 782, 782, 783, 783, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 785, 785, 785, 785, + 785, 785, 786, 786, 786, 786, 787, 787, 787, 787, + 788, 788, 789, 789, 790, 790, 790, 790, 791, 791, + 792, 792, 792, 793, 794, 794, 795, 795, 795, 795, + 796, 796, 797, 798, 798, 798, 798, 798, 798, 799, + 799, 799, 800, 800, 800, 800, 800, 800, 800, 801, + 801, 801, 801, 802, 802, 803, 803, 804, 804, 804, + 804, 804, 804, 804, 804, 804, 804, 804, 805, 805, + 806, 806, 807, 807, 808, 809, 810, 810, 811, 811, + 812, 813, 814, 814, 814, 814, 814, 814, 815, 815, + 816, 816, 817, 817, 817, 817, 818, 819, 819, 819, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 821, 821, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 823, 824, 825, 826, 826, 827, 827, - 827, 828, 828, 828, 829, 829, 829, 829, 829, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 831, 831, 831, 831, 831, 831, 831, 831, - 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, - 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, - 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, - 831, 831, 831, 831, 831, 831, 831, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 834, 834 + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 823, 823, 823, 823, 823, 823, + 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, + 823, 823, 823, 823, 823, 823, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 825, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 826, 826, 827, 827, 827, 827, + 828, 829, 829, 830, 830, 831, 831, 832, 832, 832, + 833, 833, 834, 834, 835, 836, 836, 836, 837, 838, + 838, 839, 839, 840, 840, 840, 841, 841, 842, 842, + 842, 843, 843, 843, 844, 844, 844, 845, 845, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 847, 847, + 848, 848, 849, 849, 849, 849, 849, 849, 850, 850, + 851, 851, 852, 852, 852, 853, 853, 854, 854, 855, + 855, 855, 855, 855, 855, 855, 855, 856, 856, 857, + 858, 858, 859, 859, 859, 859, 859, 859, 860, 861, + 862, 862, 862, 863, 863, 864, 865, 865, 866, 867, + 867, 868, 868, 869, 869, 870, 870, 870, 870, 871, + 871, 872, 872, 873, 873, 874, 874, 875, 875, 876, + 877, 877, 878, 878, 878, 878, 879, 879, 880, 880, + 881, 881, 882, 882, 883, 884, 885, 886, 887, 888, + 889, 889, 890, 890, 890, 890, 890, 890, 890, 890, + 890, 890, 890, 890, 890, 891, 892, 893, 894, 894, + 894, 895, 895, 895, 896, 896, 896, 897, 897, 897, + 897, 897, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 900, 900, 900, 900, 900, 900, 900, + 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + 900, 900, 900, 900, 900, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, + 901, 901, 901, 901, 902, 902 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -2714,24 +2905,26 @@ static const unsigned char yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 0, - 2, 0, 2, 2, 3, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 2, 2, 2, 2, 3, 3, 5, 5, 4, 5, - 4, 3, 5, 3, 5, 5, 6, 1, 1, 3, - 5, 6, 4, 1, 0, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 5, 2, 2, 3, 3, 3, 1, - 3, 1, 3, 1, 1, 1, 2, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 3, 6, 1, 1, - 1, 1, 1, 0, 1, 1, 2, 3, 4, 3, - 2, 2, 1, 2, 3, 4, 3, 2, 4, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, - 1, 3, 3, 4, 6, 6, 6, 6, 4, 6, - 2, 4, 3, 3, 3, 3, 4, 4, 3, 3, - 3, 3, 3, 3, 4, 4, 3, 2, 3, 1, - 1, 3, 3, 3, 2, 2, 3, 2, 1, 1, - 0, 2, 0, 2, 2, 10, 6, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 5, 1, 0, 2, + 0, 2, 2, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, + 2, 2, 2, 3, 3, 5, 5, 4, 5, 4, + 3, 5, 3, 5, 5, 6, 1, 1, 3, 5, + 6, 4, 1, 0, 2, 0, 1, 1, 1, 1, + 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 5, 2, 2, 2, 2, 3, 3, 3, + 1, 3, 1, 3, 1, 1, 1, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 3, 6, 1, + 1, 1, 1, 1, 0, 1, 1, 2, 3, 4, + 3, 2, 2, 1, 2, 3, 4, 3, 2, 4, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, + 4, 4, 4, 1, 3, 3, 4, 6, 6, 6, + 6, 4, 7, 2, 4, 3, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, + 3, 2, 3, 3, 3, 2, 2, 3, 2, 1, + 1, 0, 2, 0, 3, 2, 0, 1, 3, 3, + 1, 5, 3, 2, 2, 10, 6, 1, 1, 1, 1, 1, 2, 0, 1, 1, 3, 3, 1, 1, 3, 3, 3, 4, 1, 0, 2, 0, 3, 0, 1, 0, 11, 12, 1, 1, 2, 2, 2, 2, @@ -2742,112 +2935,126 @@ static const unsigned char yyr2[] = 3, 0, 1, 3, 1, 2, 2, 2, 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, 6, 5, 3, 0, 1, - 3, 1, 5, 4, 2, 0, 2, 1, 2, 3, - 2, 2, 2, 2, 3, 3, 3, 1, 0, 1, - 1, 1, 2, 1, 5, 9, 1, 0, 1, 2, - 2, 0, 2, 0, 5, 7, 1, 0, 6, 2, - 0, 3, 5, 14, 19, 1, 1, 1, 3, 5, - 1, 1, 1, 3, 0, 1, 0, 1, 1, 1, - 3, 0, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 2, 1, 2, 0, 2, 1, 2, 2, 6, - 8, 8, 4, 5, 4, 4, 4, 3, 7, 8, - 6, 6, 6, 6, 3, 1, 3, 3, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, - 1, 3, 13, 1, 3, 4, 7, 4, 7, 2, - 1, 0, 2, 0, 1, 0, 6, 8, 8, 1, - 3, 5, 5, 7, 9, 7, 9, 5, 6, 6, - 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 3, 3, 3, 1, 3, 1, 2, 2, 3, 4, - 6, 7, 7, 9, 8, 8, 6, 8, 9, 9, - 7, 10, 7, 8, 8, 8, 8, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 2, 4, 2, 0, 1, 1, 1, 1, - 2, 2, 1, 1, 1, 2, 2, 1, 2, 2, - 1, 1, 7, 7, 10, 1, 1, 2, 1, 3, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 1, 3, 1, 2, 3, 0, 1, 3, - 2, 6, 6, 9, 3, 0, 3, 0, 13, 14, - 1, 0, 2, 0, 1, 3, 4, 4, 6, 1, - 2, 0, 1, 1, 0, 1, 1, 0, 9, 7, - 2, 0, 3, 2, 1, 3, 3, 3, 2, 2, - 1, 1, 1, 1, 2, 1, 1, 1, 4, 5, - 1, 2, 4, 5, 1, 1, 1, 1, 3, 3, - 2, 2, 2, 2, 1, 2, 2, 1, 1, 3, - 2, 0, 5, 1, 2, 1, 0, 5, 7, 5, - 7, 7, 9, 1, 3, 3, 3, 1, 3, 11, - 10, 2, 2, 0, 9, 2, 0, 4, 4, 4, - 1, 1, 1, 0, 7, 6, 6, 6, 6, 7, - 9, 9, 6, 6, 6, 6, 6, 8, 8, 6, - 6, 6, 8, 8, 8, 8, 1, 0, 7, 6, + 0, 2, 0, 4, 0, 7, 5, 3, 0, 1, + 3, 1, 2, 3, 0, 5, 4, 1, 0, 1, + 2, 2, 1, 2, 3, 2, 2, 2, 2, 3, + 3, 1, 3, 1, 0, 1, 2, 1, 5, 9, + 1, 0, 1, 2, 2, 2, 1, 0, 2, 0, + 5, 7, 1, 0, 6, 2, 0, 3, 5, 7, + 6, 8, 7, 6, 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, 8, 1, 1, 1, 7, 9, 8, 14, 19, + 1, 1, 1, 3, 1, 1, 1, 1, 3, 0, + 1, 0, 1, 1, 1, 3, 0, 1, 1, 1, + 1, 1, 1, 2, 0, 1, 2, 1, 2, 0, + 2, 1, 2, 2, 6, 8, 8, 4, 5, 4, + 4, 4, 3, 7, 8, 6, 6, 6, 6, 3, + 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, + 3, 3, 1, 3, 3, 1, 3, 13, 1, 3, + 4, 5, 4, 7, 2, 1, 0, 2, 0, 1, + 0, 6, 8, 8, 1, 3, 5, 5, 7, 9, + 7, 9, 5, 6, 6, 4, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 1, 3, + 1, 2, 2, 3, 5, 2, 2, 0, 6, 7, + 7, 7, 8, 8, 6, 8, 9, 9, 7, 10, + 7, 8, 8, 8, 8, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 2, 4, 2, 0, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 2, 2, 1, 2, 2, 1, 1, + 7, 7, 10, 1, 1, 2, 4, 5, 1, 3, + 2, 2, 2, 2, 1, 2, 2, 4, 3, 2, + 2, 2, 2, 2, 1, 3, 1, 2, 3, 0, + 1, 3, 2, 6, 6, 9, 3, 0, 3, 0, + 13, 14, 1, 0, 2, 0, 1, 3, 4, 4, + 6, 1, 2, 0, 1, 1, 0, 1, 1, 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, 2, 4, 5, 1, 1, 1, 1, 3, + 3, 2, 2, 2, 2, 1, 2, 2, 1, 1, + 1, 3, 2, 0, 2, 1, 3, 5, 1, 2, + 1, 0, 5, 7, 5, 7, 5, 7, 3, 5, + 5, 5, 1, 3, 11, 10, 10, 2, 2, 0, + 9, 2, 0, 4, 4, 4, 1, 1, 1, 0, + 7, 6, 6, 6, 6, 7, 9, 9, 6, 6, + 6, 6, 6, 8, 8, 6, 6, 6, 8, 8, + 8, 8, 6, 1, 0, 2, 0, 7, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 7, - 9, 9, 9, 6, 6, 6, 8, 8, 0, 14, - 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 1, 1, 1, 1, 0, 6, - 8, 2, 2, 2, 2, 2, 3, 3, 2, 2, - 2, 2, 3, 2, 5, 4, 3, 3, 3, 1, - 1, 0, 3, 2, 2, 1, 3, 2, 1, 0, - 8, 10, 2, 3, 3, 0, 2, 5, 2, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 3, 3, 1, 0, 5, 4, 2, 0, 4, 3, - 5, 6, 4, 6, 6, 5, 7, 1, 0, 6, - 11, 11, 11, 13, 9, 11, 10, 3, 1, 4, - 2, 0, 4, 5, 5, 2, 4, 1, 1, 1, - 0, 1, 0, 1, 0, 3, 0, 4, 1, 1, - 1, 1, 1, 1, 1, 0, 5, 3, 0, 1, - 1, 1, 1, 3, 8, 3, 0, 2, 3, 2, - 3, 5, 1, 4, 2, 1, 3, 2, 2, 0, - 6, 2, 0, 5, 3, 0, 2, 2, 2, 3, - 1, 3, 1, 2, 1, 0, 7, 1, 3, 1, - 1, 3, 5, 2, 1, 3, 7, 0, 3, 2, - 2, 2, 0, 2, 2, 1, 1, 3, 3, 1, - 2, 4, 4, 1, 1, 8, 1, 4, 4, 4, - 2, 0, 3, 3, 4, 4, 4, 4, 2, 1, - 1, 0, 1, 1, 0, 1, 5, 1, 0, 1, - 0, 3, 1, 3, 4, 3, 4, 4, 2, 2, - 4, 1, 0, 1, 1, 1, 3, 0, 2, 0, - 1, 3, 1, 0, 1, 2, 4, 4, 2, 0, - 2, 3, 2, 0, 1, 3, 1, 2, 1, 2, - 5, 6, 5, 1, 2, 1, 4, 3, 4, 5, - 4, 5, 4, 5, 2, 4, 1, 2, 2, 2, - 1, 1, 0, 4, 2, 1, 2, 2, 4, 1, - 2, 3, 1, 2, 0, 2, 4, 4, 0, 1, - 3, 2, 2, 3, 5, 6, 3, 4, 0, 1, - 1, 1, 1, 1, 2, 5, 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, 3, 5, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, - 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, 2, 2, 5, 6, 6, 7, 3, - 4, 1, 1, 2, 4, 1, 1, 1, 2, 2, - 2, 1, 3, 4, 5, 5, 4, 1, 1, 4, - 1, 4, 1, 4, 1, 4, 1, 1, 1, 1, - 6, 4, 4, 4, 4, 6, 5, 5, 5, 4, - 6, 4, 4, 4, 4, 5, 7, 7, 9, 4, - 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, - 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, - 0, 4, 3, 5, 1, 1, 1, 1, 1, 1, + 7, 9, 9, 6, 6, 6, 8, 8, 8, 6, + 0, 14, 1, 1, 3, 3, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 6, 8, 2, 2, 2, 2, 2, 3, 3, + 2, 2, 2, 2, 3, 2, 5, 4, 3, 3, + 3, 1, 1, 0, 3, 2, 2, 1, 3, 2, + 1, 0, 8, 10, 3, 4, 4, 0, 2, 5, + 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 4, 3, 3, 1, 0, + 5, 6, 4, 2, 0, 4, 3, 5, 6, 4, + 6, 6, 5, 7, 1, 0, 6, 11, 11, 11, + 13, 9, 11, 10, 4, 2, 5, 2, 0, 4, + 5, 5, 2, 4, 1, 1, 1, 0, 1, 0, + 1, 0, 3, 0, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 5, 3, 0, 1, 1, 1, + 1, 3, 8, 3, 0, 2, 3, 2, 3, 5, + 1, 4, 2, 1, 3, 2, 2, 0, 6, 2, + 0, 5, 3, 0, 2, 2, 2, 3, 1, 3, + 1, 2, 1, 0, 7, 1, 3, 1, 1, 3, + 5, 2, 1, 3, 7, 0, 3, 2, 2, 2, + 0, 2, 2, 1, 1, 3, 3, 1, 2, 4, + 4, 2, 3, 5, 5, 1, 1, 9, 1, 2, + 4, 4, 4, 2, 3, 1, 3, 4, 2, 0, + 3, 3, 4, 4, 4, 4, 2, 1, 1, 0, + 1, 1, 0, 1, 5, 1, 0, 1, 0, 3, + 1, 3, 4, 3, 4, 4, 2, 2, 4, 3, + 5, 8, 1, 0, 1, 1, 1, 3, 0, 1, + 1, 1, 1, 1, 1, 3, 0, 2, 0, 1, + 3, 1, 0, 1, 2, 4, 4, 2, 0, 2, + 3, 2, 0, 1, 3, 1, 2, 1, 2, 5, + 6, 5, 1, 2, 1, 4, 3, 4, 5, 4, + 5, 4, 5, 2, 4, 1, 2, 2, 2, 1, + 1, 0, 4, 2, 1, 2, 2, 4, 1, 3, + 1, 2, 3, 1, 2, 0, 2, 4, 4, 0, + 1, 3, 2, 2, 3, 5, 6, 2, 3, 3, + 4, 0, 1, 1, 1, 1, 1, 2, 5, 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, 2, 3, 0, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 3, 0, 1, 4, 1, 3, 5, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 3, 3, 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, 2, 2, + 5, 6, 6, 7, 3, 4, 1, 1, 2, 4, + 1, 1, 1, 2, 2, 2, 1, 4, 5, 6, + 8, 6, 6, 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, 4, 6, + 5, 7, 7, 7, 2, 3, 3, 3, 4, 0, + 4, 1, 3, 3, 1, 1, 1, 2, 2, 0, + 2, 0, 1, 3, 3, 2, 2, 0, 6, 1, + 0, 3, 0, 2, 2, 0, 1, 4, 2, 2, + 2, 4, 3, 5, 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, - 3, 0, 1, 3, 1, 3, 3, 3, 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, 2, - 0, 2, 1, 0, 1, 1, 1, 3, 3, 1, - 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 2, 5, 2, 3, 6, - 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 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, + 2, 0, 2, 1, 0, 1, 1, 1, 3, 3, + 1, 3, 3, 2, 1, 1, 1, 1, 1, 3, + 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 5, 2, + 3, 6, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2886,7 +3093,8 @@ static const unsigned char yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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-NAME] -- Default rule to reduce with in state @@ -2894,10829 +3102,12444 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned short int yydefact[] = { - 96, 811, 417, 878, 877, 811, 213, 0, 868, 0, - 811, 285, 300, 0, 0, 0, 0, 417, 811, 0, - 895, 575, 0, 0, 0, 0, 981, 575, 0, 0, - 0, 0, 0, 0, 0, 811, 0, 988, 0, 0, - 0, 981, 0, 0, 882, 0, 0, 0, 2, 4, - 43, 44, 15, 14, 19, 18, 62, 63, 33, 9, - 53, 38, 93, 92, 94, 25, 21, 50, 13, 22, - 26, 40, 27, 39, 12, 37, 57, 41, 60, 42, - 61, 28, 51, 48, 34, 35, 36, 54, 55, 56, - 77, 59, 88, 24, 67, 68, 83, 69, 84, 70, - 32, 8, 80, 79, 81, 29, 52, 78, 82, 10, - 11, 85, 58, 75, 72, 89, 87, 95, 73, 45, - 5, 6, 64, 31, 7, 17, 16, 30, 23, 91, - 20, 880, 66, 76, 65, 46, 71, 49, 74, 90, - 47, 86, 956, 955, 990, 959, 966, 810, 809, 795, - 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 819, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 264, - 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1672, - 1673, 1674, 1456, 1457, 1458, 1459, 1460, 1461, 1675, 1676, - 1462, 1463, 1464, 1465, 1466, 1677, 1467, 1468, 1469, 1470, - 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, - 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1678, 1679, 1488, - 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, - 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, - 1509, 1510, 1680, 1511, 1512, 1681, 1513, 1514, 1515, 1682, - 1516, 1517, 1518, 1519, 1520, 1683, 1521, 1522, 1523, 1524, - 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, - 1684, 1535, 1536, 1537, 1538, 1685, 1686, 1687, 1539, 1540, - 1541, 1542, 1543, 1544, 1545, 1688, 1546, 1547, 1548, 1549, - 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, - 1560, 1561, 1562, 1689, 1690, 1563, 1564, 1565, 1566, 1567, - 1568, 1569, 1691, 1570, 1571, 1572, 1573, 1692, 1574, 1693, - 1575, 1576, 1577, 1578, 1579, 1694, 1695, 1580, 1581, 1582, - 1583, 1584, 1585, 1696, 1697, 1588, 1586, 1587, 1589, 1590, - 1591, 1592, 1593, 1594, 1698, 1595, 1596, 1597, 1598, 1599, - 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, - 1610, 1699, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, - 1619, 1620, 1621, 1622, 1700, 1623, 1624, 1625, 1701, 1626, - 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1702, - 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1703, 1704, - 1644, 1705, 1645, 1706, 1646, 1647, 1648, 1649, 1650, 1651, - 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1707, 1708, 1659, - 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1709, - 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1669, 1670, 1671, - 1428, 263, 1402, 1429, 1430, 1812, 1811, 1398, 871, 0, - 1395, 1394, 417, 0, 798, 284, 0, 0, 0, 0, - 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, - 0, 144, 0, 295, 294, 0, 0, 406, 0, 630, - 0, 0, 417, 0, 0, 0, 909, 1586, 907, 947, - 0, 214, 217, 215, 216, 0, 0, 716, 527, 0, - 526, 0, 0, 524, 0, 0, 0, 0, 528, 522, - 521, 0, 0, 0, 525, 0, 523, 0, 0, 799, - 906, 894, 880, 1440, 583, 587, 578, 584, 579, 576, - 577, 1598, 1426, 0, 0, 572, 582, 596, 602, 601, - 600, 0, 595, 598, 603, 0, 792, 1424, 826, 1407, - 980, 0, 0, 574, 791, 1644, 898, 0, 0, 720, - 0, 721, 0, 1613, 803, 200, 1621, 1703, 1644, 196, - 169, 1444, 0, 0, 595, 0, 800, 801, 987, 985, - 0, 1473, 1549, 193, 1609, 1621, 1703, 1644, 1668, 153, - 0, 207, 1621, 1703, 1644, 203, 819, 0, 794, 793, - 0, 1059, 0, 1055, 1395, 881, 884, 0, 1020, 964, - 0, 1, 96, 879, 875, 984, 984, 0, 984, 0, - 960, 0, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, - 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, - 1735, 1736, 1428, 0, 0, 1408, 1429, 1433, 0, 535, - 99, 1403, 0, 0, 0, 0, 1425, 0, 1464, 1513, - 1307, 1317, 1315, 1316, 1309, 1310, 1311, 1312, 1313, 1314, - 0, 707, 1308, 0, 99, 0, 0, 385, 0, 0, - 0, 0, 0, 99, 0, 0, 0, 0, 815, 818, - 796, 0, 0, 1378, 1399, 0, 867, 0, 0, 0, - 557, 0, 566, 558, 563, 0, 560, 0, 0, 568, - 0, 559, 561, 562, 567, 0, 0, 564, 565, 0, - 0, 807, 341, 0, 0, 0, 0, 0, 99, 858, - 299, 298, 99, 297, 296, 1464, 1513, 0, 650, 99, - 0, 146, 420, 0, 0, 467, 99, 0, 0, 0, - 0, 0, 0, 0, 0, 910, 908, 0, 922, 1525, - 0, 260, 0, 0, 1525, 849, 1525, 0, 1525, 139, - 1400, 1464, 1513, 1525, 0, 0, 1525, 131, 1525, 0, - 1525, 421, 0, 1525, 0, 1525, 133, 0, 1525, 260, - 533, 0, 903, 0, 580, 589, 588, 586, 585, 581, - 1427, 590, 591, 0, 597, 0, 0, 0, 0, 925, - 1396, 0, 806, 0, 0, 0, 723, 723, 723, 802, - 199, 197, 0, 0, 0, 0, 0, 0, 808, 0, - 0, 0, 1672, 1673, 1674, 1371, 0, 1675, 1676, 1677, - 1247, 1256, 1248, 1250, 1257, 1678, 1679, 1500, 1680, 1681, - 1421, 1682, 1683, 1685, 1686, 1687, 1688, 1252, 1254, 1689, - 1690, 0, 1422, 1692, 1693, 1578, 1695, 1696, 1698, 1699, - 1258, 1701, 1702, 1703, 1704, 1705, 1706, 1420, 0, 1259, - 1708, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1411, 1413, - 1414, 1318, 1423, 1380, 0, 0, 1393, 0, 1237, 0, - 1086, 1087, 1109, 1110, 1088, 1115, 1116, 1128, 1089, 0, - 1392, 1151, 1236, 1241, 0, 1235, 1231, 971, 1389, 1372, - 0, 1232, 1410, 1412, 209, 0, 210, 1621, 154, 192, - 164, 191, 195, 165, 194, 0, 1462, 155, 0, 162, - 0, 0, 0, 0, 206, 204, 0, 797, 260, 0, - 1057, 0, 1060, 0, 1056, 883, 880, 1385, 1384, 1386, - 0, 958, 957, 3, 886, 982, 983, 0, 0, 0, - 0, 0, 0, 0, 1013, 1002, 1010, 1014, 1021, 1409, - 0, 0, 0, 0, 0, 536, 0, 0, 0, 98, - 847, 202, 845, 0, 0, 0, 0, 852, 0, 0, - 0, 675, 0, 0, 0, 0, 0, 0, 676, 674, - 677, 684, 693, 696, 0, 620, 137, 138, 0, 0, - 0, 0, 0, 0, 219, 250, 0, 0, 0, 0, - 0, 101, 128, 0, 0, 0, 0, 383, 747, 747, - 0, 0, 747, 0, 0, 0, 747, 0, 218, 220, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 130, 0, 0, 0, 813, 814, 0, 817, - 0, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, - 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, - 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, - 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, - 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, - 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, - 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, - 1806, 1807, 1808, 1809, 1810, 1434, 1375, 1374, 1405, 1435, - 1436, 1437, 1438, 1379, 870, 1406, 869, 0, 0, 0, - 0, 0, 1464, 1513, 0, 0, 0, 0, 0, 0, - 0, 287, 270, 271, 99, 269, 0, 0, 464, 0, - 1097, 1126, 1104, 1126, 1126, 1093, 1093, 1106, 1094, 1095, - 1133, 0, 1126, 1093, 1098, 0, 1096, 1136, 1136, 1121, - 1431, 0, 1078, 1079, 1080, 1081, 1107, 1108, 1082, 1113, - 1114, 1083, 1150, 1093, 1432, 0, 829, 857, 0, 101, - 501, 0, 0, 465, 0, 101, 0, 142, 0, 0, - 0, 0, 0, 0, 426, 425, 0, 0, 466, 101, - 385, 0, 378, 341, 0, 0, 1470, 0, 0, 0, - 950, 952, 951, 0, 949, 0, 1068, 0, 260, 258, - 259, 462, 715, 0, 0, 0, 260, 0, 0, 1525, - 0, 1525, 0, 0, 0, 260, 0, 0, 0, 0, - 532, 530, 529, 531, 0, 0, 0, 1525, 260, 0, - 0, 520, 1328, 0, 300, 887, 893, 889, 891, 890, - 892, 888, 571, 1485, 1518, 1543, 1614, 1619, 0, 1639, - 0, 604, 625, 599, 0, 0, 919, 912, 0, 0, - 935, 573, 1332, 0, 0, 0, 722, 719, 718, 717, - 198, 170, 0, 0, 0, 627, 1613, 805, 0, 0, - 1239, 1240, 1125, 1112, 1370, 0, 0, 1120, 1119, 0, - 0, 0, 0, 1102, 1101, 1100, 1238, 1331, 0, 1099, - 0, 0, 0, 0, 1126, 1126, 1124, 1170, 0, 1103, - 0, 0, 1350, 0, 1356, 0, 0, 0, 1132, 0, - 1130, 0, 0, 1206, 0, 0, 0, 0, 0, 0, - 0, 1233, 1154, 1155, 1707, 1237, 1328, 0, 1417, 0, - 0, 1118, 0, 1150, 0, 0, 0, 1383, 1326, 0, - 0, 1184, 1324, 0, 1186, 0, 0, 0, 1318, 1317, - 1315, 1316, 1309, 1310, 1311, 1312, 1313, 1314, 0, 1322, - 1167, 0, 0, 1166, 0, 0, 1023, 1373, 0, 1415, - 211, 212, 208, 0, 167, 166, 0, 189, 190, 185, - 401, 0, 161, 188, 399, 400, 0, 184, 403, 1297, - 1296, 168, 160, 158, 181, 183, 182, 180, 156, 171, - 173, 174, 175, 159, 157, 205, 539, 0, 1061, 0, - 1023, 937, 939, 940, 0, 1380, 872, 1388, 0, 0, - 876, 964, 969, 963, 968, 991, 992, 644, 967, 0, - 1019, 1019, 1004, 998, 1003, 999, 1005, 1012, 962, 1001, - 961, 0, 1015, 0, 0, 0, 0, 0, 0, 0, - 537, 0, 0, 0, 201, 844, 0, 0, 0, 0, - 0, 855, 335, 0, 257, 0, 0, 0, 0, 0, - 0, 682, 0, 0, 0, 0, 683, 680, 681, 1614, - 695, 694, 692, 661, 663, 662, 0, 653, 0, 654, - 0, 0, 660, 667, 665, 0, 0, 0, 0, 255, - 0, 254, 0, 0, 0, 0, 0, 703, 708, 0, - 127, 0, 0, 0, 0, 0, 387, 398, 0, 0, - 0, 0, 99, 99, 384, 746, 230, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 247, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 179, 812, 816, 1376, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 342, 344, 0, 0, 273, 1431, - 0, 487, 463, 0, 1078, 0, 0, 1072, 1139, 1140, - 1141, 1138, 1142, 1137, 0, 1084, 1093, 1090, 0, 827, - 310, 135, 0, 0, 0, 475, 478, 0, 97, 146, - 300, 0, 145, 147, 149, 150, 151, 148, 152, 419, - 0, 0, 0, 0, 0, 431, 430, 432, 0, 427, - 0, 0, 126, 382, 0, 0, 302, 366, 0, 404, - 0, 0, 0, 0, 768, 0, 0, 0, 948, 0, - 1033, 921, 1024, 1035, 1026, 1028, 1062, 1398, 0, 0, - 919, 0, 699, 0, 850, 0, 697, 140, 1401, 0, - 0, 0, 0, 0, 0, 517, 132, 0, 260, 422, - 0, 260, 134, 0, 414, 260, 534, 905, 0, 0, - 608, 607, 618, 609, 610, 606, 605, 611, 0, 0, - 627, 914, 0, 915, 1380, 0, 911, 0, 932, 0, - 930, 0, 1397, 934, 923, 897, 0, 896, 900, 902, - 901, 899, 0, 0, 0, 595, 0, 0, 260, 804, - 0, 0, 0, 1334, 0, 0, 1369, 1365, 0, 0, - 0, 0, 0, 1341, 1342, 1343, 1340, 1344, 1339, 1338, - 1345, 0, 0, 0, 0, 0, 0, 0, 1123, 1122, - 0, 0, 0, 0, 0, 0, 0, 1209, 1241, 0, - 0, 1302, 0, 1328, 1355, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1328, 1361, 0, 0, 0, - 1295, 0, 1292, 0, 0, 0, 0, 1381, 1380, 0, - 0, 0, 0, 1418, 1168, 1391, 0, 1382, 0, 0, - 1175, 0, 1362, 1202, 0, 1207, 1190, 0, 1183, 0, - 1188, 1192, 1171, 1383, 1327, 0, 1325, 0, 0, 1169, - 0, 1164, 1162, 1163, 1156, 1157, 1158, 1159, 1160, 1161, - 1152, 1165, 1306, 1304, 1305, 0, 0, 0, 1187, 1519, - 1549, 0, 981, 981, 970, 979, 1390, 0, 1064, 0, - 0, 0, 1242, 0, 0, 402, 0, 1150, 0, 1058, - 944, 0, 0, 1068, 0, 943, 874, 873, 1387, 0, - 0, 642, 643, 0, 647, 1011, 0, 935, 935, 0, - 0, 0, 485, 484, 0, 0, 0, 755, 725, 538, - 756, 726, 0, 846, 0, 0, 0, 0, 0, 260, - 853, 757, 256, 854, 749, 0, 678, 679, 758, 727, - 0, 750, 664, 1093, 652, 0, 0, 659, 0, 658, - 1093, 1093, 728, 136, 252, 736, 253, 251, 0, 1404, - 0, 0, 0, 0, 739, 0, 0, 110, 112, 114, - 0, 0, 108, 116, 111, 113, 115, 109, 117, 107, - 0, 0, 106, 0, 0, 0, 0, 100, 763, 732, - 734, 751, 386, 397, 0, 390, 391, 388, 392, 393, - 0, 0, 0, 222, 0, 0, 233, 246, 241, 242, - 240, 260, 260, 0, 0, 0, 0, 243, 238, 239, - 235, 248, 733, 0, 752, 234, 232, 0, 221, 765, - 741, 0, 0, 0, 0, 0, 0, 0, 859, 0, - 0, 0, 764, 753, 740, 735, 0, 0, 177, 176, - 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 570, 546, 569, 0, 0, 0, 0, 0, 0, 0, - 540, 340, 0, 286, 267, 268, 0, 266, 0, 486, - 0, 0, 0, 1073, 0, 0, 0, 0, 0, 0, - 0, 0, 1091, 0, 0, 843, 843, 843, 843, 843, - 828, 851, 0, 506, 474, 0, 0, 341, 141, 0, - 0, 418, 473, 471, 470, 472, 0, 0, 0, 0, - 1069, 0, 0, 375, 0, 0, 0, 301, 303, 305, - 306, 307, 0, 379, 381, 0, 0, 370, 0, 0, - 0, 0, 633, 0, 0, 0, 691, 687, 670, 0, - 953, 954, 0, 964, 0, 1035, 0, 1034, 1046, 0, - 0, 1052, 1050, 0, 1052, 0, 1052, 0, 1027, 0, - 1029, 1046, 1399, 0, 1482, 1065, 920, 260, 0, 260, - 0, 260, 0, 260, 0, 260, 0, 789, 0, 459, - 260, 519, 1329, 0, 0, 0, 617, 612, 614, 0, - 621, 0, 0, 917, 918, 933, 926, 928, 927, 0, - 0, 924, 1333, 518, 0, 0, 260, 0, 622, 986, - 1336, 1337, 0, 0, 0, 0, 1366, 0, 0, 1271, - 1249, 1251, 1092, 1261, 0, 1105, 1272, 1273, 1253, 1255, - 0, 1319, 0, 0, 1262, 1211, 1212, 0, 0, 0, + 105, 903, 443, 975, 974, 903, 224, 0, 977, 0, + 903, 305, 320, 0, 0, 0, 0, 443, 903, 0, + 993, 643, 0, 0, 0, 0, 1089, 643, 0, 0, + 0, 0, 0, 0, 0, 903, 0, 1096, 0, 0, + 0, 0, 1089, 0, 0, 979, 0, 0, 0, 0, + 2, 4, 48, 49, 17, 16, 22, 21, 70, 71, + 38, 11, 61, 43, 102, 101, 103, 28, 24, 56, + 15, 25, 29, 45, 30, 44, 14, 42, 65, 46, + 68, 35, 59, 8, 36, 60, 9, 50, 72, 20, + 47, 69, 31, 57, 54, 39, 40, 41, 62, 63, + 64, 86, 67, 97, 27, 76, 77, 92, 78, 93, + 79, 37, 10, 89, 88, 90, 32, 58, 87, 91, + 12, 13, 94, 66, 84, 81, 98, 96, 104, 82, + 51, 5, 6, 73, 34, 7, 19, 18, 33, 26, + 100, 23, 977, 75, 85, 74, 52, 80, 55, 83, + 99, 53, 95, 1066, 1053, 1098, 1065, 0, 1068, 902, + 901, 887, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 911, 1592, 1593, 1594, 1595, 1596, + 1597, 1598, 1599, 284, 1600, 1601, 1602, 1603, 1604, 1605, + 1606, 1607, 1608, 1838, 1839, 1840, 1609, 1610, 1611, 1612, + 1613, 1614, 1615, 1841, 1842, 1616, 1617, 1618, 1619, 1620, + 1843, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, + 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, + 1640, 1641, 1642, 1643, 1844, 1845, 1644, 1645, 1646, 1647, + 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, + 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1846, + 1667, 1668, 1847, 1669, 1670, 1848, 1671, 1672, 1673, 1674, + 1675, 1676, 1849, 1677, 1678, 1679, 1680, 1681, 1682, 1683, + 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1850, 1692, + 1693, 1694, 1695, 1851, 1852, 1853, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1704, 1854, 1705, 1706, 1707, 1708, + 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, + 1719, 1720, 1721, 1855, 1856, 1722, 1723, 1724, 1725, 1726, + 1727, 1728, 1857, 1729, 1730, 1731, 1732, 1858, 1733, 1859, + 1734, 1735, 1736, 1737, 1738, 1739, 1860, 1861, 1740, 1741, + 1742, 1743, 1744, 1745, 1746, 1862, 1747, 1863, 1750, 1748, + 1749, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1864, 1758, + 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, + 1769, 1770, 1771, 1772, 1773, 1774, 1865, 1775, 1776, 1777, + 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, + 1866, 1788, 1789, 1790, 1867, 1791, 1792, 1793, 1794, 1795, + 1796, 1797, 1798, 1799, 1800, 1868, 1801, 1802, 1803, 1804, + 1805, 1806, 1807, 1808, 1869, 1870, 1809, 1871, 1810, 1872, + 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, + 1821, 1822, 1823, 1824, 1873, 1874, 1825, 1826, 1827, 1828, + 1829, 1830, 1831, 1832, 1833, 1834, 1875, 1876, 1877, 1878, + 1879, 1880, 1881, 1882, 1835, 1836, 1837, 1581, 283, 1554, + 1582, 1583, 976, 965, 443, 0, 890, 304, 0, 0, + 0, 0, 0, 0, 0, 565, 0, 0, 0, 0, + 0, 0, 0, 0, 153, 0, 0, 315, 314, 0, + 0, 430, 0, 702, 0, 0, 443, 0, 0, 0, + 1007, 1748, 1005, 1045, 0, 225, 228, 226, 227, 0, + 0, 802, 592, 0, 591, 0, 0, 0, 589, 0, + 0, 0, 0, 593, 587, 0, 586, 0, 0, 0, + 590, 0, 588, 0, 0, 891, 1004, 992, 977, 1593, + 651, 655, 646, 652, 647, 644, 645, 1762, 1575, 0, + 0, 0, 640, 1578, 650, 664, 361, 361, 361, 0, + 663, 668, 361, 0, 884, 1576, 918, 1559, 1088, 0, + 0, 642, 883, 1809, 996, 0, 0, 806, 0, 807, + 0, 1777, 895, 211, 1786, 1869, 1809, 207, 180, 1597, + 0, 0, 663, 0, 892, 893, 1095, 1093, 0, 1614, + 1627, 1708, 204, 1773, 1778, 1786, 1869, 1809, 1834, 162, + 0, 218, 1786, 1869, 1809, 214, 911, 1985, 1984, 0, + 1069, 1550, 1174, 1547, 1546, 0, 886, 885, 1180, 0, + 978, 981, 0, 1139, 1760, 1073, 1075, 983, 1066, 0, + 1, 105, 972, 1092, 1092, 0, 1092, 0, 1058, 1066, + 1098, 1065, 0, 1883, 1884, 1885, 1886, 1887, 1888, 1889, + 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, + 1900, 1901, 1902, 1903, 1904, 1581, 0, 0, 1560, 1582, + 1586, 0, 600, 108, 1555, 0, 0, 0, 0, 0, + 1577, 0, 1618, 1669, 1457, 1467, 1465, 1466, 1459, 1460, + 1461, 1462, 1463, 1464, 0, 792, 1458, 0, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 1712, 108, 0, + 0, 0, 0, 907, 910, 888, 968, 0, 1547, 0, + 0, 625, 0, 634, 626, 631, 0, 628, 0, 0, + 636, 0, 627, 629, 630, 635, 0, 0, 632, 633, + 0, 0, 899, 361, 0, 0, 0, 0, 0, 108, + 955, 0, 319, 318, 108, 317, 316, 1618, 1669, 0, + 723, 108, 0, 155, 471, 446, 0, 0, 532, 1712, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 1008, + 1006, 0, 1020, 1682, 0, 271, 0, 0, 1682, 946, + 0, 1682, 0, 1682, 148, 1552, 1618, 1669, 1682, 0, + 0, 1682, 140, 1682, 0, 1682, 271, 1682, 447, 0, + 1682, 0, 1682, 1712, 142, 0, 1682, 271, 598, 0, + 1001, 0, 648, 657, 656, 654, 653, 649, 1579, 1580, + 658, 659, 0, 665, 0, 0, 672, 671, 670, 0, + 0, 0, 673, 0, 1178, 1023, 0, 898, 0, 0, + 0, 809, 809, 809, 894, 210, 208, 0, 0, 0, + 0, 0, 0, 900, 0, 0, 0, 1838, 1839, 1840, + 1522, 0, 1841, 1842, 1843, 1387, 1374, 1383, 1388, 1375, + 1377, 1384, 1844, 1845, 1656, 1846, 1847, 1573, 1848, 1849, + 1851, 1852, 1853, 1854, 1379, 1381, 1855, 1856, 0, 1574, + 1858, 1859, 1737, 1861, 1862, 1864, 1865, 1385, 1867, 1868, + 1869, 1870, 1871, 1872, 1572, 0, 1386, 1874, 1876, 1877, + 1878, 1879, 1880, 1881, 1882, 1563, 1565, 1566, 1468, 1531, + 0, 0, 1545, 0, 1362, 0, 1209, 1210, 1232, 1233, + 1211, 1238, 1239, 1251, 1212, 0, 1544, 1276, 1361, 1366, + 0, 1360, 1356, 1079, 1540, 1523, 0, 1357, 1562, 1564, + 173, 220, 0, 221, 1548, 1786, 163, 203, 175, 202, + 176, 206, 205, 174, 0, 1616, 164, 0, 171, 0, + 0, 0, 0, 217, 215, 0, 889, 0, 1176, 0, + 0, 1529, 1551, 1175, 607, 0, 1181, 0, 980, 977, + 1536, 1535, 1537, 0, 1074, 0, 0, 0, 1056, 1055, + 3, 983, 1090, 1091, 0, 0, 0, 0, 0, 0, + 0, 0, 1132, 1113, 1129, 1133, 0, 1062, 1140, 1561, + 0, 0, 0, 0, 0, 601, 0, 0, 0, 107, + 944, 213, 942, 0, 0, 0, 0, 949, 0, 0, + 0, 0, 756, 0, 0, 0, 0, 0, 0, 757, + 755, 758, 765, 778, 781, 0, 692, 146, 147, 0, + 0, 834, 834, 0, 0, 834, 0, 0, 0, 0, + 0, 0, 0, 230, 233, 0, 0, 0, 0, 0, + 0, 0, 110, 137, 0, 0, 0, 412, 424, 0, + 0, 0, 0, 0, 421, 0, 108, 231, 406, 409, + 0, 0, 0, 480, 479, 834, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1224, 1223, 1263, 1301, 0, 0, 1353, 1354, 1264, 1134, - 1135, 1136, 1136, 0, 0, 1360, 0, 0, 0, 1269, - 1274, 0, 0, 1279, 0, 1300, 0, 0, 0, 1234, - 1329, 1127, 1128, 0, 0, 0, 0, 0, 0, 0, - 0, 1208, 1191, 1185, 0, 1189, 1193, 0, 0, 0, - 0, 1177, 1203, 1173, 0, 0, 1179, 0, 1204, 981, - 981, 981, 981, 978, 0, 0, 1022, 0, 1007, 0, - 0, 1246, 1243, 163, 0, 186, 172, 0, 0, 938, - 919, 941, 885, 993, 0, 1320, 647, 645, 646, 995, - 1018, 1017, 1016, 996, 1000, 997, 754, 724, 748, 843, - 0, 334, 0, 0, 0, 856, 672, 0, 1093, 655, - 656, 657, 0, 0, 0, 0, 0, 0, 0, 705, - 0, 706, 704, 122, 0, 0, 0, 0, 103, 102, - 123, 121, 0, 120, 0, 389, 394, 396, 395, 310, - 0, 0, 0, 223, 231, 228, 244, 236, 245, 237, + 110, 139, 0, 0, 232, 0, 0, 905, 906, 0, + 909, 0, 964, 0, 0, 0, 0, 0, 0, 1618, + 1669, 0, 0, 0, 0, 0, 0, 307, 290, 291, + 108, 289, 0, 0, 529, 0, 1220, 1249, 1227, 1249, + 1249, 1216, 1216, 1229, 1217, 1218, 1256, 0, 1249, 1216, + 1221, 0, 1219, 1259, 1259, 1244, 1584, 0, 1201, 1202, + 1203, 1204, 1230, 1231, 1205, 1236, 1237, 1206, 1273, 1216, + 1585, 0, 921, 954, 0, 0, 110, 566, 0, 0, + 530, 0, 110, 0, 151, 0, 475, 0, 0, 0, + 0, 0, 0, 491, 490, 0, 0, 531, 0, 110, + 408, 0, 398, 361, 0, 0, 1624, 0, 1558, 0, + 0, 1048, 1050, 1049, 0, 1047, 0, 1189, 0, 271, + 269, 270, 527, 801, 0, 0, 0, 0, 271, 0, + 0, 1682, 0, 1682, 0, 0, 271, 271, 0, 0, + 0, 0, 476, 0, 597, 595, 594, 596, 0, 0, + 0, 0, 0, 1682, 271, 0, 0, 585, 1478, 0, + 320, 990, 984, 991, 986, 988, 987, 989, 985, 639, + 0, 0, 362, 364, 0, 1641, 0, 1674, 1700, 1778, + 1783, 0, 1804, 0, 674, 697, 669, 0, 0, 1017, + 1010, 0, 0, 1033, 641, 1480, 0, 0, 0, 808, + 805, 804, 803, 209, 181, 0, 0, 0, 699, 1777, + 897, 0, 0, 1364, 1365, 1248, 1235, 1521, 0, 0, + 1243, 1242, 0, 0, 0, 0, 1225, 1224, 1223, 1363, + 1488, 0, 1222, 0, 0, 0, 0, 1249, 1249, 1247, + 1295, 0, 1226, 0, 0, 1501, 0, 1507, 0, 0, + 0, 1255, 0, 1253, 0, 0, 1331, 0, 0, 0, + 0, 0, 0, 0, 1358, 1279, 1280, 1873, 1362, 1478, + 0, 1569, 0, 0, 1241, 0, 1273, 0, 0, 0, + 1534, 1476, 0, 0, 1309, 1474, 0, 1311, 0, 0, + 0, 1543, 1468, 1467, 1465, 1466, 1459, 1460, 1461, 1462, + 1463, 1464, 0, 1472, 1292, 0, 0, 1291, 0, 0, + 1142, 1524, 0, 1567, 222, 223, 219, 0, 0, 178, + 177, 0, 200, 201, 196, 425, 0, 170, 199, 0, + 195, 427, 1426, 1425, 179, 169, 167, 192, 194, 193, + 191, 165, 182, 184, 185, 186, 168, 166, 216, 0, + 0, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, + 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, + 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, + 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, + 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, + 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, + 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, + 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, + 1587, 1526, 1525, 1557, 1588, 1589, 1590, 1591, 1530, 0, + 0, 271, 1182, 0, 1142, 1035, 1037, 1038, 0, 1531, + 969, 1539, 0, 1076, 0, 0, 973, 1072, 1065, 1071, + 1099, 1100, 716, 1070, 1123, 1124, 1118, 0, 1138, 1138, + 1115, 1106, 1114, 1107, 0, 1119, 1276, 1131, 1060, 1112, + 1059, 0, 1134, 1132, 1113, 0, 0, 0, 0, 0, + 0, 0, 602, 0, 0, 0, 1804, 212, 940, 0, + 0, 0, 0, 0, 952, 355, 0, 268, 0, 0, + 0, 0, 0, 0, 0, 763, 0, 0, 0, 0, + 764, 761, 762, 1778, 780, 779, 777, 738, 740, 739, + 0, 742, 726, 0, 727, 0, 0, 737, 745, 743, + 0, 0, 833, 243, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 261, 0, 0, 0, 0, + 266, 0, 0, 0, 265, 0, 0, 0, 0, 0, + 0, 793, 0, 136, 0, 0, 411, 423, 0, 415, + 416, 413, 417, 418, 0, 0, 0, 0, 0, 0, + 410, 0, 0, 473, 472, 478, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 482, + 483, 0, 484, 0, 138, 0, 0, 0, 0, 0, + 0, 190, 904, 908, 967, 966, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 759, 729, 1377, 541, 0, 0, 542, 550, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 552, 343, - 289, 274, 278, 858, 858, 0, 279, 858, 275, 858, - 272, 1578, 1310, 482, 489, 479, 481, 483, 480, 0, - 488, 454, 0, 0, 0, 1076, 0, 1144, 1145, 1146, - 1147, 1148, 1149, 1143, 1150, 0, 843, 842, 0, 0, - 0, 0, 0, 0, 0, 0, 321, 0, 0, 315, - 0, 0, 691, 309, 312, 313, 0, 476, 477, 0, - 300, 0, 434, 428, 0, 490, 468, 0, 1071, 906, - 302, 327, 362, 0, 377, 0, 364, 363, 365, 0, - 372, 825, 411, 408, 0, 633, 0, 0, 685, 688, - 686, 0, 666, 0, 671, 649, 0, 946, 1037, 1044, - 0, 1025, 0, 1051, 1047, 0, 1048, 0, 0, 1049, - 0, 0, 1044, 0, 0, 0, 700, 0, 698, 0, - 513, 0, 515, 0, 701, 260, 260, 415, 0, 378, - 619, 615, 0, 0, 592, 624, 913, 916, 931, 929, - 627, 0, 593, 626, 1335, 1111, 0, 1368, 1364, 0, - 1330, 0, 1348, 1347, 1349, 0, 1229, 0, 0, 1221, - 1219, 1220, 1213, 1214, 1215, 1216, 1217, 1218, 1210, 1222, - 1358, 1357, 1351, 1352, 1131, 1129, 0, 1266, 1267, 1268, - 1359, 1275, 0, 1294, 1293, 0, 0, 0, 1281, 0, - 0, 1290, 0, 1303, 1117, 1150, 1153, 0, 0, 1176, - 1363, 1194, 0, 0, 0, 1172, 0, 0, 0, 0, - 1181, 1319, 0, 0, 0, 0, 0, 0, 973, 972, - 1063, 0, 1009, 1244, 1245, 1416, 0, 0, 945, 936, - 0, 994, 0, 336, 0, 0, 691, 673, 0, 668, - 0, 0, 0, 0, 0, 507, 493, 0, 0, 508, - 509, 0, 0, 0, 118, 104, 125, 124, 105, 119, - 308, 0, 0, 0, 0, 262, 737, 0, 0, 0, - 0, 0, 767, 745, 766, 743, 742, 744, 738, 0, - 544, 0, 0, 0, 545, 556, 554, 553, 555, 547, - 290, 99, 0, 0, 0, 0, 0, 0, 0, 456, - 0, 0, 461, 450, 452, 0, 0, 0, 1074, 1077, - 1085, 449, 0, 838, 837, 836, 833, 832, 841, 840, - 831, 830, 835, 834, 0, 0, 319, 323, 324, 322, - 314, 691, 341, 374, 0, 0, 0, 436, 0, 0, - 469, 0, 1070, 904, 0, 325, 0, 366, 304, 380, - 381, 0, 0, 376, 0, 0, 0, 820, 0, 413, - 409, 0, 0, 632, 0, 0, 691, 690, 784, 785, - 782, 783, 0, 1036, 0, 0, 1038, 0, 0, 1040, - 1042, 0, 0, 0, 0, 0, 1402, 1243, 1067, 1066, - 260, 260, 260, 260, 790, 460, 0, 0, 0, 613, - 260, 0, 1367, 1260, 1270, 1346, 0, 0, 1230, 0, - 0, 1265, 1709, 0, 0, 1298, 1299, 1280, 0, 1564, - 1285, 0, 0, 0, 1419, 1200, 1198, 1195, 0, 1196, - 0, 0, 1178, 1174, 0, 1180, 1205, 977, 976, 975, - 974, 0, 0, 965, 1150, 942, 0, 848, 0, 691, - 374, 669, 761, 730, 0, 0, 499, 0, 0, 0, - 0, 762, 731, 760, 224, 225, 226, 227, 0, 229, - 0, 0, 0, 864, 0, 0, 548, 549, 543, 273, - 0, 276, 281, 0, 282, 277, 280, 458, 457, 455, - 451, 453, 1075, 0, 713, 0, 454, 839, 0, 0, - 311, 374, 348, 0, 316, 0, 825, 302, 435, 0, - 0, 429, 491, 366, 0, 0, 326, 0, 370, 0, - 367, 0, 371, 0, 0, 822, 410, 0, 405, 0, - 0, 0, 0, 634, 641, 641, 689, 648, 0, 0, - 1045, 1054, 0, 1041, 1039, 1030, 0, 1032, 714, 514, - 516, 702, 616, 623, 260, 1225, 0, 0, 0, 0, - 1276, 0, 1277, 1282, 1286, 0, 1283, 1284, 1197, 1201, - 1199, 1182, 1006, 1008, 187, 1321, 0, 374, 337, 0, - 0, 505, 494, 0, 0, 510, 261, 0, 0, 0, - 0, 0, 551, 265, 288, 283, 713, 0, 710, 448, - 0, 318, 317, 0, 353, 0, 503, 821, 437, 438, - 433, 0, 370, 331, 329, 333, 330, 328, 332, 0, - 372, 368, 369, 823, 824, 412, 866, 0, 0, 691, - 0, 0, 639, 644, 644, 1064, 1043, 0, 1031, 594, - 1226, 0, 1227, 0, 0, 1288, 1287, 341, 338, 0, - 497, 504, 0, 495, 0, 0, 860, 0, 861, 862, - 865, 709, 712, 711, 0, 345, 346, 347, 0, 320, - 349, 350, 0, 0, 0, 0, 372, 361, 292, 691, - 641, 372, 635, 640, 647, 647, 0, 1053, 1228, 1291, - 1278, 1289, 348, 0, 0, 512, 511, 0, 0, 0, - 0, 0, 351, 0, 352, 373, 502, 0, 441, 293, - 372, 644, 1064, 637, 636, 788, 353, 0, 505, 863, - 0, 358, 0, 357, 0, 355, 354, 492, 443, 445, - 446, 442, 0, 439, 444, 447, 1064, 647, 628, 787, - 786, 0, 454, 498, 496, 0, 356, 360, 359, 423, - 0, 629, 638, 770, 781, 769, 771, 779, 776, 778, - 777, 775, 339, 0, 440, 0, 780, 774, 964, 955, - 0, 772, 781, 441, 773, 0, 424 + 0, 0, 0, 0, 0, 293, 1584, 0, 552, 528, + 0, 1201, 0, 1197, 1193, 1262, 1263, 1264, 1261, 1274, + 1260, 0, 1207, 1265, 1216, 1213, 0, 919, 330, 437, + 144, 0, 0, 0, 540, 543, 0, 106, 155, 320, + 0, 154, 156, 158, 159, 160, 157, 161, 470, 474, + 0, 445, 0, 0, 0, 0, 0, 495, 494, 497, + 496, 0, 492, 0, 0, 0, 135, 405, 407, 0, + 0, 322, 386, 0, 428, 0, 0, 0, 0, 0, + 860, 0, 0, 0, 1046, 0, 1152, 1019, 1143, 1154, + 1145, 1147, 1183, 1550, 0, 0, 1017, 0, 784, 0, + 947, 1682, 271, 0, 782, 149, 1553, 0, 0, 0, + 0, 0, 786, 582, 141, 0, 271, 271, 448, 0, + 271, 143, 0, 0, 0, 440, 271, 599, 1003, 0, + 0, 0, 666, 0, 360, 680, 0, 0, 679, 690, + 681, 682, 676, 675, 683, 0, 0, 699, 1012, 0, + 1013, 1531, 0, 1009, 0, 1030, 0, 1028, 0, 1179, + 1032, 1021, 995, 0, 994, 998, 1000, 999, 997, 0, + 0, 0, 663, 0, 0, 271, 896, 0, 1484, 0, + 1485, 0, 0, 0, 1520, 1516, 0, 0, 0, 0, + 0, 1492, 1493, 1494, 1491, 1495, 1490, 1489, 0, 0, + 1496, 0, 0, 0, 0, 0, 1246, 1245, 0, 0, + 0, 0, 0, 0, 0, 1334, 1366, 0, 0, 1452, + 0, 1478, 1506, 0, 0, 1257, 0, 0, 0, 0, + 0, 0, 0, 1478, 1512, 0, 0, 0, 1424, 0, + 1421, 0, 0, 0, 0, 1532, 1531, 0, 0, 0, + 0, 1570, 1293, 1542, 0, 1533, 0, 0, 1300, 0, + 1513, 1327, 0, 1332, 1315, 0, 1308, 0, 1313, 1317, + 1296, 1534, 1477, 0, 1475, 0, 0, 1294, 0, 1289, + 1287, 1288, 1281, 1282, 1283, 1284, 1285, 1286, 1277, 1290, + 1456, 1454, 1455, 0, 0, 0, 1312, 1675, 1708, 0, + 1089, 1089, 1078, 1087, 1541, 0, 1185, 0, 0, 0, + 0, 1437, 0, 1549, 0, 426, 0, 1273, 0, 1177, + 1527, 0, 605, 606, 604, 1042, 0, 0, 1189, 0, + 1041, 971, 970, 1538, 982, 1077, 0, 714, 715, 0, + 719, 0, 0, 1116, 1130, 0, 1033, 1033, 0, 0, + 0, 1121, 1122, 1109, 1064, 1063, 550, 549, 0, 0, + 0, 845, 811, 603, 846, 812, 941, 0, 943, 0, + 0, 0, 0, 0, 271, 950, 847, 267, 951, 838, + 0, 0, 0, 453, 454, 0, 759, 760, 848, 813, + 0, 839, 741, 1216, 725, 0, 0, 736, 0, 735, + 1216, 1216, 814, 145, 235, 0, 836, 247, 260, 255, + 256, 254, 271, 271, 0, 0, 0, 0, 257, 252, + 253, 249, 262, 263, 822, 0, 277, 280, 264, 245, + 248, 246, 234, 0, 1556, 0, 0, 788, 0, 0, + 825, 0, 0, 119, 121, 123, 0, 0, 117, 125, + 120, 122, 124, 118, 126, 116, 0, 0, 115, 0, + 0, 0, 0, 109, 853, 818, 414, 419, 820, 422, + 841, 420, 1596, 1657, 1787, 0, 460, 462, 0, 467, + 859, 819, 0, 840, 855, 827, 0, 0, 0, 0, + 0, 0, 0, 956, 0, 0, 0, 854, 832, 843, + 0, 826, 821, 842, 0, 0, 188, 187, 189, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 614, 637, + 0, 0, 0, 0, 0, 0, 0, 608, 306, 287, + 288, 0, 286, 0, 551, 0, 0, 1198, 1194, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1214, 0, + 0, 939, 939, 939, 939, 939, 939, 939, 920, 948, + 436, 456, 0, 571, 539, 0, 0, 361, 150, 0, + 0, 0, 444, 538, 536, 535, 537, 0, 0, 0, + 0, 1190, 0, 0, 0, 404, 0, 0, 0, 321, + 323, 325, 326, 327, 0, 399, 401, 0, 0, 390, + 0, 0, 0, 0, 705, 730, 0, 748, 731, 0, + 0, 0, 768, 773, 769, 751, 0, 1051, 1052, 0, + 1066, 0, 1154, 0, 1153, 1165, 0, 0, 1171, 1169, + 0, 1171, 0, 1171, 0, 1146, 0, 1148, 1165, 1551, + 0, 1637, 1186, 1018, 271, 0, 0, 450, 271, 0, + 271, 0, 271, 271, 0, 881, 477, 0, 524, 0, + 0, 271, 584, 1479, 0, 667, 363, 0, 678, 0, + 0, 689, 684, 686, 0, 693, 0, 0, 1015, 1016, + 1031, 1024, 1026, 1025, 0, 0, 1022, 1481, 583, 0, + 0, 271, 0, 694, 1094, 1482, 1483, 0, 0, 0, + 0, 1517, 0, 0, 1400, 1376, 1378, 1215, 1390, 0, + 1228, 1401, 1402, 1380, 1382, 0, 1469, 0, 0, 1391, + 1336, 1337, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1349, 1348, 1392, 1451, 0, + 0, 1504, 1505, 1393, 1258, 1259, 1259, 0, 0, 1511, + 0, 0, 0, 1398, 1403, 0, 0, 1408, 0, 1429, + 0, 0, 0, 1359, 1479, 1250, 1251, 0, 0, 0, + 0, 0, 0, 0, 0, 1333, 1316, 1310, 0, 1314, + 1318, 0, 0, 0, 0, 1302, 1328, 1298, 0, 0, + 1304, 0, 1329, 1089, 1089, 1089, 1089, 1086, 0, 0, + 1141, 0, 1126, 0, 0, 0, 1437, 0, 1367, 1437, + 0, 172, 0, 197, 183, 0, 0, 0, 1036, 1017, + 1039, 1101, 0, 1470, 719, 717, 718, 1103, 0, 0, + 1137, 1136, 1135, 1104, 1108, 1105, 0, 844, 810, 837, + 939, 0, 354, 0, 0, 0, 953, 435, 0, 434, + 432, 452, 753, 0, 1216, 728, 733, 734, 0, 330, + 0, 0, 236, 0, 244, 241, 258, 250, 259, 251, + 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 850, 131, 0, 0, 0, 0, 112, + 111, 132, 130, 0, 129, 0, 464, 465, 463, 459, + 0, 466, 468, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 849, 815, 609, 0, 0, + 610, 618, 0, 0, 611, 0, 0, 0, 0, 0, + 0, 620, 309, 294, 298, 955, 955, 0, 299, 955, + 295, 955, 292, 1737, 1459, 1460, 547, 554, 544, 546, + 548, 545, 0, 553, 519, 0, 0, 0, 1199, 0, + 1267, 1268, 1269, 1270, 1271, 1272, 0, 1266, 1273, 0, + 939, 938, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 341, 0, 0, 335, 0, 0, 773, 329, + 332, 333, 0, 449, 0, 541, 542, 0, 320, 0, + 0, 499, 493, 0, 555, 533, 0, 1192, 456, 1004, + 0, 395, 322, 347, 382, 0, 397, 0, 384, 383, + 385, 0, 392, 917, 437, 0, 705, 0, 0, 729, + 0, 0, 0, 766, 770, 767, 0, 0, 744, 0, + 752, 722, 0, 1044, 1156, 1163, 0, 1144, 0, 1170, + 1166, 0, 1167, 0, 0, 1168, 0, 0, 1163, 0, + 0, 0, 785, 0, 271, 783, 0, 578, 0, 580, + 787, 271, 271, 485, 0, 441, 398, 677, 691, 687, + 0, 0, 660, 696, 1011, 1014, 1029, 1027, 699, 0, + 661, 698, 1486, 1234, 0, 1519, 1515, 0, 1487, 0, + 1499, 1498, 1500, 0, 1354, 0, 0, 1346, 1344, 1345, + 1338, 1339, 1340, 1341, 1342, 1343, 1335, 1347, 1509, 1508, + 1502, 1503, 1254, 1252, 0, 1395, 1396, 1397, 1510, 1404, + 0, 1423, 1422, 0, 0, 0, 1410, 0, 0, 1419, + 0, 1453, 1240, 1273, 1278, 0, 0, 1301, 1514, 1319, + 0, 0, 0, 1297, 0, 0, 0, 0, 1306, 1469, + 0, 0, 0, 0, 0, 0, 1081, 1080, 1184, 0, + 1128, 1437, 1437, 1437, 1373, 1440, 1435, 1436, 1368, 1568, + 0, 0, 1528, 0, 1043, 1034, 0, 1102, 1117, 1110, + 1118, 0, 356, 0, 0, 773, 858, 433, 754, 0, + 746, 328, 0, 835, 0, 0, 0, 0, 278, 279, + 282, 0, 0, 0, 0, 0, 572, 558, 0, 0, + 573, 574, 0, 0, 790, 791, 789, 127, 113, 134, + 133, 114, 128, 461, 823, 0, 0, 0, 0, 0, + 857, 831, 856, 829, 828, 830, 824, 487, 0, 612, + 0, 0, 613, 624, 622, 621, 623, 615, 310, 108, + 0, 0, 0, 0, 0, 0, 0, 521, 0, 0, + 526, 515, 517, 0, 0, 0, 1195, 1200, 1275, 1208, + 514, 0, 930, 929, 928, 932, 931, 934, 933, 925, + 924, 937, 936, 923, 922, 927, 926, 0, 0, 339, + 343, 344, 342, 334, 773, 361, 394, 0, 0, 0, + 0, 0, 501, 0, 534, 0, 1191, 481, 1002, 402, + 0, 0, 345, 0, 386, 324, 400, 401, 0, 0, + 396, 0, 912, 439, 0, 0, 704, 0, 732, 749, + 750, 0, 0, 773, 772, 876, 877, 874, 875, 0, + 1155, 0, 0, 1157, 0, 0, 1159, 1161, 0, 0, + 0, 0, 0, 1554, 1437, 1188, 1187, 271, 451, 271, + 271, 882, 525, 0, 0, 0, 685, 271, 0, 1518, + 1389, 1399, 1497, 0, 0, 1355, 0, 0, 1394, 1875, + 0, 0, 1427, 1428, 1409, 0, 1723, 1414, 0, 0, + 0, 1571, 1325, 1323, 1320, 0, 1321, 0, 0, 1303, + 1299, 0, 1305, 1330, 1085, 1084, 1083, 1082, 0, 0, + 1431, 1371, 1372, 1369, 1442, 1439, 0, 1273, 1040, 0, + 0, 945, 0, 773, 394, 747, 237, 238, 239, 240, + 273, 0, 851, 816, 0, 0, 564, 0, 0, 0, + 0, 852, 817, 0, 0, 0, 961, 0, 0, 616, + 617, 293, 0, 296, 301, 0, 302, 297, 300, 523, + 522, 520, 516, 518, 1196, 0, 799, 799, 0, 519, + 935, 0, 0, 331, 394, 368, 0, 336, 0, 457, + 0, 917, 322, 456, 500, 0, 0, 556, 403, 386, + 0, 0, 346, 0, 390, 0, 387, 0, 391, 0, + 0, 0, 0, 429, 0, 0, 0, 0, 706, 713, + 713, 771, 0, 775, 0, 743, 720, 0, 0, 1164, + 1173, 0, 1160, 1158, 1149, 0, 1151, 800, 579, 581, + 486, 688, 695, 271, 1350, 0, 0, 0, 0, 1405, + 0, 1406, 1411, 1415, 0, 1412, 1413, 1322, 1326, 1324, + 1307, 1125, 1127, 0, 1067, 0, 1098, 1437, 198, 1471, + 0, 0, 394, 357, 0, 242, 281, 0, 0, 570, + 559, 0, 0, 575, 0, 0, 0, 0, 0, 619, + 285, 308, 303, 799, 0, 796, 795, 513, 0, 338, + 337, 0, 373, 0, 455, 0, 568, 913, 469, 502, + 503, 498, 0, 390, 351, 349, 353, 350, 348, 352, + 0, 392, 388, 389, 0, 914, 0, 438, 963, 0, + 0, 276, 0, 0, 711, 716, 716, 774, 0, 0, + 1185, 1162, 0, 1150, 662, 1351, 0, 1352, 0, 0, + 1417, 1416, 1430, 1432, 0, 0, 1445, 1097, 1370, 1111, + 361, 358, 272, 0, 562, 569, 560, 570, 0, 0, + 957, 0, 958, 959, 962, 794, 798, 797, 0, 365, + 366, 367, 0, 340, 369, 370, 0, 458, 0, 0, + 0, 392, 381, 312, 915, 916, 276, 713, 0, 392, + 707, 712, 719, 719, 773, 776, 0, 1172, 1353, 1420, + 1407, 1418, 0, 0, 1441, 0, 0, 0, 368, 0, + 561, 577, 576, 0, 0, 0, 0, 0, 371, 0, + 372, 393, 567, 0, 506, 313, 392, 716, 275, 1185, + 709, 708, 721, 880, 1433, 1434, 0, 0, 0, 1443, + 1446, 1444, 1438, 373, 0, 960, 0, 378, 0, 377, + 0, 375, 374, 557, 508, 510, 511, 0, 504, 507, + 509, 512, 1185, 719, 700, 879, 878, 0, 0, 1450, + 1449, 1448, 519, 563, 0, 376, 380, 379, 488, 0, + 701, 710, 862, 873, 861, 863, 871, 868, 870, 869, + 867, 0, 359, 0, 505, 0, 872, 866, 1066, 1053, + 1447, 0, 864, 873, 506, 865, 0, 489 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short int yydefgoto[] = { - -1, 47, 48, 49, 50, 1000, 1590, 2057, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 1029, 60, 61, - 750, 1237, 1702, 62, 1534, 600, 1478, 1479, 1642, 1480, - 1462, 940, 1481, 1001, 1021, 64, 65, 935, 1452, 66, - 67, 68, 1058, 1059, 1034, 1060, 1007, 1271, 2979, 69, - 70, 2146, 1184, 2147, 2520, 466, 1667, 2801, 2802, 71, - 1234, 2196, 2197, 2198, 2199, 2171, 2563, 2564, 2565, 2200, - 2855, 3026, 2201, 1542, 1181, 1663, 1664, 3114, 3179, 3180, - 3181, 3235, 2857, 2207, 2590, 2863, 3014, 72, 1251, 1727, - 2202, 2203, 73, 74, 1047, 1604, 2064, 1482, 1464, 1465, - 75, 492, 2592, 2869, 3038, 76, 169, 77, 1239, 78, - 79, 1246, 1718, 1719, 2848, 3019, 3120, 3242, 3243, 3006, - 2812, 2813, 2814, 80, 81, 82, 83, 1581, 1694, 1695, - 2524, 991, 1188, 1670, 1671, 2574, 84, 2755, 2756, 493, - 3184, 3163, 85, 86, 2759, 2760, 87, 88, 89, 90, - 91, 528, 799, 800, 2021, 92, 93, 730, 2131, 94, - 544, 813, 95, 96, 551, 1815, 553, 1320, 2266, 2267, - 2644, 1781, 663, 97, 98, 1790, 1818, 99, 494, 2597, - 3042, 3043, 3143, 1974, 2419, 100, 495, 1025, 1568, 1569, - 1570, 1571, 2601, 1572, 2216, 2217, 2218, 2598, 2605, 101, - 1023, 1562, 102, 103, 104, 1586, 680, 105, 3108, 106, - 773, 107, 572, 1337, 108, 1607, 109, 110, 111, 2219, - 3265, 3275, 3276, 3277, 2882, 3251, 112, 3267, 114, 115, - 116, 149, 698, 699, 700, 117, 2867, 118, 119, 1689, - 2170, 2548, 120, 121, 1535, 1993, 122, 123, 124, 1228, - 125, 126, 127, 128, 706, 129, 130, 131, 624, 616, - 966, 1500, 132, 1305, 532, 133, 824, 1807, 134, 802, - 135, 3268, 1326, 1792, 1793, 1796, 3269, 1266, 138, 1330, - 1801, 1804, 3270, 1490, 1491, 1492, 1493, 1494, 1961, 140, - 767, 1737, 3271, 908, 143, 144, 145, 1446, 1944, 561, - 977, 590, 629, 630, 1505, 1506, 984, 1520, 1513, 1515, - 2732, 2953, 985, 1518, 986, 987, 1977, 146, 1948, 1741, - 1742, 1743, 2227, 2237, 2614, 2889, 1744, 612, 1745, 2398, - 1750, 2189, 2190, 1332, 1677, 1212, 909, 1213, 1687, 910, - 1369, 1215, 911, 912, 913, 1218, 914, 915, 916, 917, - 1353, 1411, 918, 919, 1388, 1685, 1302, 1856, 921, 922, - 2701, 2932, 2923, 1881, 1882, 1471, 2697, 923, 1935, 1439, - 682, 924, 2526, 1441, 1876, 1841, 1524, 1822, 1351, 1842, - 1853, 2313, 1860, 1865, 2336, 2337, 1877, 1903, 925, 1826, - 1827, 2297, 1355, 926, 703, 704, 1401, 1899, 969, 970, - 618, 927, 928, 929, 1321, 613, 2885, 780, 660, 2028, - 1157, 459, 558, 930, 931, 932, 933, 2268, 1468, 614, - 655, 1158, 453, 454, 657, 1162, 461 + -1, 49, 50, 51, 52, 1070, 1733, 2263, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 1100, 62, 63, + 792, 1244, 1841, 64, 1657, 630, 1501, 1502, 1782, 1503, + 1487, 998, 1504, 1071, 1092, 66, 67, 992, 1476, 68, + 69, 70, 1113, 1114, 1077, 1282, 3375, 1724, 3499, 2225, + 2226, 71, 72, 2331, 1190, 2332, 2742, 488, 1804, 3059, + 3060, 73, 1241, 2388, 2389, 2390, 2391, 2359, 2789, 2790, + 2791, 2392, 3122, 3302, 2393, 1665, 866, 1331, 1332, 3402, + 3483, 3484, 3485, 3561, 3124, 2399, 2822, 3130, 3287, 74, + 1261, 1872, 2394, 2395, 2811, 75, 76, 1867, 1138, 1139, + 1738, 2746, 77, 516, 2649, 2360, 2361, 3313, 78, 183, + 79, 1248, 80, 81, 82, 83, 2793, 3288, 1143, 2275, + 2276, 2277, 2278, 2701, 84, 1246, 1144, 1850, 85, 86, + 87, 1771, 88, 89, 90, 1255, 1861, 1862, 3113, 3295, + 3411, 3567, 3568, 3279, 3070, 3071, 3072, 91, 92, 93, + 94, 1240, 1833, 1834, 2747, 1061, 1194, 1807, 1808, 2803, + 95, 3016, 3017, 517, 3489, 3466, 96, 97, 3020, 3021, + 98, 99, 100, 101, 102, 554, 847, 848, 2201, 103, + 1601, 104, 771, 2318, 105, 571, 862, 106, 107, 579, + 1972, 581, 1343, 2471, 2472, 2882, 1938, 707, 108, 109, + 1947, 1975, 110, 518, 2828, 3317, 3318, 3435, 2140, 2627, + 111, 519, 1096, 1693, 1879, 2406, 2407, 1695, 1696, 2837, + 1697, 2408, 2413, 2414, 2415, 2833, 2841, 3323, 3324, 112, + 1094, 1686, 113, 114, 115, 1118, 724, 116, 3395, 117, + 817, 118, 600, 1360, 119, 1704, 2663, 120, 121, 122, + 2416, 3594, 3605, 3606, 3607, 3149, 3577, 123, 3596, 125, + 126, 127, 161, 743, 744, 745, 128, 3132, 129, 130, + 1827, 2358, 2772, 131, 132, 1658, 2168, 133, 134, 135, + 1234, 136, 137, 138, 139, 1172, 140, 141, 142, 483, + 651, 1029, 1037, 143, 1322, 558, 144, 879, 1964, 145, + 850, 146, 3597, 1349, 1949, 1950, 1953, 3598, 1277, 149, + 1353, 1958, 1961, 3599, 1604, 1605, 1606, 1607, 1608, 2126, + 151, 811, 1883, 3600, 964, 154, 155, 156, 157, 655, + 656, 1470, 2102, 589, 1044, 618, 667, 668, 1620, 1621, + 1639, 1640, 1631, 2142, 1633, 1634, 2153, 1626, 2970, 3220, + 1637, 1638, 1054, 1055, 2146, 158, 2106, 1887, 1888, 1889, + 2424, 2434, 2850, 3156, 1890, 875, 649, 1891, 2602, 1896, + 2380, 2381, 1698, 1814, 1218, 965, 1219, 1825, 966, 1392, + 1221, 967, 968, 969, 1224, 970, 971, 972, 973, 1376, + 1434, 974, 975, 1411, 1822, 1823, 1318, 2014, 977, 978, + 2939, 3199, 3190, 2039, 2040, 1494, 2935, 3364, 3452, 3453, + 2978, 2976, 3224, 3366, 3517, 3549, 3550, 979, 2093, 1463, + 726, 980, 2749, 1465, 2034, 1646, 1374, 1981, 1998, 1999, + 2011, 2518, 2018, 2023, 2541, 2542, 2035, 2061, 981, 1984, + 1985, 2502, 1378, 982, 1021, 1022, 1424, 2057, 1032, 1033, + 653, 983, 984, 985, 1344, 642, 3152, 825, 703, 2233, + 1592, 747, 586, 986, 987, 988, 989, 1772, 1491, 643, + 698, 2279, 480, 481, 700, 1597, 644 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -2901 +#define YYPACT_NINF -3250 static const int yypact[] = { - 5939, 311, 4200, -2901, -2901, 311, -2901, 33528, 32394, 52, - 588, 97, 4480, 33906, 38442, 470, 161, 48207, 311, 38442, - 277, 24812, 29748, 573, 38442, -78, 433, 24812, 38442, 38820, - 531, 477, 39198, 34284, 29370, 693, 38442, 727, 39576, 34662, - 529, 433, 22505, 30504, 849, 508, 590, 1046, 669, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, 772, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, 1327, -2901, 582, 1378, 748, -2901, -2901, -2901, - 27858, 38442, 38442, 38442, 27858, 38442, 30504, 20152, -2901, 38442, - 38442, 30504, 30504, 38442, 924, 38442, 38442, 38442, 30504, 1057, - 66, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, 643, 941, 1072, - 1085, -2901, 3334, -78, -2901, -2901, 32394, 922, 27858, 38442, - 946, 994, 38442, -2901, 38442, 826, 38442, 848, 20547, 1087, - 38442, 38442, 38442, -2901, -2901, 1077, 38442, -2901, 38442, -2901, - 38442, -6, 1117, 1316, 1243, 447, -2901, 35040, -2901, -2901, - 30504, -2901, -2901, -2901, -2901, 28236, 38442, 1282, -2901, 39954, - -2901, 28614, 40332, -2901, 20942, 1415, 40710, 41088, -2901, -2901, - -2901, 41466, 1180, 41844, -2901, 42222, -2901, 1328, 42600, -2901, - 1126, -2901, 772, -106, -2901, 102, 112, 106, 115, 116, - 118, -106, -2901, 1133, 817, -2901, -2901, 1281, -2901, -2901, - -2901, 1310, 409, -2901, -2901, 32394, -2901, -2901, -2901, -2901, - -2901, 32394, 817, -2901, -2901, -78, 1149, 1522, 38442, -2901, - 38442, -2901, 32394, 38442, -2901, -2901, 1538, 1212, 1421, 1196, - -2901, 1375, 1432, 1385, 20, -78, 1379, -2901, -2901, 1465, - 11511, 30882, 42978, 49, 26720, 35418, 1348, 66, 1481, -2901, - 236, -2901, 1686, 1361, 1574, 1196, 66, 32394, -2901, -2901, - 18218, 43356, 1475, 1364, -2901, -2901, 1643, 11910, -2901, 1387, - 1389, -2901, 5939, -2901, 32394, 843, 843, 1745, 843, 970, - 1007, 508, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, 842, 643, 1405, -2901, 918, -2901, 906, 1404, - 915, -2901, 192, 909, 1420, 224, -2901, 1091, 38442, 38442, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - 1433, -2901, -2901, 1412, 856, 973, 12, 408, 1806, 1017, - 241, 1592, 704, 967, 1567, 38442, 1666, -7, -2901, 6, - -2901, 13905, 22127, -2901, 643, 38442, -2901, 32394, 27858, 1448, - -2901, 38442, -2901, -2901, -2901, 27858, -2901, 1628, 21337, -2901, - 38442, -2901, -2901, -2901, -2901, 1568, 38442, -2901, -2901, 1679, - 38442, -2901, 1454, -53, 1457, 1812, 47136, 38442, 1501, 1841, - -2901, -2901, 1501, -2901, -2901, 38442, 38442, 1462, 740, 1501, - 1839, 1842, 1636, 293, 1320, 101, 1501, 32394, 32394, 32394, - 1704, 38442, 43734, 27858, 38442, -2901, -2901, 198, 1536, 1764, - 1405, 237, 1766, 1483, 1769, -2901, 1770, 1420, 1771, 1484, - -2901, 44112, 44490, 1772, 1490, 38442, 1780, 1484, 1781, 1669, - 1791, -2901, 571, 1792, 1681, 1797, 1484, 27100, 1801, 108, - -2901, 13905, -2901, 625, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, 38442, -2901, 31260, 38442, 31638, 61, 78, - -2901, 38442, -2901, 47136, 1899, 38442, 1793, 1793, 1793, -2901, - -2901, -2901, 1741, 38442, 1802, 1803, 31260, 38442, -2901, 44868, - 1526, 1032, 1541, 810, 1548, 13905, 1530, 88, 88, 1531, - -2901, -2901, 1532, 1535, -2901, 976, 976, 1689, 1537, 1540, - -2901, 977, 1542, 1557, 1560, 1021, 1543, 1544, 1545, 1372, - 88, 13905, -2901, 1547, 976, 1549, 1550, 1554, 1575, 1555, - -2901, 1576, 1558, 804, 1026, 1561, 1562, -2901, 1537, -2901, - 90, 1565, 1566, 1569, 1572, 1573, 1577, 1580, -2901, -2901, - -2901, -2901, -2901, -2901, 13905, 13905, -2901, 12309, -2901, -78, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, 99, -2901, 1022, - 5458, -2901, -2901, 1711, 13905, -2901, -2901, 151, -2901, 643, - 1023, -2901, -2901, -2901, -2901, 205, 1563, 959, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, 26340, 1941, -2901, 659, 6, - 975, 1902, 23639, 24030, -2901, -2901, 1795, -2901, 128, 32394, - -2901, 38442, -2901, 18978, -2901, -2901, 772, -2901, 25170, -2901, - 1009, -2901, -2901, -2901, 1582, -2901, -2901, 590, 590, 13905, - 590, -10, 12708, 13905, 1858, 760, 1860, -2901, -2901, 643, - 22883, 771, 1663, 1665, 27480, 1587, 1667, 1671, 42978, -2901, - -2901, -2901, -2901, 139, 633, 1672, 121, -2901, 1768, -95, - 1707, -2901, 1674, 1675, 1782, -95, 177, 45246, -2901, -2901, - -2901, -2901, -2901, 2725, 10734, -2901, -2901, -2901, 1676, 1660, - 1680, 1682, 1462, 441, 1598, -2901, 1662, 1670, 46002, 21732, - 1684, -2901, -2901, 1690, 1691, 1692, 1728, 828, 129, 1964, - 1789, 394, 1177, 142, 32394, 1868, 181, 540, 1631, -2901, - -2901, 1714, 1715, 38442, 38442, 38442, 38442, 30504, 1716, 1759, - 1718, -2901, -2901, 1719, 1035, 926, -2901, -2901, 66, -2901, - 3616, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, 1405, 47136, 1815, - 1420, -95, 38442, 38442, 1645, 463, 640, 1819, 38442, 1881, - 38442, 1693, -2901, -2901, 1501, -2901, 23261, 1462, -2901, 1650, - -2901, 1702, -2901, 1702, 1702, 1653, 1653, 1654, -2901, -2901, - -2901, 1372, 1702, 1653, -2901, 47892, -2901, -88, 777, -2901, - -2901, 2038, 2041, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, 68, 1079, -2901, 2050, -2901, -2901, 47136, -2901, - 1975, 1720, 27480, -2901, 1712, -2901, 38442, 173, 38442, 1876, - 38442, 38442, 38442, 38442, -2901, -2901, 71, 55, -2901, -2901, - -2901, 2047, -30, 1454, 26720, 1942, 38442, 1840, 1420, 2049, - -2901, 310, -2901, 1787, -2901, 17078, 1721, 27858, 237, -2901, - -2901, -2901, -2901, 47136, 38442, 27858, 237, 38442, 38442, 1956, - 1733, 1962, 1736, 21732, 46002, 143, 38442, 38442, 32394, 38442, - -2901, -2901, -2901, -2901, 38442, 32394, 38442, 1965, 237, 38442, - 38442, -2901, 25170, 1055, 72, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, 38442, 27858, 38442, 38442, 32394, 32394, 38442, - 1756, 1563, 479, -2901, 1734, 18598, 1811, -2901, 140, 32394, - 1867, -2901, -2901, 1058, 491, 545, -2901, -2901, -2901, -2901, - -2901, -2901, 31638, 29748, 1959, 19, 38442, -2901, 13905, 13107, - -2901, -2901, -2901, 1696, 25170, 1737, 13905, -2901, -2901, 13905, - 1717, 1717, 13905, -2901, -2901, -2901, -2901, 514, 1717, -2901, - 13905, 13905, 1717, 1717, 1702, 1702, -2901, 2347, 13905, -2901, - 21732, 13905, 15501, 9956, 13905, 1775, 1784, 1717, -2901, 1717, - -2901, 13905, 11112, -2901, 13905, 1908, 13905, 975, 1909, 13905, - 975, 643, 1709, 1709, 508, 908, 6279, 1710, -2901, 1817, - 1717, -2901, 1717, 136, 13905, 27480, 1790, 155, 13905, 1723, - 542, -2901, 13905, 157, -2901, 1724, 13905, 1804, 147, 13905, - 13905, 13905, 13905, 13905, 13905, 13905, 13905, 13905, 47136, -2901, - 15900, 160, -40, 294, 32016, 11511, 1984, 972, 9556, -2901, - -2901, -2901, -2901, 1941, -2901, -2901, 1799, -2901, -2901, -2901, - -2901, 854, -2901, -2901, -2901, -2901, 1031, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, 1722, -2901, - -2901, -2901, -2901, -2901, 1722, -2901, -2901, 1725, -2901, 38442, - 22, -2901, -2901, -2901, 1742, -2901, 30126, -2901, 11910, 38442, - -2901, -2901, 1957, -2901, -2901, 1726, -2901, 4031, 1957, 1900, - 1913, 1913, -2901, -43, 25170, 1960, 25170, -2901, -2901, -2901, - -2901, 611, -2901, 1738, 1075, 1814, 1816, 1865, 38442, 38442, - -2901, 27480, 38442, 38442, -2901, 2095, 1758, 38442, 1985, 1988, - 1761, -2901, -2901, 38442, -2901, 1937, 38442, 13905, 1943, 38442, - 1945, -2901, 642, 38442, 38442, 1938, -2901, -2901, -2901, 38442, - -2901, -2901, -2901, 1933, -2901, -2901, 47892, -2901, 1083, -2901, - 47514, 45624, -2901, -2901, 193, 38442, 38442, 38442, 38442, -2901, - 38442, -2901, 24, 38442, 38442, 1767, 1773, 1774, -2901, 38442, - 5226, 38442, 38442, 38442, 38442, -95, -2901, 2134, -95, -95, - 709, 2136, 1501, 1501, -2901, -2901, -2901, 38442, 38442, 38442, - 38442, 32772, 38442, 38442, 752, 780, 38442, 33150, -2901, 32394, - 38442, 38442, 38442, 538, 1305, 38442, 38442, 697, -15, 1910, - 1915, 1916, 38442, 38442, 38442, 5226, 38442, 1849, 1854, 111, - 1925, -2901, -2901, -2901, -2901, 13905, 2016, 2166, 38442, 2018, - 2020, 1846, 1847, 46002, 216, 38442, 38442, 38442, 38442, 38442, - 38442, 2024, 216, 1088, -2901, -2901, 1967, 73, -2901, 1808, - 1100, -2901, -2901, 13905, 2178, 47136, 1800, 1805, 1873, 1875, - 1877, -2901, -2901, 1878, 1717, -2901, 1228, -2901, 71, 605, - -2901, 5226, 2080, 38442, 1103, -2901, 1822, 32394, 5226, -2901, - 943, 29748, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -78, 1462, 1462, 1462, 1462, -2901, -2901, -2901, 1981, 1979, - 1818, 38442, 5226, 828, 154, 32394, 28992, 1078, 2196, 2078, - -78, 1990, 32394, 1914, -2901, 2079, 2083, 2102, -2901, 16698, - 35796, 1824, 1249, -2901, 35796, 36174, -2901, 643, 1831, 14304, - 1811, 1405, -2901, 2214, -2901, 1420, -2901, 1484, -2901, 38442, - 38442, 38442, 38442, 1834, 1836, -2901, 1484, 2006, 237, -2901, - 2009, 237, 1484, 26720, -2901, 108, -2901, -2901, 13905, 1924, - 1484, 1835, -2901, 1484, 1484, 1563, 1563, 1484, 36552, 2235, - 2108, -2901, 1114, -2901, -2901, 11511, -2901, 137, -2901, 255, - 2, 2051, -2901, -2901, -2901, -2901, 47136, -2901, -2901, -2901, - -2901, -2901, 38442, 23, 2017, 1843, 36552, 2210, 237, -2901, - 1128, 260, 663, -2901, 13905, 13905, 53, -2901, 6712, 1130, - 1848, 1850, 1131, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, 1852, 2120, 1853, 1136, 1139, 1855, 1856, -2901, -2901, - 3929, 1861, 6816, 1863, 15501, 15501, 2364, -2901, -2901, 15501, - 1864, -2901, 1145, 4720, 1862, 1872, 1882, 1886, 1879, 1880, - 7053, 13506, 13905, 13506, 13506, 7240, 1862, 1883, 1146, 27480, - 7342, 1151, -2901, 13905, 27480, 4009, 13905, -2901, -2901, 13905, - 38442, 1884, 1888, -2901, 2347, -2901, 1893, -2901, 15501, 15501, - 5163, 12309, -2901, -2901, 2131, -2901, -2901, 630, -2901, 1869, - -2901, -2901, 5865, 165, 13905, 1723, 13905, 1952, 21732, 7137, - 13905, 4467, 5477, 5477, 148, 148, 107, 107, 107, 98, - -2901, 294, -2901, -2901, -2901, 1891, 1555, 13905, -2901, 1370, - 1382, 32394, 2980, 3496, -2901, -2901, -2901, 17078, 1922, 13905, - 13905, 1892, -2901, 1154, 66, -2901, 1717, 136, 24421, -2901, - -2901, 1161, 18978, 1721, 11910, 643, -2901, -2901, -2901, 1164, - 13905, -2901, -2901, 1447, 1025, -2901, 38442, 1867, 1867, 13905, - 13905, 12708, -2901, -2901, 38442, 38442, 38442, -2901, -2901, -2901, - -2901, -2901, 2097, -2901, 13905, 113, 1894, 1895, 38442, 237, - -2901, -2901, 25170, -2901, -2901, 2125, -2901, -2901, -2901, -2901, - 2073, -2901, -2901, 1079, -2901, 45624, 47514, -2901, 47514, -2901, - 1079, 674, -2901, 1484, -2901, -2901, -2901, -2901, 1048, -2901, - 186, 47136, 2056, 46380, -2901, 38442, 2115, -2901, -2901, -2901, - 2058, 462, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - 333, 38442, -2901, 1717, 2060, 38442, 1966, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -95, -2901, -2901, -2901, -2901, -2901, - 38442, -95, -95, -2901, 47136, 320, -2901, -2901, -2901, -2901, - -2901, 237, 237, 38442, 38442, 38442, 38442, -2901, -2901, -2901, - -2901, -2901, -2901, 1980, -2901, -2901, -2901, 802, -2901, -2901, - -2901, 2114, 2122, 2124, 1992, 1993, 1995, 1996, -2901, 1998, - 1999, 2000, -2901, -2901, -2901, -2901, 38442, 38442, -2901, -2901, - -2901, 7624, 216, 47136, 2157, 216, 216, 38442, 38442, 1898, - -2901, -2901, -2901, 2158, 2159, 2160, 2161, 2162, 2163, 216, - -2901, -2901, 38442, -2901, -2901, -2901, -53, 1298, 19757, -2901, - 1953, 7646, 1936, 1805, 1934, 1717, 788, 557, 47, 2052, - 2142, 1939, -2901, 2113, 2164, 1961, 1961, 1961, 1961, 1961, - -2901, 903, 2010, -2901, -2901, 27480, 19757, 1454, 173, 2077, - 699, -2901, -2901, -2901, -2901, -2901, 32394, 71, -78, 1167, - -2901, 47136, 38442, -2901, 1949, 32394, 1954, 1940, -2901, -2901, - -2901, -2901, 1174, -2901, 47136, -14, 2127, 2128, 590, 38442, - 2032, 32394, 2015, -78, 26720, 46758, 1944, -2901, -2901, 2130, - -2901, -2901, 590, 10356, 1249, 1963, 38442, -2901, 1968, 17078, - 2189, 2126, -2901, 17078, 2126, 1041, 2126, 2190, -2901, 19358, - -2901, 1969, 912, 9556, 2141, 25170, -2901, 237, 47136, 237, - 2023, 237, 2027, 237, 46002, 237, 32394, -2901, 32394, -2901, - 237, -2901, 25170, 32394, 27858, 38442, 617, -2901, -2901, 2135, - -2901, 590, 38442, 643, 1970, -2901, -2901, -2901, -2901, 2258, - 2259, -2901, -2901, -2901, 38442, 31260, 146, 38442, -2901, -2901, - -2901, -2901, 1976, 1175, 7675, 13905, -2901, 2268, 47136, -2901, - -2901, -2901, -2901, -2901, 13905, -2901, -2901, -2901, -2901, -2901, - 13905, -2901, 13905, 2248, -2901, 1978, 1978, 15501, 917, 1549, - 15501, 15501, 15501, 15501, 15501, 15501, 15501, 15501, 15501, 47136, - 16299, 690, -2901, -2901, 13905, 13905, 2257, 2248, -2901, -2901, - -2901, 1264, 1264, 47136, 1982, 1862, 1983, 1986, 13905, -2901, - -2901, 1182, 27480, -2901, 13905, 4759, 1183, 2036, 7938, 643, - 7961, -2901, 2345, -78, 13905, 1390, 1635, 13905, 1189, 13905, - 2260, -2901, -2901, -2901, 1991, -2901, -2901, 47136, 13905, 15501, - 15501, 6199, -2901, 7755, 13905, 1997, 8547, 12309, -2901, 433, - 433, 433, 433, -2901, 32394, 32394, 1824, 13905, 2255, 1200, - 1205, -2901, -78, 6, 2001, -2901, -2901, 2012, 38442, -2901, - 1811, -2901, -2901, -2901, 2003, -2901, 1025, -2901, -2901, -2901, - 1484, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, 1961, - 8084, -2901, 38442, 38442, 1208, -2901, -2901, 2238, 1054, -2901, - -2901, -2901, 2067, 2081, 2082, 543, 103, 2085, 2088, -2901, - 2090, -2901, -2901, 1484, -106, -78, 38442, 38442, -2901, -2901, - 1484, -2901, -78, 1484, -78, -2901, -2901, -2901, -2901, -2901, - 619, 594, 47136, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - 38442, 2276, 134, 1118, 38442, 38442, 38442, 38442, 38442, 38442, - 38442, -2901, -2901, -2901, -2901, 2019, 216, -2901, -2901, 2236, - 2239, 2249, 216, 216, 216, 216, 216, 216, -2901, -2901, - 149, -2901, -2901, 1841, 1841, 768, -2901, 1841, -2901, 1841, - -2901, 2003, 854, -2901, -2901, -2901, -2901, -2901, -2901, 1808, - -2901, 528, 1717, 1455, 2022, -2901, 2031, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, 136, 32394, 1961, -2901, 59, 62, - 36930, 37308, 37686, 2044, 38442, 15501, -2901, 726, 539, -2901, - 2246, 32394, 2061, -2901, -2901, -2901, 47136, -2901, -2901, 2403, - 72, 32394, 2313, 2207, 1214, -2901, -2901, 38442, -2901, 1126, - 28992, -2901, 2287, 28992, -2901, 38442, -2901, -2901, -2901, 2391, - 2132, 1277, 2101, 1404, -78, 2015, 38442, 2053, -2901, 2045, - -2901, 2573, -2901, 1462, -2901, -2901, 629, -2901, 35796, 2059, - 38442, 1249, 17078, -2901, -2901, 117, -2901, 17078, 2278, -2901, - 17078, 38442, 2062, 38442, 1215, 25571, -2901, 2055, -2901, 38442, - -2901, 38442, -2901, 2057, -2901, 237, 237, -2901, 2432, 2064, - -2901, -2901, 2326, 36552, -2901, -2901, -2901, -2901, -2901, -2901, - 19, 2331, -2901, -2901, -2901, -2901, 13905, 25170, -2901, 2065, - 25170, 8191, 25170, 2257, 2392, 2335, -2901, 792, 2068, 2392, - 2782, 2782, 1104, 1104, 839, 839, 839, 1978, -2901, 690, - 25170, 25170, -2901, -2901, -2901, -2901, 2066, -2901, -2901, -2901, - 1862, -2901, 14703, -2901, -2901, 2112, 2118, 2069, -2901, 13905, - 15102, 2071, 47892, -2901, -2901, 136, 1709, 15501, 15501, 902, - -2901, 213, 13905, 47136, 1229, 902, 1757, 2040, 13905, 13905, - 8730, 180, 13905, 8421, 32394, 32394, 32394, 32394, -2901, -2901, - 25170, 2436, 2333, -2901, -2901, -2901, -78, 508, -2901, -2901, - 21732, -2901, -106, -2901, 1275, 1285, 2061, -2901, 2144, -2901, - 38442, 38442, 1717, 1717, 47136, 2074, -2901, 1717, 1717, 2089, - -2901, 38442, 38442, 38442, -2901, -2901, 1484, 1484, -2901, -2901, - 903, 2266, 2267, -106, 38442, 2145, -2901, 38442, 38442, 38442, - 38442, 2371, -2901, -2901, -2901, -2901, -2901, -2901, -2901, 2322, - -2901, 216, 216, 216, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, 1501, 2400, -78, -78, 2277, 38442, -78, -78, -2901, - 789, 2409, -2901, 2349, 683, 2109, 2368, 2375, -2901, -2901, - -2901, 2379, -106, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, 13905, 110, 2392, -2901, -2901, -2901, - -2901, 2061, 1454, 2167, 2170, 590, -5, 2410, 2402, 71, - -2901, -78, -2901, -2901, 2117, 730, 2119, 1078, -2901, -2901, - -2901, 533, 38442, -2901, 2474, 2475, 2290, -2901, 38442, 2351, - 1587, 2396, 2140, -2901, 17458, -78, 1944, -2901, -2901, -2901, - -2901, -2901, 2206, -2901, 38442, 1287, -2901, 13905, 2148, -2901, - -2901, 17078, 117, 1295, 38442, 1321, 47136, -2901, -2901, -2901, - 237, 237, 237, 237, -2901, -2901, 2416, 38442, 2309, -2901, - 237, 36552, 25170, -2901, -2901, -2901, 15501, 2414, -2901, 2149, - 47136, -2901, 2150, 1323, 1324, -2901, -2901, -2901, 8465, 2198, - 25170, 2250, 2151, 2152, -2901, 1479, 1479, 213, 1332, -2901, - 15501, 15501, 902, 902, 13905, 902, -2901, -2901, -2901, -2901, - -2901, 13905, 13905, -2901, 136, -2901, 2153, -2901, 2295, 2061, - 2167, -2901, -2901, -2901, 17838, 21732, -2901, 543, 2165, 2168, - 103, -2901, -2901, -2901, -2901, -2901, -2901, -2901, 13905, -2901, - 739, 414, 2199, 1484, 2437, 216, -2901, -2901, -2901, -2901, - -78, -2901, -2901, 38442, 2169, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, 27858, 2544, 32394, 528, -2901, 8492, 2348, - -2901, 2167, 2374, 2418, -2901, 38442, 1277, 28992, -2901, 969, - 2315, -2901, -2901, 1078, 185, 200, -2901, 32394, 2128, 2292, - -2901, 2294, -2901, 2343, 2344, -2901, -2901, -78, -2901, 38442, - 17458, 13905, 1335, -2901, 38064, 9173, -2901, -2901, 32394, 1338, - -2901, 25170, 38442, -2901, -2901, -2901, 1340, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, 146, 874, 15501, 47136, 1350, 13905, - -2901, 13905, -2901, -2901, -2901, -13, -2901, -2901, -2901, 1479, - 1479, 902, 1862, 25170, -2901, -2901, 32394, 2167, -2901, 47136, - 1420, -28, -2901, 47136, 47136, -2901, 25170, 38442, 38442, 38442, - 38442, 38442, -2901, 1298, -2901, 2169, 2544, 660, -2901, -2901, - 2452, -2901, -2901, 483, 2353, 2264, 2464, -2901, -2901, -2901, - -2901, 27858, 2128, -2901, -2901, -2901, -2901, -2901, -2901, 1353, - 2132, -2901, -2901, -2901, -2901, -2901, -2901, 1355, 25139, 2061, - 17458, 38442, -2901, 248, 248, 1922, -2901, 1358, -2901, -2901, - 874, 1360, -2901, 1363, 1386, 2240, -2901, 1454, -2901, 1394, - -2901, -2901, 46002, -2901, 1395, 1396, 2183, 2232, 2183, -2901, - 1484, -2901, -2901, -2901, 2487, -2901, -2901, -2901, 152, -2901, - 2365, 2367, 38442, 38442, 2578, 2202, 2132, -2901, -2901, 2061, - 38064, 2132, -2901, -2901, 1025, 1025, 2499, -2901, -2901, -2901, - -2901, -2901, 2374, 27858, 2203, -2901, -2901, 38442, 2328, 378, - 378, 2516, -2901, 2271, -2901, -2901, -2901, 543, 25956, -2901, - 2132, 248, 1922, -2901, -2901, 637, 2353, 1420, 2354, -2901, - 2493, -2901, 2608, -2901, 174, -2901, -2901, 2074, -2901, -2901, - -2901, -2901, 1397, -2901, -2901, -2901, 1922, 1025, -2901, -2901, - -2901, 581, 528, -2901, -2901, 2360, -2901, -2901, -2901, -2901, - 25956, -2901, -2901, -2901, 613, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, 27858, -2901, 1345, -2901, -2901, 1365, 1389, - 2217, -2901, 613, 25956, -2901, 1422, -2901 + 8488, 370, 2659, -3250, -3250, 370, -3250, 37480, -74, 102, + 425, 119, 9763, 37876, 43024, 485, 164, 3534, 370, 43024, + 1302, 27944, 33124, 549, 43024, 382, 472, 27944, 43024, 43420, + 561, 626, 43816, 38272, 32728, 607, 43024, 281, 44212, 38668, + 514, 34312, 472, 25529, 34312, 734, 535, 44608, 765, 979, + 579, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -74, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, 190, -3250, 566, 206, 812, 585, -3250, + -3250, -3250, 31144, 43024, 43024, 43024, 986, 31144, 43024, 35896, + 23068, -3250, 43024, 43024, 35896, 43024, 34312, 43024, 873, 43024, + 43024, 45004, 35896, 1122, 759, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, 35896, 3446, 382, -3250, -3250, 35896, 1056, + 31144, 43024, 993, 1094, 43024, -3250, 43024, 1376, 1238, 43024, + 1387, 23481, 1189, 43024, 43024, 43024, 43024, -3250, -3250, 1207, + 43024, -3250, 43024, -3250, 45400, 879, 1221, 1448, 1381, 110, + -3250, 39064, -3250, -3250, 34312, -3250, -3250, -3250, -3250, 31540, + 43024, 1462, -3250, 45796, -3250, 1541, 31936, 46192, -3250, 23894, + 1593, 46588, 46984, -3250, -3250, 47380, -3250, 47776, 1336, 48172, + -3250, 48568, -3250, 1404, 48964, -3250, 1282, -3250, -74, 1113, + -3250, 169, 138, 254, 143, 144, 149, 1113, -3250, 1277, + 1277, 661, -3250, -3250, -3250, -63, 1288, 1288, 1288, 1428, + -37, -3250, 1288, 35896, -3250, -3250, -3250, -3250, -3250, 34312, + 661, -3250, -3250, 382, 1309, 1704, 43024, -3250, 43024, -3250, + 35896, 43024, -3250, -3250, 1721, 1356, 1624, 1354, -3250, 1575, + 1578, 1601, 55, 382, 1491, -3250, -3250, 1611, 14050, 382, + 34708, 49360, 82, 29556, 382, 39460, 1464, 759, 1633, -3250, + 273, -3250, 1852, 1495, 1718, 1354, 759, -3250, -3250, 21044, + -3250, 923, 1486, -3250, -3250, 34312, -3250, -3250, 49756, 1597, + -3250, 1775, 14467, -3250, 43024, 1489, -3250, 1512, 1500, 1522, + -3250, 8488, 35896, 949, 949, 1925, 949, 803, 1044, -3250, + 566, 230, 535, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, 738, 923, 1559, -3250, 974, + -3250, 866, 1562, 725, -3250, 186, 1615, 1314, 1584, 294, + -3250, 2402, 43024, 43024, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, 1610, -3250, -3250, 1617, 13, 896, + 3824, 27, 2721, 998, 175, 1801, 996, 1916, 906, 3246, + 43024, 1863, 23, -3250, 104, -3250, 1694, 1819, 1822, 31144, + 1651, -3250, 43024, -3250, -3250, -3250, 31144, -3250, 1842, 24307, + -3250, 43024, -3250, -3250, -3250, -3250, 1777, 43024, -3250, -3250, + 1896, 43024, -3250, 1288, 789, 1667, 2041, 54112, 43024, 1723, + 2079, 1722, -3250, -3250, 1723, -3250, -3250, 43024, 43024, 1687, + 530, 1723, 2088, 2096, 1778, 1883, 213, 1419, 115, 2010, + 1723, 35896, 35896, 35896, 1961, 43024, 50152, 31144, 43024, -3250, + -3250, 208, 1789, 2029, 1559, 233, 2031, 1735, 2033, -3250, + 1776, 2034, 1584, 2037, 1737, -3250, 50548, 50944, 2040, 1610, + 43024, 2043, 1737, 2045, 1924, 2046, 233, 2048, -3250, 698, + 2049, 1933, 2051, 1304, 1737, 29954, 2052, 106, -3250, 16135, + -3250, 94, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, 43024, 1761, 43024, 43024, -3250, -3250, -3250, 33520, + 43024, 35104, -3250, 80, -3250, 31, 43024, -3250, 54112, 2161, + 43024, 2054, 2054, 2054, -3250, -3250, -3250, 1992, 43024, 2058, + 2060, 33520, 43024, -3250, 51340, 1765, 1326, 1794, -56, 1795, + 16135, 1780, 291, 291, 1781, -3250, -3250, -3250, 1045, 1785, + 1786, -3250, 1052, 1052, 1949, 1792, 1793, -3250, 1066, 1796, + 1823, 1825, 1076, 1803, 1807, 1833, 1480, 291, 16135, -3250, + 1834, 1052, 1838, 1839, 1840, 1844, 1841, -3250, 1854, 1847, + 1010, 1046, 1849, 1851, -3250, 1792, -3250, 212, 1855, 1857, + 1858, 1859, 1860, 1861, 1862, -3250, -3250, -3250, -3250, -3250, + 16135, 16135, -3250, 13216, -3250, 382, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, 96, -3250, 1090, 4513, -3250, -3250, 1971, + 16135, -3250, -3250, 162, -3250, 923, 1093, -3250, -3250, -3250, + -3250, -3250, 224, 1816, -3250, 1328, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, 29158, 2253, -3250, 730, 104, 239, + 2207, 26717, 27126, -3250, -3250, 2093, -3250, 35896, -3250, 16135, + 25133, -3250, 923, -3250, 87, 43024, -3250, 21442, -3250, -74, + -3250, 9569, -3250, -91, 1489, 43024, 43024, 2264, -3250, -3250, + -3250, 1512, -3250, -3250, 812, 812, 16135, 812, 854, 835, + 14884, 16135, 2154, 156, 2156, -3250, 803, 1044, -3250, 923, + 25925, 1007, 1955, 1958, 30352, 1878, 1962, 1963, 51736, -3250, + -3250, -3250, -3250, 559, 637, 1965, 532, -3250, 43024, 2063, + 1157, 2005, -3250, 1969, 1970, 2083, 1157, 688, 52132, -3250, + -3250, -3250, -3250, -3250, 726, 12007, -3250, -3250, -3250, 1972, + 1956, 317, 2262, 2080, 12, 872, 147, 35896, 2159, 1980, + 1983, 1908, 908, 1904, -3250, 1968, 1973, 53320, 2078, 24720, + 1991, 49360, -3250, -3250, 1994, 1995, 1157, -3250, 2301, 1157, + 1157, 992, 2302, 1998, 1063, 687, 1723, 1904, 1679, -3250, + 1921, 2003, 18, -3250, 2102, 195, 826, 1904, 2008, 2009, + 43024, 43024, 43024, 43024, 35896, 2013, 2014, 2061, 36292, 2017, + -3250, -3250, 2019, 877, 1904, 1029, 1083, -3250, -3250, 759, + -3250, 43024, -3250, 35896, 1559, 54112, 2107, 1584, 1157, 43024, + 43024, 1610, 870, 713, 2108, 43024, 2185, 1986, -3250, -3250, + 1723, -3250, 26321, 1687, -3250, 1947, -3250, 1999, -3250, 1999, + 1999, 1948, 1948, 1950, -3250, -3250, -3250, 1480, 1999, 1948, + -3250, 55300, -3250, 934, 942, -3250, -3250, 2350, 2353, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, 255, 663, + -3250, 2365, -3250, -3250, 54112, 43024, -3250, 2283, 2016, 30352, + -3250, 2023, -3250, 43024, 948, 382, 2007, 43024, 2182, 43024, + 43024, 43024, 43024, -3250, -3250, 611, 42, -3250, 36292, -3250, + 1679, 2362, -50, 1288, 29556, 2266, 43024, 2157, -3250, 1982, + 2382, -3250, 1265, -3250, 2105, -3250, 19452, 2030, 31144, 233, + -3250, -3250, -3250, -3250, 54112, 43024, 52528, 31144, 233, 43024, + 43024, 2284, 2050, 2288, 2055, 24720, 233, 121, 43024, 43024, + 35896, 43024, -3250, 43024, -3250, -3250, -3250, -3250, 43024, 35896, + 43024, 36292, 2291, 2295, 233, 43024, 43024, -3250, 9569, 1039, + 91, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + 43024, 1135, -3250, -3250, 1159, 43024, 93, 31144, 43024, 43024, + 35896, 35896, 43024, 2081, 1816, 590, -3250, 2068, 20646, 2133, + -3250, 154, 34312, 2196, -3250, -3250, 1167, 589, -36, -3250, + -3250, -3250, -3250, -3250, -3250, 35104, 33124, 2290, 28, 43024, + -3250, 16135, 13633, -3250, -3250, -3250, 2020, 9569, 2062, 16135, + -3250, -3250, 16135, 1277, 1277, 16135, -3250, -3250, -3250, -3250, + 672, 1277, -3250, 16135, 16135, 1277, 1277, 1999, 1999, -3250, + 4553, 16135, -3250, 24720, 16135, 17803, 11193, 16135, 2090, 2056, + 1277, -3250, 1277, -3250, 16135, 12799, -3250, 16135, 2226, 16135, + 239, 2231, 16135, 239, 923, 2025, 2025, 535, 1312, 5305, + 2024, -3250, 2135, 1277, -3250, 1277, 496, 16135, 30352, 2112, + 183, 16135, 2036, 1013, -3250, 16135, 203, -3250, 2038, 16135, + 2118, -3250, 168, 16135, 16135, 16135, 16135, 16135, 16135, 16135, + 16135, 16135, 54112, -3250, 18220, 170, 404, 111, 35500, 14050, + 2316, 962, 10775, -3250, -3250, -3250, -3250, 35896, 2253, -3250, + -3250, 2117, -3250, -3250, -3250, -3250, 1101, -3250, -3250, 1096, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, 2039, -3250, -3250, -3250, -3250, -3250, 2039, -3250, 2042, + 3872, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, 2311, + 2314, 233, -3250, 43024, 172, -3250, -3250, -3250, 2059, -3250, + 33916, -3250, 14467, -3250, 1168, 1792, -3250, 2294, -3250, -3250, + 2057, -3250, 3950, 2294, -3250, -3250, 1154, 2227, 2235, 2235, + -3250, -42, 9569, 2278, 1396, 9569, 1401, -3250, -3250, -3250, + -3250, 5, -3250, 2154, 156, 2053, 1174, 2131, 2134, 2176, + 43024, 43024, -3250, 30352, 43024, 43024, 43024, -3250, 2417, 2064, + 43024, 2300, 2306, 2069, -3250, -3250, 43024, -3250, 2260, 43024, + 16135, 2267, 43024, 575, 2268, -3250, 830, 43024, 43024, 2243, + -3250, -3250, -3250, 29556, -3250, -3250, -3250, 2245, -3250, -3250, + 55300, -3250, -3250, 1176, -3250, 54508, 39856, -3250, -3250, 261, + 43024, 43024, -3250, -3250, 43024, 43024, 43024, 43024, 36688, 43024, + 43024, 22, 804, 43024, 37084, -3250, 35896, 43024, 43024, 30352, + -3250, 43024, 2256, 165, -3250, 740, 43024, 43024, 2071, 1177, + 2158, -3250, 43024, 4189, 43024, 43024, -3250, -3250, 1157, -3250, + -3250, -3250, -3250, -3250, 43024, 43024, 1157, 43024, 1157, 692, + -3250, 30748, 43024, -3250, -3250, -3250, 43024, 43024, 43024, 43024, + 43024, 681, 462, 2219, 2220, 2222, 43024, 43024, 43024, -3250, + -3250, 2192, -3250, 43024, 4189, 43024, 43024, 2164, 2168, 92, + 2238, -3250, -3250, -3250, -3250, -3250, 2337, 2496, 43024, 2341, + 2345, 2163, 2169, 2357, 386, 43024, 43024, 43024, 43024, 43024, + 43024, 2359, 386, 2292, 45, -3250, 2130, 1186, -3250, -3250, + 16135, 2519, 54112, 2122, 2126, 2204, 2206, 2208, -3250, 2132, + 2211, 1277, -3250, -3250, 1005, -3250, 611, 1037, -3250, 20, + 4189, 2422, 43024, 1225, -3250, 2150, 35896, 4189, -3250, 927, + 33124, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + 2423, -3250, 382, 1687, 1687, 1687, 1687, -3250, -3250, -3250, + -3250, 1283, -3250, 2139, 43024, 2265, 4189, -3250, 1679, 545, + 35896, 32332, 1389, 2539, 2425, 382, 2336, 35896, 12403, 2006, + -3250, 2437, 2440, 2457, -3250, 19054, 40252, 2172, 1438, -3250, + 40252, 40648, -3250, 923, 2174, 16552, 2133, 1559, -3250, 2577, + -3250, 2476, 233, 1584, -3250, 1737, -3250, 43024, 43024, 43024, + 43024, 1610, -3250, -3250, 1737, 2360, 233, 233, -3250, 2366, + 233, 1737, 2303, 2469, 29556, -3250, 106, -3250, -3250, 16135, + 2285, 1235, -3250, 43024, -3250, 1737, 2239, 43024, 2198, -3250, + 1737, 1737, 1816, 1816, 1737, 41044, 2608, 2485, -3250, 1248, + -3250, -3250, 14050, -3250, 69, -3250, 497, -1, 2426, -3250, + -3250, -3250, -3250, 54112, -3250, -3250, -3250, -3250, -3250, 43024, + 174, 2389, 2209, 41044, 2598, 233, -3250, 1249, -3250, 808, + -3250, 885, 16135, 16135, 65, -3250, 5375, 1259, 2215, 2216, + 1262, -3250, -3250, -3250, -3250, -3250, -3250, -3250, 2218, 2500, + -3250, 2225, 1268, 1273, 2232, 2233, -3250, -3250, 4153, 2240, + 5435, 2241, 17803, 17803, 2200, -3250, -3250, 17803, 2242, -3250, + 1289, 4799, 2234, 2244, 2269, -3250, 2246, 2247, 5732, 15301, + 16135, 15301, 15301, 6444, 2234, 2248, 1322, 30352, 6801, 1340, + -3250, 16135, 30352, 4491, 16135, -3250, -3250, 16135, 43024, 2250, + 2251, -3250, 4553, -3250, 2279, -3250, 17803, 17803, 4827, 13216, + -3250, -3250, 2522, -3250, -3250, 1224, -3250, 2237, -3250, -3250, + 5923, 185, 16135, 2036, 16135, 2331, 24720, 5099, 16135, 2166, + 6863, 6863, 242, 242, 122, 122, 122, 112, -3250, 111, + -3250, -3250, -3250, 2255, 1841, 16135, -3250, 1476, 1497, 35896, + 3422, 3615, -3250, -3250, -3250, 19452, 2304, 16135, 16135, 16135, + 2257, 2427, 1357, -3250, 759, -3250, 1277, 496, 27535, -3250, + -3250, 16135, -3250, -3250, -3250, -3250, 1406, 21442, 2030, 14467, + 923, -3250, -3250, -3250, -3250, -3250, 16135, -3250, -3250, 1821, + 1564, 16135, 1396, -3250, -3250, 35896, 2196, 2196, 16135, 16135, + 14884, -3250, -3250, 2550, -3250, -3250, -3250, -3250, 43024, 43024, + 43024, -3250, -3250, -3250, -3250, -3250, -3250, 2488, -3250, 16135, + 135, 2263, 2271, 43024, 233, -3250, -3250, 9569, -3250, -3250, + 2320, 2344, 43024, 2102, -3250, 2520, -3250, -3250, -3250, -3250, + 2459, -3250, -3250, 663, -3250, 39856, 54508, -3250, 54508, -3250, + 663, 851, -3250, 1737, -3250, 54112, 105, -3250, -3250, -3250, + -3250, -3250, 233, 233, 43024, 43024, 43024, 43024, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, 1433, -3250, 582, -3250, -3250, + -3250, -3250, -3250, 1038, -3250, 694, 54112, -3250, 53716, 43024, + -3250, 43024, 2502, -3250, -3250, -3250, 2439, 127, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, 413, 43024, -3250, 1277, + 2441, 43024, 2342, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, 30352, 30352, 30352, 1435, -3250, -3250, 382, -3250, + -3250, -3250, 2364, -3250, -3250, -3250, 2505, 2506, 2507, 2368, + 2369, 2371, 2372, -3250, 2373, 2374, 2375, -3250, -3250, -3250, + 43024, -3250, -3250, -3250, 43024, 43024, -3250, -3250, -3250, 386, + 54112, 2527, 386, 386, 43024, 43024, 386, -3250, -3250, -3250, + 2541, 2542, 2543, 2544, 2545, 2546, 386, -3250, -3250, -3250, + -3250, 789, 1572, 22655, -3250, 2325, 6385, 2307, 2126, 2309, + 1277, -78, 533, 33, 2429, 1277, 2524, 2312, -3250, 1331, + 2534, 2321, 2321, 2321, 2321, 2321, 2321, 2321, -3250, 191, + -3250, 2490, 2387, -3250, -3250, 30352, 22655, 1288, 948, 2456, + 920, 2655, -3250, -3250, -3250, -3250, -3250, 35896, 611, 382, + 1436, -3250, 54112, 43024, 43024, 2363, 2323, 35896, 2324, 2319, + -3250, -3250, -3250, -3250, 1441, -3250, 54112, -41, 2511, 2510, + 765, 43024, 2409, 35896, 2391, -3250, 1450, 75, -3250, 382, + 29556, 52924, -3250, 2217, -3250, -3250, 2514, -3250, -3250, 765, + 11611, 1438, 2334, 43024, -3250, 2343, 19452, 2584, 2517, -3250, + 19452, 2517, 963, 2517, 2586, -3250, 21840, -3250, 2348, 1015, + 10775, 2535, 9569, -3250, 233, 54112, 43024, -3250, 233, 2407, + 233, 2410, 233, 233, 35896, -3250, -3250, 35896, -3250, 43024, + 36292, 233, -3250, 9569, 35896, -3250, -3250, 43024, 1737, 31144, + 43024, 757, -3250, -3250, 2530, -3250, 765, 43024, 923, 2352, + -3250, -3250, -3250, -3250, 2654, 2657, -3250, -3250, -3250, 43024, + 33520, 126, 43024, -3250, -3250, -3250, -3250, 2361, 1467, 7092, + 16135, -3250, 2664, 54112, -3250, -3250, -3250, -3250, -3250, 16135, + -3250, -3250, -3250, -3250, -3250, 16135, -3250, 16135, 2643, -3250, + 2367, 2367, 17803, 665, 1838, 17803, 17803, 17803, 17803, 17803, + 17803, 17803, 17803, 17803, 54112, 18637, 1323, -3250, -3250, 16135, + 16135, 2649, 2643, -3250, -3250, 833, 833, 54112, 2370, 2234, + 2376, 2377, 16135, -3250, -3250, 1470, 30352, -3250, 16135, 5077, + 1477, 2412, 7525, 923, 7169, -3250, 2738, 382, 16135, 1139, + 1250, 16135, 1498, 16135, 2648, -3250, -3250, -3250, 2380, -3250, + -3250, 54112, 16135, 17803, 17803, 6176, -3250, 8905, 16135, 2381, + 9098, 13216, -3250, 472, 472, 472, 472, -3250, 35896, 35896, + 2172, 16135, 2642, 1501, 1503, 7583, 2427, 22238, -3250, 29, + 15718, 104, 2386, -3250, -3250, 7890, 2383, 43024, -3250, 2133, + -3250, -3250, 2388, -3250, 1564, -3250, -3250, -3250, 7931, 2547, + 1816, -3250, -3250, -3250, -3250, -3250, 854, -3250, -3250, -3250, + 2321, 8467, -3250, 43024, 43024, 1508, -3250, -3250, 43024, -3250, + 1562, -3250, -3250, 2625, 1084, -3250, -3250, -3250, 2442, -3250, + 605, 770, -3250, 2444, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, 30352, 22655, 30352, 2454, 2461, 71, 125, 2467, 2468, + 2390, 2392, 2394, -3250, 1737, 1113, 382, 43024, 43024, -3250, + -3250, 1737, -3250, 382, 1737, 382, -3250, -3250, -3250, -3250, + 30748, -3250, -3250, 43024, 2668, 500, 1365, 43024, 43024, 43024, + 43024, 43024, 43024, 43024, 2102, -3250, -3250, -3250, 2396, 386, + -3250, -3250, 2635, 2644, -3250, 386, 386, 386, 386, 386, + 386, -3250, 72, -3250, -3250, 2079, 2079, 884, -3250, 2079, + -3250, 2079, -3250, 2388, 1277, 1101, -3250, -3250, -3250, -3250, + -3250, -3250, 2130, -3250, 737, 1277, 1525, 2401, -3250, 2403, + -3250, -3250, -3250, -3250, -3250, -3250, 2411, -3250, 496, 35896, + 2321, -3250, 63, 70, 74, 85, 41440, 41836, 42232, 2408, + 43024, 17803, -3250, 685, 167, -3250, 2652, 35896, 2451, -3250, + -3250, -3250, 2415, -3250, 54112, -3250, -3250, 2802, 91, 35896, + 2458, 2703, -3250, 1509, -3250, -3250, 43024, -3250, 2490, 1282, + 678, -3250, 32332, -3250, 2675, 32332, -3250, 43024, -3250, -3250, + -3250, 2781, 2509, 2466, 20, 382, 2391, 43024, 2428, -3250, + 39856, 16135, 16135, -3250, 2421, -3250, 2430, 2881, -3250, 1687, + -3250, -3250, 677, -3250, 40252, 2431, 43024, 1438, 19452, -3250, + -3250, 1271, -3250, 19452, 2667, -3250, 19452, 43024, 2432, 43024, + 1516, 28353, -3250, 2435, 233, -3250, 43024, -3250, 43024, -3250, + -3250, 233, 233, -3250, 2551, -3250, 2433, 1737, -3250, -3250, + 2717, 41044, -3250, -3250, -3250, -3250, -3250, -3250, 28, 2722, + -3250, -3250, -3250, -3250, 16135, 9569, -3250, 2446, 9569, 8785, + 9569, 2649, 2236, 2724, -3250, 612, 2445, 2236, 1705, 1705, + 1263, 1263, 970, 970, 970, 2367, -3250, 1323, 9569, 9569, + -3250, -3250, -3250, -3250, 2448, -3250, -3250, -3250, 2234, -3250, + 16969, -3250, -3250, 2494, 2495, 2452, -3250, 16135, 17386, 2449, + 55300, -3250, -3250, 496, 2025, 17803, 17803, 1622, -3250, 321, + 16135, 54112, 1517, 1622, 1594, 1835, 16135, 16135, 9599, 187, + 16135, 8826, 35896, 35896, 35896, 35896, -3250, -3250, 9569, 2838, + 2730, 2427, 2427, 2427, -3250, 54904, -3250, -3250, -3250, -3250, + 16135, 382, -3250, 535, -3250, -3250, 24720, -3250, -3250, -3250, + 1154, 1113, -3250, 1523, 1524, 2451, -3250, 1878, -3250, 2531, + -3250, 191, 2651, -3250, 2656, 1113, 43024, 54112, -3250, -3250, + 2471, 43024, 43024, 1277, 1277, 54112, 2460, -3250, 1277, 1277, + 2462, -3250, 43024, 43024, -3250, -3250, -3250, -3250, -3250, 1737, + 1737, -3250, -3250, -3250, -3250, 43024, 43024, 43024, 43024, 2761, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, 2712, -3250, + 386, 386, -3250, -3250, -3250, -3250, -3250, -3250, -3250, 1723, + 2790, 382, 382, 2661, 43024, 382, 382, -3250, 937, 2797, + -3250, 2732, 634, 2475, 178, 2757, -3250, -3250, -3250, -3250, + 2760, 1113, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, 16135, 747, 2236, + -3250, -3250, -3250, -3250, 2451, 1288, 2538, 30352, 2549, 765, + -12, 43024, 2792, 2783, -3250, 382, -3250, -3250, -3250, -3250, + 2821, 2491, 653, 2493, 1389, -3250, -3250, -3250, 159, 43024, + -3250, 727, -3250, 2736, 2776, 2499, -3250, 19850, -3250, 9569, + 9569, 382, 55696, 2217, -3250, -3250, -3250, -3250, -3250, 2579, + -3250, 43024, 1529, -3250, 16135, 2503, -3250, -3250, 19452, 1271, + 1549, 43024, 1550, 54112, 2427, -3250, -3250, 233, -3250, 233, + 233, -3250, -3250, 43024, 43024, 2679, -3250, 233, 41044, 9569, + -3250, -3250, -3250, 17803, 2786, -3250, 2512, 54112, -3250, 2515, + 1555, 1563, -3250, -3250, -3250, 8889, 2559, 9569, 2607, 2508, + 2516, -3250, 1067, 1067, 321, 1570, -3250, 17803, 17803, 1622, + 1622, 16135, 1622, -3250, -3250, -3250, -3250, -3250, 16135, 16135, + 2553, -3250, -3250, -3250, 2680, -3250, 9194, 496, -3250, 2521, + 1396, -3250, 2662, 2451, 2538, -3250, -3250, -3250, -3250, -3250, + 2581, 22655, -3250, -3250, 20248, 24720, -3250, 71, 2525, 2526, + 125, -3250, -3250, 861, 560, 2565, 1737, 2815, 386, -3250, + -3250, -3250, 382, -3250, -3250, 43024, 2528, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, 31144, 2930, 2930, 35896, 737, + -3250, 9243, 2725, -3250, 2538, 2751, 2796, -3250, 1590, -3250, + 43024, 2466, 32332, 2490, -3250, 1072, 2687, -3250, -3250, 1389, + 881, 944, -3250, 35896, 2510, 2665, -3250, 2666, -3250, 2911, + 2728, 2916, 382, -3250, 43024, 19850, 16135, 1596, -3250, 42628, + 10374, -3250, 54508, -3250, 1598, -3250, -3250, 35896, 1599, -3250, + 9569, 43024, -3250, -3250, -3250, 1604, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, 126, 1726, 17803, 54112, 1607, 16135, -3250, + 16135, -3250, -3250, -3250, 427, -3250, -3250, -3250, 1067, 1067, + 1622, 2234, 9569, 43024, -3250, 2931, 2731, 2427, -3250, -3250, + 2735, 35896, 2538, -3250, 16135, -3250, -3250, 54112, 1584, -51, + -3250, 54112, 54112, -3250, 43024, 43024, 43024, 43024, 43024, -3250, + 1572, -3250, 2528, 2930, 728, -3250, -3250, -3250, 2845, -3250, + -3250, 487, 2739, 2647, -3250, 30352, 2854, -3250, -3250, -3250, + -3250, -3250, 31144, 2510, -3250, -3250, -3250, -3250, -3250, -3250, + 1618, 2509, -3250, -3250, 2741, -3250, 2742, -3250, -3250, 1625, + 9523, 2610, 19850, 43024, -3250, 926, 926, -3250, 2881, 55696, + 2304, -3250, 1627, -3250, -3250, 1726, 1630, -3250, 1664, 1678, + 2620, -3250, 2566, -3250, 2969, 16135, 914, -3250, -3250, -3250, + 1288, -3250, 9569, 1680, -3250, -3250, -3250, 2718, 1701, 1709, + 2570, 2617, 2570, -3250, 1737, -3250, -3250, -3250, 2887, -3250, + -3250, -3250, 76, -3250, 2759, 2768, 43024, -3250, 43024, 2980, + 2589, 2509, -3250, -3250, -3250, -3250, 2610, 42628, 1908, 2509, + -3250, -3250, 1564, 1564, 2217, -3250, 2905, -3250, -3250, -3250, + -3250, -3250, 43024, 2592, 2234, 124, 124, 2593, 2751, 31144, + -3250, -3250, -3250, 43024, 2720, 538, 538, 2920, -3250, 2663, + -3250, -3250, -3250, 71, 28756, -3250, 2509, 926, -3250, 2304, + -3250, -3250, -3250, 675, -3250, -3250, 151, 2726, 624, -3250, + -3250, -3250, -3250, 2739, 1584, -3250, 2895, -3250, 3015, -3250, + 638, -3250, -3250, 2460, -3250, -3250, -3250, 1724, -3250, -3250, + -3250, -3250, 2304, 1564, -3250, -3250, -3250, 98, 3008, -3250, + -3250, -3250, 737, -3250, 2758, -3250, -3250, -3250, -3250, 28756, + -3250, -3250, -3250, 1820, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, 151, -3250, 31144, -3250, 1158, -3250, -3250, 1185, 1522, + -3250, 2609, -3250, 1820, 28756, -3250, 1725, -3250 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -2901, -2901, -2901, 2004, -2901, -645, -444, -2901, -2901, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, - -2901, 920, -2901, -2901, 67, 1312, 1668, 665, -2901, -2901, - -2901, -2901, -569, 85, 498, -2901, -2901, -2901, -2901, -2901, - -2901, -2901, -2901, 1001, -2901, -612, 553, 819, -2901, -2901, - -2901, -2901, 485, -357, -2901, -2901, -2901, -2901, -2901, -1192, - 3, 54, -2901, 58, 1029, 169, -2901, -193, -2901, -2901, - -2901, -2901, -352, 648, -1241, -1957, 503, -554, -577, -531, - -529, -558, -2901, -2628, -2782, -1991, -2710, -2901, 391, -2901, - -2901, 70, -1178, -2901, 1406, -2901, -2901, -845, -2901, -116, - -2901, -2901, -209, -2901, -2901, -2901, 84, -2901, -2901, -2901, - -1177, -2901, 974, -2117, -2901, -2901, -2901, -622, -597, -2901, - -2814, -150, -148, -2901, -2901, -2901, -2901, -682, -2901, 492, - 490, -694, -2901, -2901, 518, -2901, -2901, -545, -293, 1446, - -2901, -551, -2901, -2901, -2901, -290, -2901, -2901, -2901, -2901, - -2901, -2901, -1292, 653, -639, -2901, -2901, -2901, -1060, -2901, - 2655, 2121, -1171, -2901, -3, 10, 1870, -807, -1786, 42, - -2901, -2901, -1304, -2901, -2901, -2901, -1729, -1170, -2901, 91, - -351, -452, -2434, -2171, -2318, -2901, -2901, -771, -2901, 676, - 1123, 1127, -2901, -1446, 95, -537, -2154, -2901, -2462, -2901, - -2901, -2901, -2901, -2901, -2901, -1256, -462, -2901, -407, -2901, - -2901, -2901, -2901, 668, -2901, 417, -2901, -2901, -2901, -2901, - -2901, -2901, -549, -582, -2901, -2901, -2901, 94, -2901, -2901, - -2901, 1444, -690, -575, 2098, -1169, -311, -2901, -2901, -2901, - -2901, -2028, -2901, -2901, -2901, -2901, -2901, -2901, -2901, -1235, - -2901, -2901, -2901, -2901, -2901, -2901, 1210, 2687, -418, -2901, - -2901, -2901, -2901, -2901, -2901, -2901, -2901, -2901, 1905, 130, - -2901, 26, -2901, -2901, 438, -1675, 33, -2901, -2901, -2901, - -2901, -464, 34, -2901, 749, -2901, -2901, -1452, -2901, 1912, - -2901, -2901, 4, 0, -45, 410, 544, -2901, -2901, -38, - 1012, -2901, -2901, -2901, -2901, 742, 1731, -2901, 732, -333, - -2901, -2901, 1743, -2901, -2901, 1732, 1206, -2901, 1231, 778, - -1692, 987, -1654, 493, -556, -163, 13, 2230, -2901, -2900, - 770, -2398, 168, 1356, 1064, -1191, -2901, -2901, -746, 4160, - -2901, -2901, -2901, 4236, 4515, -2901, -2901, 4674, 4760, -2901, - -728, 369, 4792, 3267, -866, -1364, 3783, 645, -1071, -1223, - -2901, -2901, -2901, -323, 397, 451, -2901, -1220, -2901, -155, - -2901, 6077, 782, -2901, -780, -2901, -806, -2901, -1296, -2901, - -2901, -2901, -2901, -2901, -2038, -2205, -44, 847, -2901, -2901, - 940, -2901, -2901, -2901, -623, -617, -1373, 855, -1390, -2901, - -626, 979, 1330, 153, -553, 2445, -382, 1958, -422, -1541, - -898, -625, -2901, -127, -2901, -1004, 434, -60, -8, 50, - 5215, -1181, 2701, -678, -667, -1183, -2901 + -3250, -3250, -3250, 2385, -3250, -694, -122, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -3250, 1188, -3250, -3250, 84, 1530, 2021, 911, -3250, -3250, + -3250, -3250, -588, 116, -378, -3250, -3250, -3250, -3250, -3250, + -3250, -3250, 762, 1313, 831, 666, -3250, -1090, -449, -3250, + 377, -3250, -3250, -3250, 718, -211, -3250, -3250, -3250, -3250, + -3250, -1188, 15, 240, -3250, 236, 1349, 396, -3250, -40, + -3250, -3250, -3250, -3250, 221, 886, -573, -847, 1124, -457, + -491, -421, -416, -454, -3250, -2506, -3023, -2366, -2343, 2223, + -3250, -3250, -3250, 252, -3250, -1180, -3250, -3250, 1813, -1028, + -3250, -878, -3250, -3250, 674, 1403, 257, -3250, -3250, 107, + -3250, -3250, -3250, -3250, -3250, -3250, -2682, -3250, -1102, -3250, + 378, -2209, 806, -3250, -3250, -3250, 1836, -3250, -3250, -3250, + -3250, -1211, -3250, -3250, -1166, -3250, 1264, 715, -3250, -3250, + -3250, -515, -489, -3250, -3111, 30, 32, -3250, -3250, -3250, + -3250, -776, -3250, 736, -2263, -683, -3250, -3250, 769, -3250, + -3250, -428, -140, 1869, -3250, -359, -3250, -3250, -3250, -139, + -3250, -3250, -3250, -3250, -3250, -3250, -1299, 269, -664, -3250, + -3250, -3250, -3250, -1564, -3250, 3086, 2532, -1151, -3250, 7, + 11, 2254, -862, -1934, 234, -3250, -3250, -1311, -3250, -3250, + -3250, -1846, -1150, -3250, 298, -194, -306, -2628, -2483, -2512, + -3250, -3250, -816, -3250, -3250, -3250, -1016, 1440, -1667, -3250, + -1622, 299, -2716, -554, -2311, -3250, -2663, -307, -3250, -3250, + -3250, -3250, -3250, -3250, -3250, -819, -499, -3250, -2647, -3250, + -3250, -3250, -3250, 1085, -3250, -775, -3250, -3250, -3250, -3250, + -3250, -3250, -3250, -443, -476, -3250, -3250, -3250, 117, -3250, + -3250, -3250, 1203, -719, -584, 2513, -1148, -152, -3250, -3250, + -3250, -3250, -2111, -3250, -3250, -3250, -3250, -3250, -3250, -3250, + -1101, -3250, -3250, -3250, -3250, -3250, -3250, 1531, 3122, -31, + -3250, -3250, 2103, -3250, -3250, -3250, -3250, -3250, -3250, 2296, + 334, -3250, 54, -3250, -3250, 669, -1782, 58, -3250, -3250, + -3250, -3250, -170, 66, -3250, 1021, -3250, -3250, -1504, -3250, + 2299, -3250, -3250, 14, 0, -47, -48, -44, -3250, 2497, + 2119, -3250, -3250, -29, 1175, -3250, -667, -662, -3250, 1016, + -537, 1511, 1003, 173, -157, -3250, -2044, 526, -3250, -3250, + -521, 1521, -3250, 2111, 1538, -3250, 1565, 1069, -1826, 1287, + -1786, 743, -569, 9, 79, 2533, 2660, -3250, -2607, 1051, + -2656, 381, 807, 1377, -1181, -3250, -3250, -881, 5112, -3250, + -3250, -3250, 5407, 5729, -3250, -3250, 5780, 6169, -3250, -763, + 625, 6457, 3365, -904, -1400, -553, 5311, -141, -994, -1223, + -3250, -3250, -3250, -156, 635, 295, -3250, -3250, -3250, -318, + -2065, -317, -3250, -3250, -3250, -321, -3249, -1127, -3250, -150, + -3250, 7006, 1058, -3250, -766, -854, -1323, -3250, -3250, -3250, + -3250, -3250, -3250, -3250, -1124, -2393, -411, 1127, -3250, -3250, + 1217, -3250, -3250, -3250, -970, -636, -1482, 1131, -1493, -3250, + -657, 1253, 1738, 2379, -601, 3281, -64, 2919, -426, -1676, + -946, -678, -3250, -155, -3250, 699, 1286, 134, -4, 48, + 935, -932, 3982, -949, -71, -2225, -3250 }; /* 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 zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1643 +#define YYTABLE_NINF -1888 static const short int yytable[] = { - 142, 620, 681, 607, 141, 988, 1276, 1775, 819, 1079, - 1782, 467, 1728, 546, 1674, 491, 747, 1333, 1390, 546, - 995, 1303, 949, 654, 1160, 943, 136, 664, 1764, 1344, - 2286, 583, 552, 137, 139, 1161, 989, 1960, 936, 1041, - 1187, 2434, 1746, 2030, 584, 1703, 619, 2224, 1071, 1893, - 738, 1696, 784, 1823, 958, 1035, 611, 452, 460, 1704, - 1705, 2270, 2604, 452, 452, 1233, 1706, 1707, 1708, 452, - 2573, 452, 554, 1248, 556, 2246, 1268, 452, 564, 452, - 1164, 1163, 574, 580, 554, 63, 587, 775, 580, 580, - 2238, 2240, 609, 1226, 113, 665, 1530, 1229, 2741, 684, - 2843, 527, -1453, 1463, 1235, 599, -1517, 693, 1968, 1363, - 1364, 1249, -1515, 805, 803, -1545, -1563, 807, -1589, 1357, - 1358, 1247, 1965, 1416, 2017, 2019, 1022, 1407, 1379, 465, - 779, 2682, 1416, -1126, 787, -1121, 939, 1257, 2549, 2550, - 2551, 2552, 1376, 796, 1409, 1797, 2823, 1269, 1324, 2826, - 1678, 837, 2173, 1947, 2284, 1817, 1614, 2553, -1307, 2295, - 1536, 457, 1858, 1715, 1551, -1307, 1720, 1269, 2118, 667, - 1556, 1932, 501, 1416, 686, 688, 1536, 696, 1933, 1897, - -1562, 694, 1269, 1605, 1979, 1269, 1536, 1913, 2230, 1897, - 1537, -1323, 3110, 2445, 3155, 1725, 457, 2555, -1323, 1003, - 1537, 659, 661, 659, 2144, 666, 475, 683, 1547, 666, - 452, 1679, -1093, 452, 2586, 452, 659, 666, 1678, 2251, - 1725, 2253, 1938, 2893, 1076, 2895, 2106, 1328, 1298, 3028, - 1260, 1026, 1716, 3161, 1895, 1605, 2757, 696, 1416, 1936, - 1700, 1538, 2540, -291, 3209, 3196, 3130, 3123, 1509, 2231, - 3088, 2107, 2275, 1182, 1183, 1798, 1174, 1538, 477, 1079, - 2778, 3257, 3126, 1680, 697, 1030, 1681, 1538, 1557, 1971, - 2192, 1385, 1386, 3124, 2232, 2663, 1269, 1261, 1045, 1679, - 542, 2279, 462, 757, 2960, 1510, 1460, 543, 3127, 2233, - 2446, 542, 3, 4, 1032, 1450, 1004, 2234, 1461, 2683, - 1063, 3112, 1914, 653, 557, 1046, 1915, 653, 1701, 457, - 758, 1857, 1447, 1387, 457, 457, 1160, 1033, 1444, 1416, - 2235, 457, 3248, 681, 697, 3009, 1650, 1161, 1027, 557, - 2559, 1680, 1511, 2541, 1681, 2758, 1548, 1064, 3125, 1916, - 3186, 734, 1390, 1972, 2280, 1558, 3261, 2887, 759, 37, - 1579, 1451, 1240, 3128, 1682, 1077, 1830, 1831, 1262, 681, - 3156, 1937, 2560, 1980, 1843, 1539, 1163, 951, 1846, 1847, - 2277, 1726, 2561, 3162, -1562, 1674, 1455, 3158, 770, 3011, - 1270, 1539, -1643, 1868, 777, 1869, 1232, 1232, 1643, 1241, - 483, 1539, 484, 2236, 3258, 3122, 3017, 2129, 2145, 1649, - 1270, 2742, 2779, 1285, 1549, 1263, 1891, 502, 1892, 1825, - 45, 1615, 1078, 1717, 3047, 1270, 742, 3231, 1270, 1799, - 749, 2273, 1682, 1616, 2470, 1278, 817, 2447, 1962, 817, - 756, 557, 2276, 1005, 1322, 1800, 2130, -1562, 3272, 1352, - 1683, 557, 37, 1335, 557, 902, 2119, -1307, 2562, 1363, - 1364, 1540, 2448, -1562, 1917, 1345, 1721, 1379, 2915, 559, - 1934, 2888, 1325, 1420, 1421, 1357, 1358, 1540, 1898, 1684, - -1126, 1617, -1121, 1646, 1376, 2744, 2745, 1540, 2379, 503, - -1323, 504, 1264, 1065, 1329, 1006, 1561, 1733, 542, -1126, - 1028, -1121, 542, 2800, 3210, 543, 3056, 3087, 46, 543, - 1410, 1438, 1232, 45, 1437, 1672, 1620, -1453, 1683, 1270, - 1438, -1517, 1424, 611, 1300, 2359, 1746, -1515, 2822, 452, - -1545, -1563, 661, -1589, 659, 804, 666, 806, 683, 808, - 666, 751, 452, 809, 1329, 1242, 452, 2611, 659, 1668, - 666, 2615, 1434, 1435, 1436, 1437, 729, 452, 1496, 1278, - 2278, 1438, 2643, 2458, 1160, 46, 452, 1445, 568, 661, - 1066, 952, 452, 681, 683, 1161, 452, 452, 1820, 1821, - 2440, 452, 2441, 452, 2411, 452, 760, 1588, 659, 1829, - 763, 1167, 1832, 15, 1686, 3232, 2499, 2500, 1170, 2095, - 1844, 1845, -1093, 2405, 1362, -1093, 1833, 994, 557, -1093, - 2456, 500, 2140, 1862, 1864, 1432, 1433, 1434, 1435, 1436, - 1437, 3144, 1243, 2471, 1878, 3175, 1438, 2809, 452, 457, - 452, 653, 142, 829, 953, 3029, 141, 1635, 2839, 569, - 1290, 1731, 1654, 1989, 1858, 1858, 1258, 3030, 147, 1858, - 833, 1904, 580, 1905, 944, 580, 1848, 1849, 136, 3249, - 3233, 1541, 23, 457, 2472, 137, 139, 1834, 653, 938, - 2290, 962, 947, 1906, 653, 2164, 1778, 1291, 1953, 1735, - 1736, 3234, 148, 15, -1055, 1610, 2752, 3191, 1858, 1858, - 2161, 1547, 3098, 3172, 2810, 1729, 1432, 1433, 1434, 1435, - 1436, 1437, 1304, 1655, 1543, 625, 1606, 1438, 2351, 1656, - 2537, -1055, 2525, 2356, 2101, 15, 1544, 63, 457, 1835, - 2102, 14, 1836, 2165, 457, 557, 113, 15, 659, 659, - 1544, 2878, 2604, 1611, 1746, 457, 3176, 3220, 764, 2370, - 2525, 2371, 3021, 2006, 816, 2739, 1657, 1160, 588, 2457, - 555, 19, 23, 2811, 457, 452, 1457, 626, 1161, 560, - 2062, 2372, 2538, 2065, 2066, 1165, 3221, 1907, 1580, 2840, - 457, 452, 1908, 457, 1785, 1786, 2096, 1909, 683, 2602, - 452, 567, 2809, 3099, 23, 2753, 452, 457, 1887, 37, - 659, 3177, 3031, 1857, 1857, 1691, 23, 452, 1857, 2067, - 2879, 1698, 570, 571, 2166, 659, 659, 3263, 28, 3250, - 1837, 2103, 964, 142, 658, 1722, 662, 1311, 3173, 2772, - 2007, 659, 1165, 1292, 452, 817, 2837, 627, 142, 692, - 1278, 1763, 1327, 1622, 1163, 1200, 589, 1857, 1857, 1307, - 28, 659, 659, 43, 2771, 452, 1308, 1309, 1789, 463, - 45, 1350, 1232, 2539, 3024, 1458, 2167, 944, 1545, 2994, - 2373, 2754, 1754, 1160, 975, 2374, 606, 1580, 1366, 2318, - 457, 653, 620, 452, 1161, 1595, 452, 554, 653, 37, - 1812, 452, 2838, 1910, 475, 452, 3223, 3224, 37, 2997, - 3025, 1911, 1658, 1341, 681, 1278, 1838, 452, 1393, 1347, - 1293, 2917, 46, 2918, 1839, 1757, 1840, 731, 2811, 2773, - 1623, 37, 2774, 2068, 1766, 2069, 1510, 1405, 1596, 617, - 457, 457, 457, 37, 1772, 147, 653, 2880, 1851, 628, - 2886, 2910, 2168, 43, 2169, 2890, 477, 1416, 2892, 3262, - 45, 1780, 1417, 1783, 1784, 2998, 2569, 1787, 2104, 45, - 2162, 1232, 976, 982, 585, 1068, 2108, 1008, 811, 148, - 2553, 1278, 2404, 1511, 2883, 43, 2738, 2071, 2072, 1659, - 2640, 2375, 45, 2105, 2554, 2528, 812, 43, 457, 2376, - 2027, 2881, 3194, 3195, 45, 1009, 2642, 1501, 1501, 1597, - 1501, 615, 3264, 2805, 2249, 945, 1703, 983, 757, 457, - 2555, 46, 2556, 2528, 1696, 944, 2654, 1069, 2633, 822, - 1704, 1705, 944, 944, 471, 1453, 1746, 1706, 1707, 1708, - 1746, 1488, 1525, 1495, 46, 2571, 2665, 2919, 2666, 838, - 147, -964, 1598, 2643, 1599, 2806, 46, 941, 1010, 2182, - 2183, 2184, 2185, 2083, -964, 1600, 3105, 1526, 1469, 1459, - 1460, 557, 701, -1643, 2293, 542, 621, 702, 580, 2461, - 3247, 1419, 1461, 759, 148, 2873, 1011, 2247, 483, 2557, - 484, 2085, 2494, 2291, 1527, 2497, 2498, 580, 1601, 2292, - 2442, 1420, 1421, -964, 622, 1362, 1470, 475, 1531, 2508, - 1631, 2084, 2323, 2324, 2325, 2326, 2327, 2328, 2901, 683, - 2902, -964, 2345, 2329, -300, -631, 981, 1858, 3097, 1602, - 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 2086, - 1858, 1991, 457, 659, 659, 659, 659, 1969, 2558, 1580, - 1424, 2368, 1040, 2559, 623, 3064, 33, 739, 681, 477, - 2242, 1603, 2667, -989, 1425, -964, 1385, 1386, 1748, 3188, - 1751, 755, 2668, -964, 740, 1278, 741, 992, 1755, 998, - 1012, 2534, 2536, 982, 631, 2560, 996, 1407, 1002, 1858, - 1858, 1352, 1623, 1385, 1386, 2561, 743, 1185, 744, 2399, - 2400, 2693, 993, 2231, 902, 1013, 1699, 2179, 1389, 33, - 2820, 997, 1042, 1014, 1639, 33, -1136, 664, 2535, 1015, - -989, 1072, -1126, 1640, 2023, 3219, 1016, 983, 2232, 3053, - 3222, 1160, 1017, 1232, 2260, 1387, 1160, 457, 998, 690, - 1018, -1126, 1161, 2617, 1043, 999, 1641, 1161, 1019, 2465, - 457, 2234, 659, 659, -1431, 681, 2467, 2468, 659, 3246, - 1665, 1605, 695, 1070, -989, 1955, 2328, 33, 1612, 1044, - 810, 2562, 2329, -1431, 2780, -964, 1857, 733, 3118, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1061, 1857, - 998, 483, 2781, 484, 1020, 1740, 2323, 2324, 2325, 2326, - 2327, 2328, 486, 3119, 999, 2162, 1637, 2329, 2803, 2804, - 620, 489, 2807, 1062, 2808, 705, 666, 1428, 452, 2443, - 659, 659, 659, 659, 1432, 1433, 1434, 1435, 1436, 1437, - -1432, 1638, 707, 2523, 944, 1438, 1165, 1779, 1857, 1857, - 971, 701, 1048, -1409, 2444, -1406, 702, 2236, 1049, -1432, - 2230, 1036, 1037, 737, 661, 619, 999, 452, 452, 1244, - 2511, 2523, 1030, 683, 142, 1858, 452, 452, 1811, 452, - 1814, 2934, 1887, 1408, 452, 579, 452, 736, 1245, 659, - 659, 605, 1813, 1413, -1409, 748, 1050, 1031, -1093, -1106, - 1808, 1032, 753, 452, 1449, 452, 452, 1809, 1810, 452, - 2512, 701, 158, -1409, 2438, 1794, 702, 1362, 1368, 2403, - 761, 2231, 1467, 1179, 1033, 1385, 1386, 1502, 1504, 1746, - 1508, 2513, 554, 554, 1746, 762, 1819, 1746, 1230, 1231, - 2417, 2418, 1051, -1133, 557, 557, 2232, 2707, -1136, 1052, - 2514, 1497, 1053, 557, 1255, 1498, 1374, 1375, 1747, 1902, - 653, 2233, -1133, 1412, 1448, 2515, 772, 1389, 653, 2234, - 683, 1349, 1956, 46, 1280, 1282, 2790, 2205, 2206, 2516, - -964, 457, 2794, 2795, 2796, 2797, 2798, 2799, 457, 170, - 2748, 785, 2235, -964, 464, 1362, 2385, 1777, 1531, 1054, - 1805, 1778, 529, 2624, 1806, 792, 1608, 653, 1987, 1613, - 457, 457, 1990, 1621, 3116, 2684, 2685, 1983, 2651, 586, - 1362, 1806, 457, 994, 1857, 2014, 2001, 1858, 1858, 2015, - 2141, -963, -964, 2008, 2142, 1338, 1339, 1160, 2325, 2326, - 2327, 2328, 2149, 797, -963, 2174, 2150, 2329, 1161, 2175, - -964, 2933, 1055, 2421, 2422, 2022, 2271, 2024, 2517, 810, - 2272, 1503, 1503, 2587, 1503, 2236, 2518, 801, 2815, 2034, - 2289, 2058, 2299, 2302, 1778, 814, 1778, 1778, 2306, 1495, - 815, 2307, 1778, -963, 2824, 1778, 1030, 2333, 2350, 452, - 823, 1778, 1778, 2353, -964, 2519, 2402, 2354, 825, 2318, - 1778, -963, -964, 2407, 830, 2099, 2412, 2408, 2690, 2576, - 1278, 2714, 2112, 2577, 2114, 1032, 2584, 2655, 666, 452, - 2585, 1778, 666, 661, 2691, 2698, 831, 452, 2692, 2699, - 3084, 2710, 832, 452, 2420, 1778, 666, 457, 2097, 452, - 833, 3012, 2733, 666, 452, -963, 1778, 2734, 834, 452, - 2746, 1778, 1748, -963, 2142, 836, 2850, 2897, 1301, 1163, - 2851, 1778, 2319, 1385, 1386, 666, 452, 666, 452, 1362, - 452, 2939, 1531, 2029, 2029, 1806, 1857, 1857, 978, 666, - 980, 666, 452, 452, 452, 2600, 2423, 2424, 2318, 457, - 1887, 3044, 2708, 2453, 2864, 2865, 2866, 2074, 2075, 452, - 452, 452, 452, 2082, -964, 835, 452, 452, 1746, 2460, - 452, 452, 452, 2463, 1160, 666, 452, 2958, 2616, 2414, - 2619, 2142, 666, 452, 666, 1161, 452, 2959, 2389, 3050, - 2390, 2142, 2162, 1278, 620, 840, 1858, 3055, 659, 3106, - 2391, 2577, 2392, 2180, 839, 659, 659, 659, 659, 659, - 659, 2319, 954, 1079, 950, -963, 1627, 1628, 1629, 1630, - 1858, 1858, 948, 3057, 142, 3070, 3072, 2577, 2193, 3071, - 1778, 2986, 2987, 2988, 3078, 955, 1887, 3139, 1806, 2223, - 3146, 3140, 3148, 2029, 1278, 956, 2577, 3281, 2964, 2965, - 3282, 554, 3152, 2968, 2969, 3187, 1806, 3189, 964, 1329, - 3197, 3140, 3198, 681, 1278, 3199, 1806, 971, 963, 2354, - -956, 2191, 457, 965, 2940, 901, 2204, 1486, 2320, 2321, - 2322, 979, 2323, 2324, 2325, 2326, 2327, 2328, 3200, 971, - 2228, 972, 1778, 2329, 2228, 2241, 3203, 3205, 3206, 3259, - 1806, 1806, 1806, 3260, 2318, 3166, 990, 3168, 994, 659, - 2029, 659, 2029, 1048, 2816, 2817, 1039, 3044, 2415, 1049, - 1748, 1024, 1067, 944, 3286, 1651, 1652, 2344, 3260, 2346, - 2347, 1661, 670, 1073, 1038, 671, 672, 673, 666, 674, - 675, 676, 677, 678, 679, 1857, 1858, 1075, 1883, 1168, - 457, 1886, 1171, 1176, 1178, 1180, 620, 1050, 1186, 1189, - 999, 1227, 452, 1232, 901, 1236, 666, 2319, -143, 1857, - 1857, 2323, 2324, 2325, 2326, 2327, 2328, 1238, 457, 1254, - 1265, 1267, 2329, 1272, 1273, 457, 1274, 1275, 1277, 1283, - 1278, 1284, 1747, 1711, 1712, 1713, 1714, 1286, 1287, 1288, - 1957, 1405, 2650, 1051, 2394, 2395, 3204, 2938, 1289, 1294, - 1052, 1295, 2924, 1053, 1296, 1902, 3202, 3044, 1299, 1334, - 1336, 2877, 1340, -1097, 2426, 3102, 2318, 1348, 1342, 1343, - -1104, 1356, 1359, 1360, 2213, 2388, 1361, 1365, 46, -1094, - 2361, 1367, -1095, 1370, 1371, 1372, 1373, 1740, 1378, 1442, - 1380, 1381, 1008, 1776, 2870, 1382, 1383, -1098, -1096, 1384, - 1054, 1456, 1391, 1392, 2213, 451, 1394, 1395, 683, 1329, - 1396, 498, 499, 1397, 1398, 1472, 1485, 530, 1399, 545, - 1009, 1400, 1008, 1499, 981, 563, 1521, 566, 1528, 2319, - 1529, 1531, 1532, 2415, 1552, 1857, 1533, 1546, 1550, 1553, - 1554, 1575, 1555, 1576, 1582, 1577, 1583, 1578, 944, 1589, - 1009, 1594, 1495, 1055, 1584, 1591, 1592, 1593, 1605, 1609, - 901, 2415, 1619, 2320, 2321, 2322, 452, 2323, 2324, 2325, - 2326, 2327, 2328, 1010, 666, 452, 452, 1624, 2329, 1625, - 1626, 1632, 1633, 1634, 1636, 1648, 1653, 1030, 1665, 1660, - 1662, 1673, 1666, 1352, 1362, 1368, 2491, 2941, 1675, 1688, - 1676, 1011, 473, 1010, 1693, 1710, 1697, 1724, 1730, 1734, - 1732, 1738, 1056, 1759, 2766, 2767, 1032, 1760, 1749, 1761, - 1762, 1788, 1773, 1791, 1795, 452, 1803, 1752, 2132, 2214, - 1816, 1011, 1211, 1825, 457, 1756, 2132, 1824, 1866, 1057, - 1747, 452, 1748, 902, 1765, 452, 1748, 1867, 1879, 1884, - 1890, 2955, 1438, 1896, 3068, 1947, 1889, 1774, 685, 2214, - 659, 689, 626, 691, 1901, 1918, 1954, 1959, 1958, 1920, - 1964, 1975, 1970, 452, 452, 452, 452, 664, 1976, 1984, - 1982, 1985, 901, 1981, 2181, 2320, 2321, 2322, 1986, 2323, - 2324, 2325, 2326, 2327, 2328, 1992, 2989, 2000, 1996, 1994, - 2329, 1997, 1998, 2003, 2210, 2005, 666, 452, 2010, 2012, - 2063, 3082, 2070, 2031, 2116, 2032, 2109, 2029, 2029, 2117, - 2033, 2110, 2111, 2120, 33, 2122, 2123, 2125, 2215, 2126, - 2127, 2128, 1665, 2139, 1015, 2143, 2148, 2152, 2157, 2155, - 2158, 1016, 2159, 2160, 2156, 2641, 2172, 998, 142, 2318, - 2176, 2186, 2591, 2187, 33, 1018, 2208, 2209, 1014, 2188, - 2211, 2220, 142, 1019, 1015, 2221, 2607, 2653, 2222, 1740, - 2229, 1016, 2243, 1740, 2248, 2254, 2256, 998, 2255, 2258, - 2263, 2264, 452, 2269, 1817, 1018, 2287, 2285, 2281, 817, - 2300, 2304, 2301, 1019, 2303, 2305, 2339, 2308, 2309, 452, - 2340, 3151, 2369, 2311, 944, 2314, 2332, 2364, 1778, 1020, - 2377, 142, 2319, 2228, 2338, 2646, 2609, 2384, 2956, 2397, - 2429, 2341, 2342, 3159, 2436, 2349, 2362, 3164, 3165, 2622, - 2363, 3154, 2387, 2437, 2401, 2432, 2433, 2450, 2454, 1020, - 2501, 2124, 2455, 2603, 2462, 2480, 2481, 2464, 2133, 2134, - 2135, 2136, 2137, 2138, 2482, 666, 2483, 2484, 2485, 3160, - 2486, 2487, 1794, 2488, 2489, 2490, 2496, 2502, 2503, 2504, - 2505, 2506, 2507, 2529, 452, 2532, 2533, 666, 2542, 457, - 2543, 2544, 620, 2545, 2566, 2570, 2583, 2546, 457, 2547, - 2580, 2724, 2725, 2726, 2727, 2588, 2582, 2594, 2589, 2596, - 2606, 2612, 2620, 2613, 457, 2608, 2625, 2629, 2645, 2610, - 2623, 2631, 1416, 2648, 2649, 1349, 1445, 1417, 2658, 2335, - 1573, 2329, 1747, 2334, 2687, 2688, 1747, 1405, 2689, 2700, - 1409, 2712, 2713, 2731, 1587, 2980, 2981, 2747, 2983, 2721, - 2737, 2749, 2777, 2736, 2740, 2791, 2750, 2751, 2792, 457, - 2761, 457, 2250, 2762, 2252, 2763, 457, 653, 2793, 2841, - 2603, 2789, 2818, 2845, 2782, 901, 2784, 735, 2320, 2321, - 2322, 2819, 2323, 2324, 2325, 2326, 2327, 2328, 457, 2847, - 752, 2849, 2856, 2329, 754, 2834, 2764, 2861, 2868, 2862, - 2891, 2875, 2906, 458, 2874, 766, 3253, 2900, 1495, 2903, - 2884, 2908, 2911, 2894, 771, 2907, 2916, 2913, 2921, 2920, - 2925, 2927, 2951, 2952, 3129, 789, 2926, 2931, 2961, 791, - 2967, 794, 1665, 1665, 2459, 1748, 2974, 2975, 2984, 2978, - 1748, 2985, 1418, 1748, 2990, 2970, 1419, 2993, 2999, 2315, - 2316, 3003, 3049, 3091, 2331, 2810, 452, 452, 3004, 3002, - 3005, 3013, 3049, 2317, 3015, 3018, 1420, 1421, 3020, 3023, - 3027, 3033, 3034, 3035, 1647, 3037, 826, 3039, 827, 1422, - 452, 3048, 2192, 2318, 666, 452, 666, 452, 452, 452, - 452, 3040, 3062, 2365, 2366, 3066, 3074, 457, 457, 3052, - 3067, 3069, 3075, 3076, 3077, 3085, 2132, 3086, 3100, 2132, - 2132, 2318, 1423, 3101, 3107, 1424, 3093, 3113, 2840, 3094, - 3115, 3121, 3131, 2132, 3132, 2142, 3133, 3134, 3174, 1425, - 1185, 3182, 2527, 3178, 1690, 681, 3183, 2257, 3201, 1300, - 2259, 3207, 3208, 2213, 2261, 3211, 2319, 3213, 3217, 3225, - 452, 452, 452, 3218, 452, 3228, 687, 3230, 3209, 3255, - 2527, 1008, 1740, 3210, 3256, 3161, 3273, 1740, 3283, 2178, - 1740, 1484, 2575, 2406, 2319, 2098, 973, 2191, 2473, 1753, - 2074, 2510, 3103, 2074, 2854, 2860, 2073, 2288, 2770, 1009, - 1587, 2858, 3010, 2431, 1427, 2509, 2029, 2599, 3226, 3252, - 3214, 3212, 3236, 1074, 2638, 2859, 1723, 2976, 2228, 3036, - 452, 3285, 2163, 3274, 3001, 3000, 2568, 2567, 2530, 1169, - 3147, 2191, 3237, 2896, 3092, 452, 1692, 3254, 1175, 2029, - 3095, 2029, 562, 821, 1177, 2909, 2872, 1323, 3192, 3137, - 2962, 2439, 1010, 666, 2018, 1225, 2876, 2016, 457, 3171, - 3284, 2971, 3266, 2973, 957, 3117, 1966, 531, 1306, 2853, - 2647, 2409, 2413, 2425, 457, 1310, 1519, 1978, 1522, 3170, - 1011, 1963, 1259, 2466, 457, 2396, 2225, 1517, 2618, 3054, - 768, 2704, 1428, 2410, 2957, 1429, 1430, 1431, 2153, 1432, - 1433, 1434, 1435, 1436, 1437, 2852, 3153, 1748, 2214, 901, - 1438, 2694, 2320, 2321, 2322, 2416, 2323, 2324, 2325, 2326, - 2327, 2328, 2382, 1008, 1748, 1747, 2296, 2329, 2380, 0, - 1747, 1312, 0, 1747, 2274, 1946, 0, 901, 0, 1331, - 2320, 2321, 2322, 0, 2323, 2324, 2325, 2326, 2327, 2328, - 683, 1009, 0, 0, 1930, 2329, 0, 2705, 0, 0, - 666, 452, 0, 0, 0, 0, 0, 0, 0, 0, - 681, 666, 452, 666, 3007, 0, 0, 0, 2435, 0, - 0, 0, 0, 0, 2977, 0, 0, 452, 452, 659, - 452, 0, 0, 0, 0, 0, 2735, 3090, 0, 0, - 0, 0, 0, 33, 1010, 142, 0, 1014, 0, 3016, - 0, 656, 0, 1015, 0, 656, 1665, 0, 0, 0, - 1016, 0, 0, 0, 0, 0, 998, 0, 0, 0, - 0, 0, 1011, 0, 1018, 0, 664, 457, 457, 457, - 457, 0, 1019, 0, 0, 0, 0, 0, 0, 2765, - 0, 1740, 0, 0, 0, 0, 2768, 0, 2769, 0, - 2474, 2475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 732, 452, 1748, 0, 0, 0, 0, 452, 0, - 0, 0, 0, 0, 3045, 0, 1573, 1573, 1020, 0, - 2132, 0, 0, 0, 452, 0, 2132, 2132, 2132, 2132, - 2132, 2132, 0, 0, 2896, 0, 0, 0, 0, 0, - 0, 2318, 0, 0, 0, 0, 0, 2860, 0, 0, - 0, 666, 2664, 0, 0, 2669, 2670, 2671, 2672, 2673, - 2674, 2675, 2676, 2677, 0, 2679, 0, 0, 0, 0, - -1640, 0, 2825, 2827, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3185, 33, 0, 1560, 0, 1014, - 818, 0, 0, 0, 0, 1015, 820, 0, 0, 1587, - 0, 0, 1016, 1748, 2319, 683, 0, 828, 998, 0, - 0, 0, 0, 0, 2716, 2717, 1018, 653, 2871, 0, - 0, 2154, 0, 0, 1019, 0, 820, 0, 0, 0, - 0, 0, 0, 1665, 1747, 0, 0, -1640, 0, 0, - 0, 0, 820, 0, 0, 960, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2029, 2626, 2074, 2628, 974, - 2630, 0, 2632, 0, 2634, 0, 3227, 0, 0, 2637, - 1020, 0, 0, 0, 0, 0, 0, 0, 0, 659, - 3045, 0, 0, -1640, 659, 659, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 2652, -1640, 0, 0, 0, - 0, -1640, 0, 0, 0, -1640, 0, 653, -1640, 0, - -1640, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1640, 3280, 659, 659, 659, - 659, 452, 1166, 0, 0, 0, 653, 0, 457, 0, - 0, 0, 2282, -1640, 0, 0, 0, 901, 0, 656, - 2954, -1643, -1643, 0, 2323, 2324, 2325, 2326, 2327, 2328, - 457, 0, 0, 0, 0, 2329, 0, 0, 0, 0, - 3045, 659, 0, 653, 0, 0, 1709, 0, 0, 0, - 2836, 457, 1250, 1252, 1253, 0, 656, -1640, 0, 0, - 0, 0, 656, 0, 0, -1640, 0, 0, 0, 3279, - 0, 0, 0, 0, 0, 2132, 2132, 2132, 0, 0, - 0, 0, 452, 659, 0, 0, 1758, 2991, 2992, 457, - 659, 2995, 2996, 0, 0, 1767, 0, 1769, 0, 0, - 0, 142, 1770, -1640, 0, 0, 0, 659, 0, 0, - 820, 0, 0, 0, 3278, 0, 0, 0, 3245, 0, - 0, 0, 0, 0, 653, 0, 0, 0, 0, 0, - 0, 820, 142, 0, 0, 3022, 0, 0, 0, 0, - 0, 656, 0, 653, 0, 0, 560, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3046, - 3245, 0, 0, 0, 0, 0, 0, -1640, 656, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3245, 0, 0, 0, -1640, 0, 0, - 0, 0, 0, 0, 708, 0, 0, 0, 0, 0, - 0, 0, 2935, 2936, 0, 0, 653, -1640, -1640, -1640, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1573, 1573, 0, 1573, 0, 709, 0, 0, -1640, - 0, 0, -1640, 0, -1640, -1640, 0, 2449, 710, 2452, - 0, 0, 0, 0, 0, 711, 0, 0, 712, 0, - 0, 0, 656, 1159, 1487, 0, 0, 0, 0, 656, - 0, 0, 0, 0, 0, 713, 656, 0, 0, 2132, - 0, 0, 0, 0, 3104, 0, 653, 0, 0, 0, - 2469, 0, 2982, 0, 0, 0, 714, 1224, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2904, 2905, 0, 0, 0, 0, - 0, 0, 0, 0, 656, 0, 0, 715, 0, 0, - 0, 3135, 0, 0, 0, 0, 0, 0, 0, 2495, - 0, 0, 0, 0, 0, 0, 716, 1988, 0, 0, - 0, 0, 0, 0, 0, 1995, -1642, 0, 0, 1618, - 0, 1999, 656, 0, 1573, 0, 0, 2004, 0, 0, - 717, 0, 2009, 0, 0, 0, 0, 2011, 0, 0, - 0, 0, 0, 0, 1224, 0, 0, 0, 0, 0, - 0, 0, 1573, 0, 0, 0, 2025, 0, 2026, 0, - 0, 0, 0, 0, 0, 0, 656, 2578, 0, 0, - 2059, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, - 2469, 3065, 0, -1642, 0, 0, 718, 2076, 2077, 2080, - 2081, 1573, 656, 0, 2087, 2090, 0, 0, 2092, 2093, - 2094, 0, 0, 0, 2100, 3079, 3080, 0, 0, 158, - 0, 2113, 0, 0, 2115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2627, 656, 656, 0, 656, -1642, - 1587, 719, 0, 0, 0, 720, 0, 721, 0, 0, - 0, 0, -1642, 722, 0, 656, 0, -1642, 0, 0, - 0, -1642, 0, 1414, -1642, 0, -1642, 0, 0, 0, - 0, 1416, 0, 0, 0, 0, 1417, 0, 0, 0, - 723, 724, 3244, 0, 2659, 725, 0, 0, 0, 0, - 0, -1642, 0, 726, 0, 0, 0, 0, 727, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1642, - 656, 0, 0, 656, 656, 2678, 0, 0, 728, 0, - 0, 1224, 3136, 0, 3244, 1159, 0, 3142, 3142, 2686, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3150, 0, 0, 0, 0, 0, 3244, 0, 3058, - 3059, 3060, 3061, -1642, 0, 1224, 0, 0, 0, 3063, - 0, -1642, 0, 1768, 0, 0, 0, 0, 0, 1224, - 1771, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3167, 0, 3169, 0, 0, 0, 0, 0, 0, - 0, 1418, 820, 820, 0, 1419, 0, 0, 0, -1642, - 2283, 0, 0, 0, 1802, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1420, 1421, 0, 0, 0, - 0, 0, 0, 0, 3193, 0, 0, 0, 1422, 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, 0, 0, 0, 2775, 0, - 0, 1423, 0, -1642, 1424, 0, 3216, 0, 0, 0, - 0, 0, 0, 3142, 0, 0, 0, 0, 1425, 0, - 1426, 0, 0, -1642, 0, 0, 0, 0, 0, 0, - 3229, 0, 0, 0, 0, 0, 0, 0, 0, 1224, - 0, 0, 0, -1642, -1642, -1642, 0, 0, 0, 0, - 0, 0, 0, 3149, 0, 0, 0, 1224, 0, 1945, - 0, 0, 0, 0, 0, -1642, 0, 0, -1642, 0, - -1642, -1642, 0, 0, 0, 0, 1224, 0, 0, 0, - 0, 0, 0, 1427, 0, 0, 0, 0, 0, 0, - 0, 0, 2844, 0, 0, 0, 0, 0, 0, 1224, - 0, 0, 0, 1159, 0, 0, 0, 0, 0, 0, - 0, 1967, 0, 2427, 2428, 0, 1414, 0, 0, 0, - 0, 0, 0, 0, 1416, 0, 0, 0, 0, 1417, - 0, 0, 0, 0, 0, 0, 656, 0, 656, 0, - 0, 0, 0, 0, 1224, 0, 656, 0, 0, 0, - 0, 0, 0, 0, 0, 1224, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1428, 0, 1222, 1429, 1430, 1431, 0, 1432, 1433, - 1434, 1435, 1436, 1437, 0, 656, 1644, 0, 0, 1438, - 0, 0, 0, 1645, 0, 0, 1414, 0, 0, 0, - 0, 0, 0, 0, 1416, 0, 0, 0, 0, 1417, - 0, 2476, 2477, 2478, 2479, 0, 0, 0, 1414, 656, - 656, 0, 1971, 0, 0, 0, 1416, 656, 0, 0, - 656, 1417, 0, 656, 2091, 0, 0, 0, 0, 0, - 0, 656, 656, 0, 1418, 2492, 0, 0, 1419, 656, - 0, 0, 656, 656, 656, 656, 0, 0, 0, 0, - 1222, 0, 656, 656, 0, 656, 0, 656, 1420, 1421, - 656, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2966, 1422, 0, 0, 0, 656, 1159, 0, 0, 656, - 0, 0, 0, 656, 0, 0, 1972, 656, 0, 0, - 656, 656, 656, 656, 656, 656, 656, 656, 656, 1224, - 0, 656, 2177, 0, 1423, 0, 656, 1424, 0, 656, - 2579, 0, 0, 0, 1418, 0, 0, 0, 1419, 0, - 0, 1425, 0, 1426, 0, 0, 0, 2593, 0, 0, - 2194, 0, 0, 0, 0, 0, 1418, 2212, 1420, 1421, - 1419, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1422, 0, 0, 0, 0, 0, 0, 0, 656, - 1420, 1421, 0, 0, 0, 0, 0, 0, 0, 0, - 150, 0, 0, 1422, 0, 1466, 0, 0, 0, 0, - 0, 0, 0, 0, 1423, 0, 1427, 1424, 0, 0, - 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0, - 0, 1425, 0, 1426, 0, 0, 1423, 0, 656, 1424, - 0, 0, 2578, 0, 0, 0, 0, 1222, 0, 0, - 0, 0, 0, 1425, 151, 1426, 0, 1224, 0, 0, - 0, 1224, 1224, 0, 0, 0, 0, 0, 0, 0, - 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1222, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 153, 0, 0, 1222, 1427, 0, 0, 0, - 0, 0, 0, 0, 1428, 0, 0, 1429, 1430, 1431, - 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, 1427, 0, - 0, 0, 1438, 154, 0, 2310, 0, 0, 155, 0, - 0, 0, 0, 0, 0, 0, 656, 0, 0, 0, - 0, 0, 156, 0, 1224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 920, 656, 1973, 1224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2393, 0, 0, 0, - 0, 0, 0, 0, 1428, 0, 0, 1429, 1430, 1431, - 968, 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, 0, - 0, 0, 1438, 0, 0, 2357, 1428, 0, 0, 1429, - 1430, 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, - 0, 0, 157, 0, 1438, 1222, 0, 0, 2776, 0, - 656, 0, 0, 2783, 0, 2785, 2786, 2787, 2788, 0, - 656, 0, 0, 1222, 0, 158, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1222, 0, 0, 0, 0, 159, 0, 656, - 0, 0, 0, 160, 1080, 0, 0, 0, 0, 161, - 468, 0, 1416, 0, 0, 1222, 656, 1417, 0, 0, - 0, 0, 469, 0, 0, 0, 0, 1224, 2829, 2831, - 2833, 0, 2835, 0, 0, 0, 162, 163, 1587, 0, - 0, 164, 470, 0, 0, 656, 656, 0, 0, 165, - 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, - 1222, 471, 0, 167, -501, 0, 0, 0, 0, 0, - 0, 1222, 0, 0, 168, 656, 656, 0, 0, 0, - 656, 472, 0, 0, 0, 0, 0, 473, 0, 0, - 0, 0, 656, 656, 656, 656, 0, 0, 0, 0, - 1159, 0, 474, 2899, 656, 1159, 0, 656, 0, 0, - 656, 0, 0, 0, 0, 0, 0, 0, 0, 656, - 656, 0, 656, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1418, -651, 475, 656, 1419, 656, 476, 0, - 0, 656, 0, 0, 0, 0, 0, 0, 1354, 0, - 0, 2572, -631, 0, 0, 0, 1420, 1421, 656, 0, - 2581, 0, 0, 0, 0, 0, 0, 0, 656, 1422, - 656, 656, 0, 0, 1377, -407, 2595, 0, 0, 0, - 0, 0, 0, 0, 0, 656, 477, 0, 0, 0, - 0, 656, 0, 0, 0, 0, 0, 0, 0, 0, - 656, 656, 656, 0, 0, 1424, 0, 1402, 1403, 0, - 1406, 0, 0, 0, 0, 656, 0, 0, 0, 1425, - 0, 2635, 0, 2636, 0, 1222, 0, 1443, 2639, 2963, - 0, 0, 478, 0, 479, 0, 1224, 1224, 0, 1224, - 2972, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 820, 0, 1224, 0, 1224, -407, 0, 1414, 0, 0, - 0, 0, 0, 0, 0, 1416, 0, 0, 0, 0, - 1417, 0, 0, 0, 0, 0, 0, 480, 0, 0, - 0, -651, 1507, 481, 1427, 1514, 1516, 0, 0, 0, - 0, 0, 0, 0, 0, 1224, 1414, 0, 0, 0, - 0, 0, 0, 0, 1416, 0, 0, 0, 0, 1417, - 0, 0, 0, 0, 0, 0, 0, 482, 483, 0, - 484, 485, 0, 0, 0, 0, 0, 0, 0, 486, - 0, 0, 0, 487, 488, 0, 0, 0, 489, 0, - 3032, 0, 0, 490, 1224, 0, 2593, 0, 0, 0, - 0, 0, 0, 1222, 0, 0, 0, 1222, 1222, 2728, - 2729, 0, 0, 0, 0, 0, 2334, 0, 0, 1224, - 0, 2335, 1428, 0, 0, 1429, 1430, 1431, 0, 1432, - 1433, 1434, 1435, 1436, 1437, 1418, 0, 0, 0, 1419, - 1438, 0, 0, 0, 0, 0, 1159, 1224, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1420, - 1421, 0, 1224, 0, 0, 0, 1214, 0, 0, 0, - 0, 0, 1422, 0, 1418, 1224, 0, 0, 1419, 0, - 0, 0, 0, 0, 0, 0, 1224, 0, 0, 0, - 1222, 0, 0, 0, 0, 0, 0, 0, 1420, 1421, - 656, 0, 0, 0, 656, 1423, 0, 0, 1424, 0, - 0, 1422, 1222, 0, 656, 0, 0, 0, 0, 1224, - 0, 0, 1425, 0, 1426, 1224, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 656, 0, 0, 0, 0, - 0, 0, 1216, 0, 1423, 0, 0, 1424, 0, 0, - 0, 0, 0, 1214, 0, 0, 0, 0, 0, 0, - 2821, 1425, 0, 1426, 0, 0, 656, 0, 0, 1224, - 0, 0, 0, 0, 0, 656, 2842, 0, 2695, 0, - 0, 656, 0, 656, 0, 0, 2846, 1427, 656, 0, - 0, 656, 656, 656, 656, 656, 656, 656, 656, 656, - 1224, 656, 0, 0, 0, 656, 656, 0, 0, 0, - 0, 0, 0, 0, 1224, 0, 0, 0, 0, 656, - 0, 0, 0, 1159, 0, 656, 1427, 0, 0, 1216, - 0, 0, 0, 0, 0, 656, 0, 0, 656, 2696, - 656, 0, 0, 1222, 0, 0, 0, 0, 1224, 656, - 656, 656, 0, 0, 0, 656, 0, 0, 656, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 656, 0, - 0, 0, 0, 0, 0, 1428, 0, 0, 1429, 1430, - 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, - 0, 0, 0, 1438, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1828, - 3215, 0, 0, 0, 1428, 0, 0, 1429, 1430, 1431, - 1214, 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, 0, - 0, 1850, 1438, 0, 1852, 0, 0, 1863, 0, 2947, - 2948, 2949, 2950, 1224, 1870, 1875, 0, 0, 0, 1880, - 0, 0, 1885, 0, 1214, 0, 0, 0, 1416, 0, - 0, 0, 0, 1417, 0, 0, 0, 1894, 1214, 0, - 0, 1900, 0, 0, 0, 1912, 0, 0, 0, 1919, - 0, 0, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, - 1929, 0, 0, 1931, 0, 0, 1216, 0, 920, 0, - 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1217, 0, 0, 0, 0, 656, 0, 0, 0, - 1216, 0, 0, 0, 0, 0, 0, 1224, 0, 0, - 0, 0, 0, 0, 1216, 2367, 0, 0, 0, 0, - 0, 968, 1222, 1222, 0, 1222, 2036, 0, 0, 0, - 0, 0, 0, 0, 2037, 2038, 2039, 0, 1222, 0, - 1222, 0, 0, 0, 0, 0, 0, 0, -1643, 0, - 0, 0, 1419, 656, 0, 0, 0, 0, 656, 0, - 0, 656, 0, 0, 0, 0, 0, 0, 1214, 0, - 2002, 0, 1420, 1421, 0, 2040, 0, 0, 1217, 0, - 0, 1222, 0, 0, 0, -1643, 1214, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 656, 0, 0, - 0, 0, 0, 0, 0, 1214, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2041, 0, 0, 0, 0, - 2042, 1424, 0, 0, 0, 0, 0, 0, 1214, 0, - 1222, 0, 0, 656, 0, 1425, 0, 0, 0, 0, - 656, 656, 0, 1224, 1216, 0, 0, 0, 656, 656, - 1219, 0, 0, 656, 1224, 1222, 0, 2043, 0, 656, - 656, 0, 1216, 656, 0, 0, 0, 0, 2121, 0, - 0, 0, 0, 1214, 2044, 2045, 2046, 2047, 2048, 0, - 2049, 1216, 0, 1222, 1214, 0, 0, 0, 0, 0, - 3109, 0, 0, 0, 0, 1224, 2151, 0, 1222, 0, - -1643, 0, 0, 0, 1216, 0, 0, 0, 0, 0, - 2050, 1222, 820, 0, 0, 1414, 0, 0, 1415, 0, - 0, 0, 1222, 1416, 0, 0, 0, 0, 1417, 0, - 0, 0, 0, 3145, 0, 0, 1220, 1219, 0, 0, - 0, 0, 1416, 2051, 0, 1217, 0, 1417, 0, 1216, - 0, 0, 0, 0, 0, 1222, 0, 0, 0, 0, - 1216, 1222, 0, 0, 0, 0, 0, 0, 1221, 0, - 0, 3157, 2245, 0, 0, 656, 0, 0, 2052, 1217, - 2053, 0, 0, 0, 0, 0, 0, 0, 1428, 0, - 0, 0, 0, 1217, 0, 1432, 1433, 1434, 1435, 1436, - 1437, 2262, 2054, 0, 0, 1222, 1438, 0, 0, 2055, - 0, 0, 2056, 0, 0, 656, 0, 0, 920, 0, - 0, 0, 0, 1220, 0, 0, 0, 0, 656, 0, - 0, 0, 656, 0, 0, 0, 1222, 1224, 1214, 0, - 0, 0, 0, 1418, 0, 0, 0, 1419, 2294, 0, - 1222, 0, 0, 0, 0, 1221, 0, 656, 0, 0, - 0, 1224, 1418, 0, 0, 0, 1419, 1420, 1421, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1422, 656, 656, 0, 1222, 656, 1420, 1421, 0, 0, - 0, 0, 656, 656, 1875, 0, 1875, 1875, 0, 1422, - 0, 0, 0, 0, 1219, 656, 2355, 0, 0, 2358, - 0, 0, 2360, 1423, 1216, 0, 1424, 0, 0, 656, - 0, 0, 0, 1217, 0, 0, 0, 0, 0, 0, - 1425, 0, 1426, 0, 0, 1424, 0, 2381, 1219, 2383, - 0, 1217, 0, 2386, 656, 0, 0, 0, 0, 1425, - 0, 0, 1219, 0, 0, 0, 0, 0, 0, 0, - 1217, 0, 0, 0, 0, 0, 1214, 0, 0, 0, - 1214, 1214, 0, 0, 0, 0, 0, 0, 0, 1222, - 0, 656, 656, 1217, 0, 0, 0, 968, 0, 0, - 1220, 0, 0, 1507, 0, 1427, 0, 0, 0, 0, - 0, 0, 1516, 1516, 1514, 0, 0, 656, 1224, 0, - 656, 0, 656, 0, 1427, 0, 0, 2430, 0, 0, - 0, 0, 1221, 0, 1220, 0, 0, 0, 1217, 0, - 1224, 0, 0, 0, 1224, 1224, 0, 0, 1220, 1217, - 0, 0, 1216, 0, 0, 0, 1216, 1216, 0, 0, - 0, 0, 0, 1214, 0, 0, 1221, 0, 0, 0, - 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, - 1221, 0, 0, 1222, 0, 1214, 0, 0, 0, 0, - 0, 656, 1219, 1428, 0, 0, 1429, 1430, 1431, 0, - 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, 0, 0, - 1219, 1438, 1428, 1224, 0, 0, -1643, -1643, 0, 1432, - 1433, 1434, 1435, 1436, 1437, 0, 0, 0, 0, 1219, - 1438, 0, 0, 0, 0, 0, 0, 0, 0, 1216, - 1416, 0, 0, 0, 0, 1417, 0, 0, 0, 0, - 0, 0, 1219, 0, 656, 0, 0, 0, 0, 0, - 0, 1216, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1220, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 1220, 1219, 0, 0, - 0, 1223, 2, 1217, 3, 4, 0, 0, 1219, 0, - 1221, 0, 0, 0, 0, 1220, 1214, 0, 5, 1222, - 0, 0, 0, 0, 656, 0, 0, 2378, 1221, 0, - 1222, 0, 0, 0, 0, 0, 0, 6, 1220, 7, - 8, 0, 0, 0, 9, 10, 0, 1221, 0, 0, - 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, - -1643, 0, 0, 0, 1419, 0, 0, 0, 0, 0, - 1221, 1222, 13, 0, 0, 14, 0, 0, 0, 0, - 0, 15, 0, 1220, 1420, 1421, 0, 16, 1223, 0, - 0, 0, 1216, 17, 1220, 0, 0, -1643, 0, 18, - 0, 0, 0, 0, 0, 19, 0, 20, 0, 0, - 0, 0, 21, 0, 0, 1221, 0, 0, 0, 0, - 0, 0, 0, 0, 22, 0, 1221, 0, 2657, 0, - 0, 1217, 0, 1424, 0, 1217, 1217, 2660, 0, 0, - 0, 0, 0, 2661, 0, 2662, 0, 1425, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1219, 0, 0, 0, 0, 2680, 2681, 0, - 0, 0, 0, 24, 25, 0, 0, 0, 0, 26, - 0, 0, 0, 0, 0, 0, 0, 1880, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 2706, 0, 0, - 2709, 0, 2711, 0, 0, 0, 28, 0, 0, 0, - 0, 2715, -1643, 1222, 0, 0, 0, 2720, 1217, 0, - 2723, 0, 0, 0, 0, 1214, 1214, 0, 1214, 0, - 2730, 0, 0, 0, 0, 0, 0, 1222, 0, 29, - 1217, 1214, 0, 1214, 0, 0, 0, 0, 1220, 30, - 0, 0, 31, 0, 32, 1223, 0, 0, 0, 33, - 0, 0, 0, 0, 34, 0, 0, 35, 0, 0, - 0, 36, 0, 0, 1416, 0, 0, 37, 0, 1417, - 1221, 0, 38, 0, 1214, 39, 0, 0, 0, 1574, - 1219, 0, 40, 0, 1219, 1219, 0, 0, 0, 0, - 1428, 1216, 1216, 1223, 1216, 0, 0, 1432, 1433, 1434, - 1435, 1436, 1437, 0, 0, 0, 0, 1216, 1438, 1216, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, - 0, 43, 0, 1214, 44, 0, 0, 0, 45, 0, - 0, 0, 0, 0, 0, 0, 1414, 0, 0, 0, - 0, 0, 0, 0, 1416, 0, 0, 0, 1214, 1417, - 1216, 2718, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1217, 0, 0, 0, 0, 1220, 1219, 0, 0, - 1220, 1220, 0, 0, 1222, 0, 1214, 0, 0, 0, - 46, 0, 0, 0, -1643, 0, 0, 0, 1419, 1219, - 0, 1214, 0, 0, 0, 0, 1222, 0, 1221, 1216, - 1222, 1222, 1221, 1221, 1214, 0, 0, 0, 1420, 1421, - 0, 0, 0, 0, 0, 1214, 0, 0, 0, 0, - 0, -1643, 0, 1223, 1216, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1223, 0, 0, 0, 0, 0, 0, 1214, 0, - 0, 0, 1216, 1220, 1214, 0, 0, 1424, 0, 0, - 1223, 0, 0, 0, 1418, 0, 0, 1216, 1419, 1222, - 0, 1425, 0, 0, 0, 1220, 0, 0, 0, 2912, - 1216, 0, 0, 1223, 0, 1221, 0, 0, 1420, 1421, - 0, 1216, 0, 0, 0, 0, 0, 0, 1214, 0, - 0, 1422, 0, 0, 0, 0, 0, 1221, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1219, 0, 2928, 2930, 1216, 0, 0, 0, 1223, 1214, - 1216, 0, 0, 0, 1423, 2937, -1643, 1424, 0, 1223, - 0, 2942, 2943, 1214, 0, 2945, 0, 0, 0, 0, - 0, 1425, 0, 1426, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1217, 1217, 0, 1217, 1216, 0, 0, 1214, 0, 0, - 0, 0, 0, 0, 0, 0, 1217, 0, 1217, 0, + 153, 659, 789, 1056, 867, 868, 1288, 697, 1057, 872, + 1296, 489, 708, 645, 152, 1058, 1926, 574, 1334, 993, + 725, 1720, 1257, 574, 1356, 1170, 1939, 515, 2196, 1367, + 1811, 1386, 1387, 580, 1122, 1000, 2051, 1413, 1065, 2491, + 829, 611, 1755, 1008, 1160, 612, 2608, 1865, 658, 1980, + 1402, 2235, 1598, 1892, 147, 479, 1842, 1636, 148, 2421, + 1059, 479, 479, 2696, 1843, 2698, 150, 479, 779, 479, + 582, 1595, 584, 2197, 2199, 479, 592, 479, 1844, 1694, + 602, 608, 582, 1319, 615, 1232, 608, 608, 1593, 1598, + 1236, 647, 1193, 1845, 1846, 479, 1847, 1242, 2629, 2125, + 1922, 2475, 2840, 2796, 2435, 2437, 1259, 819, 2751, 670, + 1750, 662, 2987, 671, 2443, 1595, 65, 124, 1652, 2133, + 640, 3143, 629, 648, 553, 3106, 3117, 2130, 1267, 1488, + 1052, 1279, 1593, 1505, 1505, 1256, 1439, 1439, -1670, 1380, + 1381, 2751, 1432, -1702, -1722, 1280, 1053, 1439, 2920, -1751, + 2306, 487, 1599, 1093, 3546, 3082, 2363, 669, 1863, 1954, + 1280, 1711, 3085, 1320, 1399, 1280, 3087, 2831, 3398, -1606, + 1974, -311, 1347, 3525, 997, 525, 2500, 3089, 1936, -1457, + 853, 2090, 2329, 1659, 1870, 14, -1457, 1351, 2091, 2480, + -1054, 15, 892, 1073, 2148, 15, 2818, 1430, -1473, 3547, + 1187, 3160, 1675, 3162, 863, -1473, -1057, 2055, 1680, 2055, + 3013, 702, 704, 702, 2660, 19, 710, 2230, 727, -1721, + 710, 479, 1870, 479, 3465, 479, 3547, 479, 702, 710, + -1061, 498, 2450, 2071, 2452, 1150, 2180, 2763, 2327, 2779, + 1271, 2773, 2774, 2775, 2776, 2777, 2778, 1753, 1736, 807, + 1702, 1739, 1740, 2780, -1673, 732, 3305, 1314, -1244, -1054, + 1181, 3102, 23, 1167, 3018, 855, 23, 1439, 3306, 1661, + 1140, 2687, 1280, 1249, 1955, -1057, 1151, 2607, 2016, 1141, + -1216, 3421, 741, 2781, 1048, 2782, 500, 1443, 1444, 1170, + 1595, 1272, 616, 2484, 1120, 1074, 482, 3578, 33, -1061, + 1790, 1097, 709, 1492, 870, 1969, 728, 1835, 1707, 2105, + 1413, 2489, 3014, 1375, 1250, 738, 1628, 3275, 2214, 1474, + 1386, 1387, 1121, 3592, 28, 1072, 568, 1705, 1402, 1611, + 1710, -1054, 3234, 1612, 1819, 775, 1468, -1249, 1447, 2096, + 2758, 484, 1815, 3276, -1249, 1493, 1439, -1057, 1050, 1471, + 1123, 725, 3610, -1216, 2783, 2072, 864, 1708, 2485, 2073, + 1161, 1789, 1793, -1249, 1629, 1659, 3019, 2215, 1117, 1871, + 1757, -1061, 1702, 1600, 814, 1273, 742, 1475, 1719, 1660, + 2481, 822, 2149, 37, 2182, 617, 2330, 871, 1290, 725, + 3491, 1069, 1051, 1281, 2074, 3015, 3103, 37, 1142, 1937, + 1662, 37, 2231, 1098, 1816, 1168, 808, 3292, 1281, 3009, + 1010, 2015, 41, 1281, 2661, 2784, 1480, 1809, 585, 2688, + 2785, 3307, 526, -1721, 1274, 507, 41, 508, 1152, 585, + 41, 1712, 701, 3058, 705, 3526, 1380, 1381, 1075, 1983, + 1746, 3284, 1748, 1713, 2307, 1399, 46, 2751, 1956, 736, + 1783, 1661, 1290, 44, 2045, 1352, 2786, 44, 47, 1817, + 46, 1864, 1818, 585, 46, 1957, 1251, 568, 2787, 2478, + 585, 3602, 47, 824, 585, 3548, 47, 832, -1054, 871, + 3326, 2832, 585, 1931, -1457, 585, 2092, 844, -1721, 1595, + 1663, 1786, 1714, 1784, -1057, 1076, 1805, -1888, 527, 1348, + 528, 1598, 3548, -1473, -1721, 3335, 2053, 1275, 3182, 1811, + 1153, 1352, 2056, 48, 2583, 1433, 2075, 3593, -1061, 1643, + 1281, 1456, 1457, 1458, 1459, 1460, 1461, 851, 1169, 2991, + 1316, 748, 1462, 1462, 1239, 1644, 1756, 1461, 48, 479, + 1685, 2974, 704, 1462, 702, 1290, 2788, 710, 1252, 727, + 2881, 710, 793, 479, 479, 852, 1819, 854, 479, 856, + 702, -1670, 710, 857, 2563, 1824, -1702, -1722, -1054, 479, + 3372, 2184, -1751, 568, 2656, 1099, 2657, 3557, 479, 569, + 570, 704, 1662, 1815, -1057, 479, 1469, 727, 1876, 479, + 479, 770, -1606, 479, 1174, 479, 2127, 479, 871, 479, + 2847, 1177, 702, 648, 2851, 1977, 1979, 1659, -1061, 725, + -1054, 3408, -1244, -1054, 1011, 2317, 1987, 2482, 3304, 1990, + 1731, 1660, 524, 804, 1670, 3479, -1057, 2002, 2003, -1057, + 3396, -1244, 3036, 784, 2006, 2007, 2620, 791, 2722, 2723, + 2020, 2022, 2689, 3450, 479, 1816, 479, 1820, 800, 884, + -1061, 2036, 1269, -1061, 1458, 1459, 1460, 1461, 568, 3081, + 1375, 153, 1892, 1462, 569, 570, 2384, -1216, 874, 608, + 498, 1002, 1663, 608, 1821, 152, 1874, -1673, -1216, 1012, + 1385, -1216, 2760, 1064, 663, -1216, 15, 3575, 2286, 485, + 1873, -1249, 3436, 1661, 2287, 888, 1026, 1667, 2094, 1666, + 1817, 2676, 479, 1818, 1595, 996, 2112, 2163, 1857, 1006, + -1249, 2748, 596, 159, 2291, 147, 3184, 2613, 3185, 148, + 573, 1593, 3504, 583, 874, 500, 573, 150, 3067, 1667, + 3586, 1456, 1457, 1458, 1459, 1460, 1461, 2761, 664, 1942, + 1943, 3480, 1462, 2292, 2748, 2717, 3475, 1101, 2720, 2721, + 160, 3476, 2724, 1102, 3558, 3580, 1671, 23, 1304, 1991, + 702, 702, 2731, 3119, 1079, 780, 1297, 3309, 159, 2903, + 1595, 2904, 3300, 1796, 3145, 3310, 1741, 65, 124, 1858, + 3100, 798, 585, 3037, 1681, 597, 585, 2227, 479, 2838, + 2288, 2180, 1103, 3413, 1080, 2779, 1911, 1819, 860, 1305, + 479, 3481, 1595, 2677, 588, 160, 1345, 727, 2483, 479, + 3301, 665, 595, 585, 1797, 479, 1358, 861, 1140, 702, + 3451, 1992, 1482, 2095, 1662, 3559, 479, 2181, 1368, 3002, + 1672, 3067, 2840, 3506, 1819, 702, 702, 2985, 3101, 2781, + 1750, 3542, 1104, 3385, 3576, 3146, 3186, 3560, 37, 1105, + 1081, 153, 1106, 702, 1268, 3003, 479, 636, 3069, 1900, + 2266, 1668, 1670, 1682, 507, 1328, 508, 3587, 2269, 3537, + 2271, 613, 650, 153, 702, 702, 1993, 41, 479, 1994, + 1082, 1239, 1892, 3477, 3581, 2016, 2016, 1350, 1820, 2905, + 2016, 3373, 37, 1002, 3120, 1742, 1373, 1743, 3289, 2906, + 3068, 1107, -320, 1206, 2009, 1324, 3221, 3222, 3223, 1325, + 479, 46, 1333, 1333, 1663, 1389, 659, 1326, 479, 582, + 666, 41, 3311, 47, 479, 1483, 2186, 1702, 479, 2016, + 2016, 1048, 3574, 2289, 1709, 1049, 1364, 741, 3386, 2182, + 479, 3400, 1370, 2348, 3414, 1416, 2678, 2137, 44, 1596, + 159, 1306, 3502, 3503, 652, 46, 1108, 598, 599, 1859, + 1042, 3069, 2290, 1428, 48, 3590, 1798, 47, 1946, 725, + 1860, 3282, 1614, 1995, 3415, 2679, 2785, 1066, 3376, 660, + 3147, 1115, 1116, 1624, 1290, 1747, 2293, 160, 2672, 493, + 3540, 3541, 1109, 1596, 3004, 1050, 1617, 1619, 1610, 1623, + 1618, 1618, 661, 1618, 2673, 2187, 1067, 3417, 48, 672, + 33, 33, 2786, 1684, 1290, 1085, 2751, 1839, 2015, 2015, + 1721, 1086, 3153, 2015, 2787, 1111, 2138, 3157, 1087, 3461, + 3159, 742, 3269, 1307, 1068, 1121, 3148, 3418, 1774, 1051, + 1186, 3416, 3177, 1089, 669, 669, 1794, 669, 1799, 1112, + 2748, 1090, 1002, 1043, 3573, 3493, 1237, 1238, 3150, 1002, + 1002, 3591, 2015, 2015, 1996, 1722, 1723, 498, 37, 1625, + 1997, 706, 585, 1602, 1265, 1609, 1741, 2373, 2374, 2375, + 2376, 2651, 1385, 479, 479, 1064, -703, 2448, 1595, 1840, + 3270, 3005, 2453, 1595, 3006, 1292, 1294, 41, 2350, 1091, + 2216, 2428, 2788, 1069, 3419, 2555, 1719, 1627, 3063, 1795, + 2560, 1188, 1189, 2984, 1830, 37, 608, 2062, 1062, 2063, + 1837, 1894, 500, 1897, 1758, 3535, 479, 2429, 1484, 1485, + 585, 46, 1903, 3539, 568, 2880, 608, 1866, -1584, 2064, + 569, 1486, 2853, 47, 41, 725, 1628, 1063, 1124, 2217, + 2351, 3136, 2431, 1716, 3064, 3049, 2945, -1584, 2878, 1721, + 2045, 3052, 3053, 3054, 3055, 3056, 3057, 727, 1596, 608, + 3572, 2369, -1097, 734, 2892, 1776, -1097, 1125, 46, 2655, + 1842, 2881, 708, 801, 48, 3515, 3370, 1159, 1843, 585, + 3169, 33, 3170, 2840, 1629, 1742, 3487, 1743, 702, 702, + 702, 702, 1844, 1892, 1722, 1723, 710, 1892, 184, 3516, + 1721, 802, 1408, 486, 2444, 1121, 2498, 1845, 1846, 1268, + 1847, 555, 2352, 2353, 801, 1905, 2495, 702, 702, 2165, + 1409, 48, 1929, 702, 1914, 2354, -1097, 2065, 614, 3384, + 1505, 1721, 2066, 2523, 3343, 1719, 1921, 2067, 1155, 2874, + 1148, 803, 2799, 725, 2433, 1722, 1723, 2439, 573, 1647, + 573, 507, 573, 508, 2549, 2658, 573, 2946, 858, 859, + 1385, 1935, 510, 1653, 1940, 1941, 1886, 1156, 1944, 1149, + -1097, 1777, 513, 479, 1069, 1290, 1722, 1723, 1648, 2355, + 2674, 710, 803, 2572, 1664, 479, 1719, 702, 702, 702, + 702, 659, 3458, 2496, 740, 1157, 710, 2819, 2524, 2497, + 1778, 587, 1002, 1408, 1268, 2523, 1649, 3, 4, 2675, + 2348, 1408, 1703, 1595, 1595, 1595, 2645, 1719, 2574, 1430, + 2575, 1409, 3332, 704, 479, 1930, 2461, 479, 479, 1409, + 1019, 2603, 2604, 727, 2427, 1020, 479, 479, 658, 479, + 2576, 479, 1079, 1410, 1004, 1779, 479, 153, 479, 710, + 2068, 1412, -1561, 702, 702, 1780, 3409, 1596, 3079, 2069, + 2356, 1968, 2357, 1971, -1585, 1478, 1970, 1838, 1333, 1019, + 2524, -1561, 1080, 479, 1020, 2533, 479, 479, 1781, 1408, + 479, 2534, 3410, -1585, 2901, 2016, 1951, 774, 2016, 2016, + 2016, 2016, 2016, 2016, 2016, 2016, 2016, 1409, 2016, 2428, + -1259, 1965, 777, 582, 582, 1966, 1595, 1976, 2921, 1761, + 1762, 1763, 1764, 1967, 1385, 1408, 2523, 1653, 1253, 1410, + -1066, 1959, 1019, 1835, -1561, 2429, 1311, 1020, 1081, 778, + -1066, 1069, 2060, 1409, -1066, -1887, -1259, 1254, 1791, 1792, + 2430, 727, -1216, 2577, 1801, 1312, 2016, 2016, 2578, 1928, + 2431, 781, -108, 1929, -1887, 1412, -1229, -108, 1082, 1598, + 958, 1385, 790, -108, -108, 3322, -1256, 2528, 2529, 2530, + 2531, 2532, 2533, 2432, -1066, 1391, 3259, 3260, 2534, 171, + 585, 2524, 1137, 585, 1147, -1256, 585, 3038, 2999, 2523, + 2115, 1164, 1302, 1385, -1066, 568, 1653, 796, 2045, 1435, + 3154, 2427, 1472, 1317, 805, 2116, 3039, 568, 1853, 1854, + 1855, 1856, 2377, 569, 570, 1397, 1398, 2378, 2015, 2654, + 2611, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 806, 2015, 958, 3201, 2630, 2525, 2526, 2527, -1066, 2528, + 2529, 2530, 2531, 2532, 2533, 1932, 1485, -1066, 568, 1933, + 2534, 568, 2433, 607, 569, 570, 1083, 569, 1486, 635, + 2769, 2579, 782, 2141, 783, 2378, 2428, 2589, 3612, 1934, + 2580, 3613, 1596, 1933, 1217, 1927, 845, 1962, 2134, 2015, + 2015, 1963, 1290, 2045, 2157, 1084, 2194, 2237, 1963, 33, + 2195, 2238, 2429, 1085, 2733, 1038, 2334, 1595, -1054, 1086, + 2335, 3207, 3047, 816, 3406, 2135, 1087, 2430, 2548, 2748, + 2550, 2551, 2143, 1088, 2931, 1892, 820, 2431, 2889, 830, + 1892, 1089, 3155, 1892, 3061, 3062, 839, 2203, 3065, 1090, + 3066, 2922, 2923, 1881, 1882, 2364, 2734, 1439, 1596, 2365, + 2432, 1609, 1440, 958, 2016, 2465, 2525, 2526, 2527, 1933, + 2528, 2529, 2530, 2531, 2532, 2533, -1066, 869, 2476, 2494, + 2735, 2534, 2477, 1929, 2860, 2530, 2531, 2532, 2533, 2504, + 1596, 568, 2507, 1929, 2534, 1355, 1929, 1091, 2511, 2736, + 2151, 2152, 1929, 2512, 3389, -1120, -1120, 1929, 710, 479, + 3437, 849, 710, 704, 479, 2737, 573, 865, 479, 2538, + 573, 573, 1229, 1929, 479, 2041, 1126, 710, 2044, 2738, + 479, 785, 1595, 786, 1595, 710, 479, 2952, 878, 2433, + 1894, 479, 1038, 2528, 2529, 2530, 2531, 2532, 2533, 2227, + 880, 3010, 2554, 1372, 2534, 48, 1929, 885, 710, 479, + 886, 1595, 2205, 2206, 479, 479, 479, 479, 2213, 3200, + 2557, 479, 479, 1127, 2558, 710, 479, 2397, 2398, 479, + 2523, 772, 3322, 2348, 2234, 2234, 888, 2609, 1442, 573, + 710, 2610, 710, 479, 2161, 573, 2928, 2015, 2164, 2762, + 2764, 2765, 702, 479, 2797, 479, 2993, 2994, 1443, 1444, + 710, 2739, 887, 2176, 479, 479, 479, 710, 479, 2740, + 2593, 2188, 2594, 1229, 710, 479, 479, 889, 2016, 2016, + 890, 710, 2835, 479, 479, 573, 2616, 3368, 573, 573, + 2617, 2595, 894, 2596, 2202, 2524, 702, 1128, 659, 1045, + 891, 1047, 2741, 702, 702, 702, 702, 702, 702, 1447, + 895, 2223, 3208, 2670, 2370, 2699, 2805, 2671, 1007, 2700, + 2806, 2816, 2852, 1448, 2855, 2817, 2240, 1355, 2264, 153, + 2829, 2520, 2521, 2468, 2830, 1009, 2536, 573, 1013, 877, + 2234, 2523, 1129, 2385, 1130, 2420, 2280, 2893, 582, 1014, + 2929, 1929, 1170, 2284, 2930, 1749, 1015, 2936, 1023, 893, + 2297, 2937, -1888, 3074, 3075, 990, 1027, 2301, 999, 1001, + 1003, 1028, 2382, 1035, 3319, 2569, 2570, 15, 2948, 2396, + 1038, 2971, 1929, 2972, 1729, 1929, 725, 1929, 2995, 3114, + 1132, 1036, 1933, 3115, 2425, 1892, 3164, 3206, 2425, 2438, + 2610, 1963, 1039, 3232, 3233, 1898, 2524, 1933, 1933, 3329, + 1894, 2015, 2015, 1290, 1904, 702, 2234, 702, 2234, 2625, + 2626, 1046, 1912, 1913, 3393, 1134, 1596, 1361, 1362, 3334, + 3336, 1596, 1002, 2806, 2806, 3349, 2631, 2632, 1060, 3350, + 1925, 1333, 1787, 3351, 1064, 479, 2997, 1929, 23, 2623, + 3357, 2633, 2634, 710, 1963, 1229, 1078, 958, 1136, 1355, + 2525, 2526, 2527, 1095, 2528, 2529, 2530, 2531, 2532, 2533, + 3404, 2523, 659, 2267, 3405, 2534, 3431, 479, 3438, 3441, + 3432, 710, 3439, 1290, 3443, 1452, 2409, 3447, 2806, 1117, + 1699, 1963, 1456, 1457, 1458, 1459, 1460, 1461, 3492, 1119, + 1154, 1828, 1477, 1462, 1079, 3496, 28, 3507, 1158, 3432, + 3508, 1290, 1229, 1166, 1963, 1171, 2016, 2311, 1173, 1428, + 1191, -1558, 2622, 3144, 2320, 2321, 2322, 2323, 2324, 2325, + 1175, 2598, 2599, 2060, 1080, 1178, 2524, 1183, 1185, 2473, + 2016, 2016, 1988, 1989, 3509, 3470, 1192, 3472, 2558, 1195, + 2001, 1899, 3319, 2592, 2004, 2005, 2565, 3205, 3510, 1233, + 3519, 1069, 1929, 1235, 1963, 1886, 1239, 2473, 958, 2026, + 1229, 2027, -1888, -1888, 1243, 2528, 2529, 2530, 2531, 2532, + 2533, 3521, -152, 37, 727, 1963, 2534, 1229, 1245, 3522, + 1081, 1001, 2049, 1963, 2050, 1247, 2528, 2529, 2530, 2531, + 2532, 2533, 1258, 1264, 3588, 3617, 1229, 2534, 3589, 3589, + 1276, 1278, 41, 1283, 1284, 1285, 1287, 1286, 1595, 1289, + 1082, 1290, 1295, 1300, 3191, 1298, 1002, 1299, 1301, 1229, + 1303, 1308, 1309, 1310, 1315, 1609, 2449, 2684, 2451, 44, + 1330, 1357, 1363, 2623, 1371, 859, 46, 1359, 2410, 2015, + 1365, 1439, 1366, 2691, -1220, -1227, 1440, 2694, 47, 1379, + 1382, 1596, 1596, 1596, 1383, 1384, 710, 479, 479, 3319, + 1388, 48, 1390, 2015, 2015, 1393, 2623, 3266, 2016, 1229, + 1466, 1333, 1394, -1217, 714, -1218, 1395, 715, 716, 717, + 479, 718, 719, 720, 721, 722, 723, 2409, 958, 48, + 1477, 2525, 2526, 2527, -1221, 2528, 2529, 2530, 2531, 2532, + 2533, 1431, 1396, 1401, -1219, 1079, 2534, 1403, 1404, 1405, + 1406, 1436, 479, 479, 479, 479, 1407, 2124, 1414, 2088, + 1415, 1894, 1473, 1481, 1417, 1894, 1418, 1419, 1420, 1421, + 1422, 1423, 1495, 1508, 1615, 1080, 1049, 710, 1641, 479, + 1001, 33, 2637, 1490, 1596, 2411, 1650, 1001, 1001, 1651, + 1653, 1086, 1674, 1654, 1655, 479, 1669, 1676, 1087, 479, + 1677, 1678, 1679, 1700, 708, 1121, 1701, 1702, 1441, 1706, + 1716, 1717, 1442, 1089, 1718, 573, 3228, 1719, 1725, 1726, + 1730, 1090, 1732, 3347, 1727, 1734, 1735, 1737, 1744, 1745, + 1751, 1081, 1443, 1444, 1752, 1140, 1788, 1800, 479, 1759, + 1760, 2015, 710, 479, 1766, 1767, 2522, 1445, 1773, 1768, + 1775, 1802, 2234, 2234, 1803, 3261, 1810, 1385, 1375, 1391, + 1812, 1082, 1813, 2683, 1826, 495, 2523, 1832, 1142, 1091, + 1852, 2902, 1869, 2412, 2907, 2908, 2909, 2910, 2911, 2912, + 2913, 2914, 2915, 1447, 2917, 1836, 1877, 1229, 1875, 2410, + 153, 1878, 1880, 2877, 1884, 1895, 1907, 1448, 3538, 1101, + 1909, 1908, 2523, 1923, 2823, 1102, 1910, 1924, 3392, 153, + 641, 1952, 1945, 641, 1960, 2888, 1886, 1973, 1754, 2024, + 1886, 479, 479, 2843, 1948, 2037, 1983, 573, 2715, 1982, + 2042, 2524, 2954, 2955, 2048, 573, 1462, 573, 2047, 479, + 2025, 2054, 3361, 2105, 1103, 2059, 1595, 2076, 1002, 2078, + 2114, 2122, 2119, 2118, 2123, 2129, 664, 2144, 2425, 2145, + 2150, 2845, 2158, 2156, 2160, 2159, 153, 2524, 2167, 1450, + 2171, 2136, 2190, 2169, 2858, 1596, 2172, 3229, 2173, 2175, + 2884, 2192, 3446, 2229, 479, 2236, 2178, 2185, 2300, 2239, + 2294, 2295, 33, 2296, 1104, 2304, 1085, 479, 710, 2305, + 2308, 1105, 1086, 2309, 1106, 479, 2310, 2312, 710, 1087, + 2347, 2313, 2623, 3463, 2314, 1951, 1121, 3468, 3469, 2328, + 2315, 1848, 3285, 2316, 1089, 2326, 2333, 479, 2337, 2340, + 710, 696, 1090, 2341, 659, 2342, 696, 2343, 641, 2344, + 1001, 2345, 2346, 641, 2362, 641, 2366, 2371, 2379, 2400, + 3467, 641, 3464, 1107, 2962, 2963, 2964, 2965, 2447, 1452, + 2401, 2383, 1453, 1454, 1455, 2403, 1456, 1457, 1458, 1459, + 1460, 1461, 2455, 2456, 3449, 2417, 2458, 1462, 2418, 2419, + 1091, 1428, 2462, 2440, 2412, 2839, 2426, 2445, 2446, 2454, + 1596, 2460, 1596, 958, 2879, 2457, 2525, 2526, 2527, 2459, + 2528, 2529, 2530, 2531, 2532, 2533, 2474, 2464, 1108, 2339, + 2467, 2534, 2469, 3029, 3030, 2193, 2891, 1974, 2490, 1596, + 1699, 2200, 2486, 871, 2492, 2505, 2506, 2509, 2508, 958, + 3099, 2493, 2525, 2526, 2527, 2510, 2528, 2529, 2530, 2531, + 2532, 2533, 2513, 2514, 1109, 2977, 2581, 2534, 1929, 2573, + 2516, 2519, 2537, 2544, 2543, 1609, 2545, 2546, 2553, 162, + 2566, 2567, 2588, 2568, 2591, 2607, 2000, 2606, 2636, 2601, + 2640, 3027, 2643, 1110, 2647, 2648, 2652, 1111, 2653, 3514, + 2644, 1333, 1333, 1894, 2685, 2686, 710, 2693, 1894, 3456, + 2695, 1894, 3420, 2719, 3457, 2703, 2704, 2705, 2706, 2707, + 2708, 1112, 2709, 2710, 2711, 2712, 2713, 2725, 2726, 2727, + 2728, 2729, 2730, 2752, 2755, 163, 2770, 2771, 1101, 2756, + 1819, 2767, 2768, 2792, 1102, 479, 479, 2794, 3583, 2798, + 2800, 2810, 2812, 2815, 2814, 164, 3379, 1229, 2820, 2821, + 2825, 479, 2827, 2842, 2844, 710, 479, 710, 479, 479, + 479, 479, 2846, 2848, 2849, 2856, 165, 2859, 2866, 2861, + 2487, 2868, 2883, 1103, 2886, 2117, 1469, 2887, 1372, 2896, + 2540, 2539, 2996, 2938, 1432, 2950, 2969, 2989, 2534, 2983, + 2925, 2998, 3000, 166, 3007, 3011, 2926, 2927, 167, 2951, + 3035, 2959, 3012, 168, 3202, 3203, 2981, 2986, 3022, 3023, + 3024, 3050, 3025, 1699, 3026, 2612, 3048, 573, 169, 3076, + 3051, 3077, 3109, 1104, 479, 479, 479, 3097, 479, 2839, + 1105, 3078, 3104, 1106, 3107, 3112, 725, 3123, 3128, 3111, + 2646, 3040, 3129, 3042, 3131, 3141, 3158, 3137, 1886, 3142, + 3151, 3161, 3174, 1886, 2382, 3167, 1886, 3173, 3175, 3178, + 2205, 3183, 641, 2205, 3187, 3127, 3180, 641, 3188, 696, + 3192, 3193, 3194, 3198, 3218, 2234, 3219, 3241, 2664, 2665, + 3236, 3235, 1107, 3257, 3247, 3237, 3250, 3518, 3258, 3262, + 3265, 3271, 2425, 3274, 479, 3068, 3277, 3278, 1229, 3286, + 170, 2409, 3294, 641, 3296, 2382, 3298, 3163, 696, 479, + 3290, 3299, 3303, 3314, 2234, 696, 2234, 3312, 3315, 1079, + 3327, 3341, 3331, 3345, 3353, 3354, 478, 171, 3355, 710, + 3363, 3346, 522, 523, 3348, 3365, 3356, 1108, 556, 3371, + 572, 3369, 3374, 3387, 3381, 3382, 591, 3388, 594, 1080, + 3394, 172, 1933, 3401, 3103, 3403, 3412, 173, 2692, 3424, + 3422, 3423, 641, 174, 3426, 175, 657, 3455, 641, 1003, + 3425, 3253, 3254, 1109, 3256, 3459, 665, 3478, 3482, 641, + 3486, 3488, 1894, 3494, 3495, 3511, 2143, 3231, 3498, 3513, + 3512, 176, 177, 3465, 1316, 3523, 178, 3524, 3527, 641, + 3533, 3238, 1145, 1894, 179, 1081, 1111, 3529, 3534, 180, + 3543, 2975, 2659, 3552, 3556, 2473, 3584, 3525, 641, 181, + 3579, 3585, 3526, 3225, 641, 3601, 2368, 3603, 3614, 2614, + 1146, 182, 573, 1507, 727, 1082, 1596, 2662, 2232, 2757, + 2759, 641, 3344, 2680, 2766, 2682, 1040, 3536, 3008, 2732, + 3390, 3125, 3121, 2204, 3239, 3001, 2642, 2466, 3283, 710, + 479, 3553, 3582, 2410, 3530, 573, 3358, 3359, 3528, 3126, + 710, 479, 3562, 1868, 1321, 2824, 2183, 3280, 3033, 2697, + 2319, 3133, 1849, 479, 479, 702, 479, 3328, 2319, 3378, + 2349, 2623, 729, 2802, 731, 725, 733, 3328, 735, 3616, + 3604, 2795, 3273, 3272, 2753, 3563, 1831, 3380, 3520, 153, + 2862, 3383, 1333, 590, 2865, 3176, 2867, 2718, 2869, 2870, + 708, 3429, 876, 3291, 3135, 1346, 3500, 2875, 696, 3138, + 1699, 2200, 3505, 2200, 3595, 696, 2198, 3615, 2372, 3407, + 1229, 2131, 557, 3118, 1616, 3242, 2885, 1323, 2618, 1016, + 1327, 1034, 2621, 2635, 1613, 2155, 3251, 2890, 1886, 479, + 1894, 2402, 2990, 3230, 2154, 1642, 33, 2147, 3333, 2128, + 1085, 1229, 2422, 1229, 2600, 2854, 1086, 479, 1024, 2619, + 641, 641, 641, 1087, 812, 3320, 696, 3116, 2338, 2807, + 1121, 2942, 3448, 2932, 3544, 3551, 3545, 2624, 1089, 479, + 2586, 2501, 2584, 2659, 3445, 2479, 1090, 2104, 0, 3163, + 1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 479, 3127, 0, 0, 0, 710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1216, 1220, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1427, 0, 0, 1216, - 0, 0, 0, 0, 1428, 0, 0, 0, 0, 1217, - 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, 1221, 0, - 0, 0, 1438, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1216, 0, 0, 0, 3008, 0, 0, + 0, 0, 0, 0, 0, 1229, 0, 0, 641, 0, + 0, 0, 2863, 1101, 1091, 0, 0, 3490, 2412, 1102, + 0, 0, 0, 0, 0, 0, 0, 3442, 2200, 0, + 641, 0, 0, 0, 0, 0, 0, 1894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1214, 0, 0, 0, 0, 0, 1217, 0, + 0, 0, 0, 727, 0, 0, 0, 0, 1103, 0, + 0, 2200, 0, 0, 0, 0, 3255, 0, 0, 0, + 2897, 0, 2473, 1333, 0, 0, 0, 1229, 0, 0, + 0, 0, 0, 0, 3474, 0, 0, 0, 0, 0, + 0, 1229, 0, 0, 1596, 0, 0, 0, 2234, 0, + 2205, 2916, 0, 0, 0, 0, 2200, 0, 1104, 0, + 0, 0, 0, 0, 2924, 1105, 0, 0, 1106, 0, + 0, 0, 702, 3320, 3554, 0, 0, 702, 702, 0, + 0, 573, 0, 0, 0, 0, 0, 0, 0, 479, + 1229, 0, 0, 0, 573, 0, 0, 0, 1355, 0, + 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, + 0, 0, 0, 0, 1001, 0, 0, 1107, 0, 0, + 776, 3454, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1805, 0, 794, 795, 0, 0, 0, 797, + 0, 0, 702, 702, 702, 702, 479, 0, 1229, 0, + 810, 0, 0, 858, 859, 0, 0, 0, 3611, 815, + 711, 0, 0, 0, 3073, 730, 749, 0, 0, 0, + 0, 834, 1108, 739, 836, 0, 838, 0, 841, 1229, + 0, 3083, 0, 0, 0, 0, 0, 0, 0, 0, + 3320, 702, 1229, 0, 0, 0, 641, 0, 750, 0, + 0, -1805, 0, 0, 0, 0, 0, 0, 1109, 0, + 0, 751, 0, 0, 0, 0, 0, 0, 752, 0, + 0, 0, 753, 0, 0, 881, 1229, 882, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1162, 0, 0, + 3168, 1111, 754, 641, 479, 0, 702, 3171, 3172, 0, + -1805, 0, 2690, 0, 529, 702, 3609, 0, 0, 0, + -1805, 0, 641, 755, -1805, 1163, 530, 0, 0, -1805, + 3454, 0, 0, -1805, 2702, 0, -1805, 0, -1805, 0, + 0, 702, 0, 657, 0, 0, 531, 153, 0, 0, + 0, 0, 3571, 3428, 0, 756, 0, 0, 3434, 3434, + 0, 0, 0, 3608, -1805, 2319, 0, 0, 2319, 2319, + 532, 3108, 2319, 0, 0, 757, 0, 2200, 0, 0, + 0, 0, 2319, 153, -1805, -1807, 0, 1191, 0, 2750, + 533, 0, 0, 0, 0, 0, 0, 0, 0, 758, + 0, 0, 0, 0, 0, 0, 0, 3571, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2750, 0, 3471, 1893, 3473, 696, -1805, 1165, + 0, 0, 3571, 0, 0, 2804, 696, -1805, 535, 0, + 0, 1176, 0, 536, 0, 0, 0, 0, 537, 641, + 1182, 0, 0, 0, -1807, 0, 1184, 759, 641, 573, + 573, 0, 0, 538, 0, 2834, 1001, 1231, 0, 0, + 0, 0, 3501, 0, 573, 0, 0, 0, 0, 0, + -1805, 0, 3244, 3245, 171, 0, 696, 3248, 3249, 641, + 641, 0, 0, 0, 0, 0, 0, 1270, 0, 1229, + 0, 641, 0, -1807, 0, 0, 0, 0, 760, 0, + 0, 0, 761, -1807, 762, 0, 0, -1807, 0, 0, + 763, 0, -1807, 0, 588, 0, -1807, 3532, 1355, -1807, + 0, -1807, 0, 0, 746, 1699, 3434, 0, 0, 773, + 0, 0, 0, 0, 0, 539, -1805, 0, 764, 765, + 573, 1329, 0, 766, 0, 540, 0, -1807, 0, 0, + 0, 767, 3555, 0, 0, 1354, 768, -1805, 0, -1805, + -1805, 0, 171, 0, 0, 0, 0, -1807, 0, 0, + 0, 0, 0, 0, 3240, 0, 0, 0, 769, 0, + 0, 0, 3246, 0, 0, 0, 541, 0, 0, 0, + 542, 1101, 543, 3337, 0, 3338, 3339, 1102, 544, -1805, + 545, 0, -1805, 3342, -1805, -1805, 0, 641, 0, 0, + 0, -1807, 0, 2943, 0, 0, 641, 0, 0, 0, + -1807, 1126, 0, 0, 873, 0, 546, 547, 0, 0, + 0, 548, 0, 0, 0, 1229, 1103, 0, 0, 549, + 0, 883, 0, 0, 550, 0, 1229, 0, 0, 1437, + 0, 0, 0, 0, 551, 2979, 0, 1439, 0, 0, + 0, 994, 1440, -1807, 0, 0, 552, 0, 1127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1217, 1428, 0, 0, 1429, 1430, 1431, - 3051, 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, 0, - 0, 1888, 1438, 0, 0, 0, 0, 0, 0, 1219, - 1219, 1217, 1219, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1219, 1217, 1219, 1216, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1217, - 0, 0, 0, 0, 0, 0, 1214, 3081, 0, 1414, - 1217, 0, 2298, 0, 0, 3083, 0, 1416, 0, 0, - 0, 0, 1417, 0, 0, 0, 0, 0, 1219, 0, + 1018, 0, 0, 0, 0, 0, 1104, 0, 0, 0, + 0, 0, 0, 1105, 0, 0, 1106, 0, 0, 0, + 573, 0, 1229, 1041, 0, 0, 0, 588, 0, 0, + 1229, 0, 0, 0, 657, 0, 0, 0, 2750, 0, + 0, 0, 0, 0, 0, 0, 0, 1437, 0, -1807, + 2807, 2137, 3028, 0, 0, 1439, 0, 0, 0, 3031, + 1440, 3032, 1128, 0, 0, 1107, 0, 0, 0, 641, + -1807, 0, -1807, -1807, 1355, 0, 0, 1673, 0, 0, + 0, 0, 0, 0, 0, 2319, 0, 0, 0, 3444, + 0, 2319, 2319, 2319, 2319, 2319, 2319, 0, 0, 0, + 0, 0, 0, 0, 1441, 0, 0, 1129, 1442, 1130, + 0, 0, -1807, 0, 0, -1807, 0, -1807, -1807, 0, + 1131, 0, 0, 0, 0, 0, 0, 0, 1443, 1444, + 2138, 0, 0, 0, 0, 0, 0, 0, 3084, 3086, + 3088, 3090, 0, 1445, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1132, 1109, 3325, 0, 0, + 0, 0, 1260, 1262, 1263, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 641, 1446, 0, 1229, 1447, + 0, 0, 1441, 0, 0, 1133, 1442, 0, 0, 1111, + 1134, 3134, 0, 1448, 0, 0, 1449, 0, 0, 0, + 0, 0, 1229, 0, 0, 0, 1443, 1444, 0, 0, + 0, 0, 0, 1135, 0, 0, 0, 0, 0, 0, + 0, 1445, 1228, 1136, 699, 0, 0, 0, 0, 699, + 994, 0, 0, 1355, 1829, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1851, 0, 0, 0, + 1437, 0, 994, 0, 1446, 0, 2200, 1447, 1439, 0, + 0, 0, 0, 1440, 1355, 1450, 0, 0, 1355, 1355, + 0, 1448, 0, 0, 1449, 0, 0, 2241, 0, 0, + 0, 0, 0, 0, 0, 1902, 0, 0, 0, 1906, + 0, 0, 0, 0, 0, 641, 0, 0, 1915, 0, + 1917, 0, 1918, 0, 0, 0, 0, 1919, 0, 0, + 0, 0, 0, 3569, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1228, 0, 0, 0, 0, 0, 641, + 2242, 0, 0, 0, 0, 0, 641, 2200, 0, 2243, + 2244, 2245, 0, 1450, 1893, 0, 0, 3227, 0, 0, + 0, 0, 0, 0, 0, 1452, 0, 0, 1453, 1454, + 1455, 1229, 1456, 1457, 1458, 1459, 1460, 1461, 3569, 0, + 2120, 0, 0, 1462, 0, 0, 0, 2121, 1509, 0, + 0, 0, 0, 2246, 0, 1441, 0, 0, 0, 1442, + 0, 2139, 1229, 3569, 0, 0, 1229, 1229, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, + 1444, 0, 0, 0, 0, 0, 2319, 2319, 0, 0, + 0, 0, 0, 0, 1445, 2247, 0, 3263, 3264, 0, + 2248, 3267, 3268, 1452, 0, 0, 1453, 1454, 1455, 0, + 1456, 1457, 1458, 1459, 1460, 1461, 0, 0, 0, 0, + 0, 1462, 1489, 0, 3325, 0, 0, 1446, 0, 0, + 1447, 0, 0, 0, 0, 0, 0, 0, 1715, 2249, + 0, 0, 0, 0, 1448, 0, 0, 1449, 0, 0, + 0, 3297, 0, 0, 0, 0, 2250, 2251, 2252, 2253, + 2254, 0, 2255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1228, 0, 3321, 0, 0, + 0, 0, 0, 0, 0, 1765, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2256, 0, 0, 0, 0, + 0, 0, 0, 0, 1785, 0, 0, 0, 0, 0, + 1228, 0, 0, 0, 0, 0, 1450, 0, 0, 0, + 0, 0, 699, 0, 0, 0, 0, 0, 641, 0, + 0, 2257, 1228, 0, 1893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3096, 0, 1217, 0, 0, 0, 0, 0, 1217, - 0, 0, 0, 0, 0, 1220, 1220, 0, 1220, 0, - 0, 2013, 0, 0, 0, 1574, 2020, 0, 0, 0, - 0, 1220, 0, 1220, 0, 0, 0, 1219, 0, 0, - 0, 0, 1216, 0, 0, 0, 0, 1221, 1221, 0, - 1221, 0, 0, 1217, 0, 0, 0, 0, 0, 0, - 0, 0, 1219, 1221, 3138, 1221, 0, 0, 0, 0, - 0, 0, 0, 1414, 1220, 0, 0, 0, 0, 0, - 0, 1416, 0, 0, 1217, 0, 1417, 0, 0, 0, - 1219, 0, 1880, 0, 0, 0, 0, 1418, 1217, 0, - 0, 1419, 1214, 0, 0, 1219, 1221, 0, 1223, 0, - 0, 0, 0, 1214, 0, 0, 0, 0, 1219, 0, - 0, 1420, 1421, 1220, 0, 0, 0, 0, 0, 1219, - 1223, 0, 1217, 0, 1422, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1220, 0, - 0, 0, 0, 0, 1214, 1221, 0, 0, 0, 0, - 0, 0, 1219, 0, 0, 0, 0, 1423, 1219, 0, - 1424, 0, 0, 0, 0, 0, 1220, 0, 1216, 0, - 1221, 0, 0, 0, 1425, 0, 1426, 0, 0, 1216, - 0, 1220, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1418, 0, 0, 1220, 1419, 0, 0, 1221, 0, - 0, 0, 1219, 0, 0, 1220, 0, 0, 0, 0, - 0, 0, 0, 1221, 0, 1420, 1421, 1217, 0, 0, - 1216, 0, 0, 0, 0, 0, 1221, 1440, 1422, 0, - 0, 0, 0, 1219, 0, 0, 0, 1221, 1220, 1427, - 0, 0, 0, 0, 1220, 0, 0, 1219, 0, 0, - 0, 1223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1423, 0, 0, 1424, 0, 0, 0, 0, 0, - 1221, 0, 0, 0, 0, 1440, 1221, 0, 1425, 0, - 1426, 1219, 0, 0, 0, 0, 1214, 0, 1220, 0, - 0, 2312, 0, 0, 0, 0, 0, 0, 0, 0, - 1414, 0, 0, 2343, 0, 0, 0, 0, 1416, 0, - 1214, 1217, 0, 1417, 0, 0, 0, 0, 0, 1220, - 1221, 0, 0, 0, 0, 0, 0, 1428, 0, 0, - 1429, 1430, 1431, 1220, 1432, 1433, 1434, 1435, 1436, 1437, - 0, 0, 0, 1427, 0, 1438, 0, 0, 0, 0, - 0, 1221, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1216, 0, 0, 1221, 0, 1220, 0, 0, - 0, 0, 0, 0, 0, 0, 1219, 0, 0, 0, - 0, 0, 0, 0, 1414, 0, 1216, 1440, 0, 0, - 0, 0, 1416, 0, 0, 0, 0, 1417, 0, 1221, + 0, 0, 0, 0, 0, 0, 0, 0, 1437, 0, + 0, 699, 0, 0, 0, 0, 1439, 2258, 699, 2259, + 0, 1440, 0, 0, 641, 0, 0, 2750, 0, 0, + 1437, 0, 0, 1438, 0, 0, 0, 0, 1439, 0, + 1228, 0, 2260, 1440, 2319, 0, 0, 0, 3391, 2261, + 0, 0, 2262, 0, 0, 0, 1452, 1228, 0, 1453, + 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 2162, 0, 0, 0, 1462, 2166, 1228, 2515, 1439, 2170, + 0, 1916, 0, 1440, 0, 2174, 0, 0, 0, 0, + 1920, 2179, 0, 0, 0, 0, 0, 2189, 3427, 1228, + 699, 0, 2191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 994, 994, 0, 0, 2207, 2208, 2211, 2212, 0, + 0, 0, 2218, 2221, 699, 0, 0, 2224, 0, 0, + 2228, 0, 0, 1441, 0, 0, 0, 1442, 0, 1228, + 0, 0, 0, 0, 2265, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2268, 1441, 2270, 1443, 1444, 1442, + 0, 0, 0, 0, 0, 2281, 2282, 2283, 0, 2285, + 0, 0, 1445, 0, 0, 0, 2298, 2299, 0, 1443, + 1444, 0, 0, 0, 2302, 2303, 0, 0, 0, 0, + 0, 0, 0, 0, 1445, 1441, 0, 0, 0, 1442, + 0, 0, 0, 0, 0, 1446, 0, 0, 1447, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, + 1444, 699, 1448, 0, 0, 1449, 0, 1446, 699, 0, + 1447, 0, 0, 0, 1445, 0, 0, 0, 0, 2103, + 0, 0, 0, 0, 1448, 0, 641, 1449, 2113, 1230, + 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1446, 0, 0, + 1447, 0, 641, 0, 0, 0, 0, 0, 0, 699, + 0, 0, 0, 0, 1448, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1450, 1893, 0, 0, 0, 1893, + 0, 0, 0, 0, 0, 0, 1437, 0, 0, 0, + 3570, 0, 0, 0, 1439, 0, 1450, 1228, 0, 1440, + 0, 699, 0, 641, 0, 0, 641, 0, 0, 0, + 0, 0, 0, 641, 0, 0, 0, 0, 696, 0, + 0, 0, 1439, 0, 0, 0, 0, 1440, 0, 0, + 1230, 0, 0, 0, 0, 0, 1450, 0, 0, 641, + 0, 0, 0, 0, 0, 3570, 0, 0, 0, 0, + 0, 0, 699, 0, 0, 0, 0, 0, 2488, 0, + 0, 2132, 0, 0, 1452, 0, 0, 1453, 1454, 1455, + 3570, 1456, 1457, 1458, 1459, 1460, 1461, 0, 0, 0, + 699, 1451, 1462, 0, 0, 2561, 1452, 0, 0, 1453, + 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 0, 2539, 0, 0, 1462, 0, 2540, 0, 0, 0, + 0, 0, 699, 699, 2571, 699, 0, 0, 0, 0, + 0, 1441, 0, 0, 0, 1442, 1452, 0, 0, 1453, + 1454, 1455, 699, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 0, 0, 0, 0, 1462, 1443, 1444, 641, 641, -1888, + 0, 0, 0, 1442, 0, 0, 0, 0, 0, 0, + 1445, 0, 0, 0, 0, 0, 0, 2222, 0, 0, + 0, 699, 1594, 1443, 1444, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1888, 0, + 0, 0, 0, 1446, 0, 0, 1447, 0, 699, 0, + 0, 0, 699, 699, 0, 0, 0, 0, 0, 0, + 1448, 0, 1230, 1449, 0, 0, 1594, 0, 0, 0, + 0, 0, 0, 0, 1447, 1228, 0, 0, 0, 0, + 1228, 1228, 0, 0, 0, 0, 0, 0, 1448, 0, + 0, 0, 0, 0, 0, 0, 0, 1230, 2638, 2639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1418, 0, - 0, 1428, 1419, 0, 1429, 1430, 1431, 0, 1432, 1433, - 1434, 1435, 1436, 1437, 0, 0, 0, 1217, 0, 1438, - 0, 0, 1420, 1421, 0, 0, 0, 1214, 1217, 0, - 1574, 2020, 1220, 2020, 0, 1422, 0, 0, 0, 0, - 1219, 0, 0, 0, 0, 0, 1223, 0, 1223, 1214, - 0, 0, 0, 1214, 1214, 0, 0, 1414, 0, 0, - 0, 0, 0, 0, 1221, 1416, 0, 0, 1423, 1217, - 1417, 1424, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1418, 0, 0, 1425, 1419, 1426, 0, 1223, + 0, 0, 0, 0, 1437, 0, 0, 0, 0, 1230, + 0, 2650, 1439, 0, 0, 0, 0, 1440, 0, 0, + 0, 0, 1450, 0, 0, 0, 1437, 2367, 0, 0, + 0, 0, 0, 0, 1439, 0, 0, 0, 0, 1440, + 0, 0, 0, 2666, 2667, 2668, 2669, 0, 0, 0, + -1888, 0, 0, 0, 0, 0, 0, 0, 641, 0, + 0, 2386, 0, 0, 0, 0, 0, 1230, 2404, 0, + 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, + 0, 0, 0, 0, 1230, 0, 0, 1228, 641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1216, 0, 0, 1420, 1421, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1422, - 0, 0, 1214, 0, 0, 1216, 1220, 0, 0, 1216, - 1216, 0, 0, 0, 0, 0, 0, 0, 1223, 0, + 0, 0, 0, 1230, 0, 0, 0, 0, 0, 0, + 0, 0, 1452, 0, 0, 1453, 1454, 1455, 0, 1456, + 1457, 1458, 1459, 1460, 1461, 0, 1230, 0, 0, 2714, + 1462, 1594, 0, 0, 2716, 0, 0, 1893, 0, 1441, + 1452, 0, 1893, 1442, 0, 1893, 0, 1456, 1457, 1458, + 1459, 1460, 1461, 1228, 0, 0, 0, 0, 1462, 0, + 0, 1441, 0, 1443, 1444, 1442, 0, 0, 699, 0, + 699, 0, 0, 0, 0, 0, 1230, 0, 1445, 699, + 0, 0, 0, 0, 0, 1443, 1444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1427, 0, 1423, 0, 0, 1424, 0, 0, 1221, 1414, - 0, 0, 2352, 2020, 0, 0, 0, 1416, 0, 1425, - 0, 2348, 1417, 0, 0, 0, 1219, 0, 0, 1440, - 0, 0, 0, 0, 0, 1418, 0, 1219, 0, 1419, - 0, 2020, 0, 0, 0, 0, 0, 0, 1216, 0, - 0, 0, 0, 0, 0, 0, 1223, 0, 0, 1420, - 1421, 1217, 0, 0, 0, 0, 0, 0, 0, 1223, - 0, 0, 1422, 0, 0, 0, 0, 0, 1219, 0, - 2020, 1440, 0, 0, 1427, 1217, 0, 0, 1428, 0, - 0, 1429, 1430, 1431, 0, 1432, 1433, 1434, 1435, 1436, - 1437, 0, 0, 0, 1440, 1423, 1438, 0, 1424, 1859, - 0, 0, 1220, 1223, 0, 0, 0, 0, 0, 1223, - 0, 0, 1425, 1220, 1426, 0, 0, 0, 0, 1440, - 1440, 0, 0, 1440, 0, 0, 0, 1418, 0, 0, - 0, 1419, 0, 0, 1221, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1221, 0, 0, 0, 0, - 0, 1420, 1421, 1223, 1220, 0, 0, 0, 0, 0, - 1440, 0, 1428, 0, 1422, 1429, 1430, 1431, 0, 1432, - 1433, 1434, 1435, 1436, 1437, 0, 0, 1427, 0, 0, - 1438, 0, 0, 0, 1223, 0, 1221, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1423, 1223, 0, - 1424, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1219, 0, 0, 0, 1425, 0, 1426, 0, 0, 0, - 0, 0, 1217, 0, 1440, 0, 0, 0, 0, 0, - 0, 1440, 1223, 1440, 1219, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1217, 0, 0, 0, 1217, 1217, + 1445, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1446, 2808, 2809, 1447, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1448, 699, + 2650, 1449, 1437, 1446, 0, 0, 1447, 0, 1228, 0, + 1439, 0, 0, 0, 0, 1440, 0, 0, 0, 2933, + 1448, 641, 641, 641, 641, 0, 0, 0, 0, 0, + 0, 0, 0, 699, 699, 0, 0, 0, 0, 0, + 0, 699, 0, 0, 699, 2864, 0, 699, 0, 0, + 0, 0, 0, 0, 0, 699, 699, 0, 2873, 0, + 2597, 0, 0, 699, 0, 0, 699, 699, 699, 699, + 1450, 0, 1437, 0, 0, 2503, 699, 699, 0, 699, + 1439, 699, 0, 2934, 699, 1440, 0, 0, 0, 0, + 0, 0, 1450, 0, 0, 0, 0, 0, 0, 699, + 1594, 0, 0, 699, 0, 0, 994, 699, 0, 0, + 0, 699, 0, 0, 0, 699, 699, 699, 699, 699, + 699, 699, 699, 699, 1230, 0, 699, 0, 0, 0, + 0, 699, 1437, 0, 699, 0, 0, 1441, 0, 0, + 1439, 1442, 0, 0, 0, 1440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1428, 0, 0, 1429, 1430, - 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, 1427, - 0, 1414, 0, 1438, 0, 0, 0, 0, 0, 1416, - 0, 0, 0, 0, 1417, 0, 1220, 0, 0, 0, - 0, 0, 0, 1414, 0, 0, 0, 0, 0, 0, - 0, 1416, 0, 0, 0, 0, 1417, 1217, 0, 0, - 1220, 0, 0, 0, 0, 0, 0, 1223, 1221, 0, - 0, 0, 1414, 0, 0, 0, 0, 0, 0, 0, - 1416, 0, 0, 0, 0, 1417, 0, 0, 0, 0, - 0, 0, 1221, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1428, 0, 0, - 1429, 1430, 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, - 0, 1219, 0, 0, 0, 1438, 0, 0, 0, 0, + 1452, 1443, 1444, 1453, 1454, 1455, 0, 1456, 1457, 1458, + 1459, 1460, 1461, 0, 0, 0, 1445, 0, 1462, 0, + 0, 0, 1452, 0, 0, 1453, 1454, 1455, 0, 1456, + 1457, 1458, 1459, 1460, 1461, 0, 696, 0, 0, 0, + 1462, 0, 0, 0, 0, 0, 0, 1441, 0, 1446, + 0, 1442, 1447, 0, 0, 0, 0, 1893, 0, 0, + 0, 0, 0, 0, 0, 0, 1448, 0, 0, 1449, + 0, 1443, 1444, 0, 0, 0, 0, 0, 0, 0, + 1228, 1228, 0, 1228, 0, 0, 1445, 0, 0, 0, + 1228, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1441, 0, 0, + 0, 1442, 0, 0, 699, 0, 0, 0, 0, 1446, + 0, 1228, 1447, 1228, 0, 0, 0, 0, 0, 0, + 0, 1443, 1444, 0, 0, 0, 1448, 0, 1450, 1449, + 0, 0, 3034, 696, 0, 0, 1445, 3041, 0, 3043, + 3044, 3045, 3046, 0, 0, 1594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1219, 0, 0, 0, 1219, 1219, 1418, - 0, 0, 0, 1419, 0, 0, 0, 0, 0, 0, - 1416, 1223, 0, 0, 0, 1417, 0, 0, 0, 0, - 0, 1418, 0, 1420, 1421, 1419, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1422, 0, 0, 0, - 0, 0, 0, 0, 0, 1420, 1421, 0, 0, 0, - 1418, 0, 0, 0, 1419, 0, 0, 1220, 1422, 0, - 0, 0, 0, 0, 0, 0, 1219, 0, 0, 1423, - 0, 0, 1424, 0, 1420, 1421, 0, 0, 0, 1220, - 0, 0, 0, 1220, 1220, 0, 1425, 1422, 1426, 1221, - 0, 1423, 0, 0, 1424, 0, 0, 2719, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1425, 0, - 1426, 1221, 0, 0, 0, 1221, 1221, 0, 0, 0, - 1423, 0, 0, 1424, 0, 0, 0, 0, 0, 0, - -1643, 0, 0, 0, 1419, 1440, 0, 1425, 0, 1426, - 0, 0, 0, 0, 0, 0, 0, 1223, 0, 0, - 0, 1427, 1220, 0, 1420, 1421, 0, 1440, 1223, 1440, - 0, 1859, 1859, 2330, 0, 0, 1859, -1643, 0, 0, - 1440, 0, 0, 1427, 0, 0, 0, 1440, 0, 0, - 0, 0, 1440, 0, 1221, 1414, 0, 1440, 2702, 0, - 0, 0, 1440, 1416, 0, 0, 0, 0, 1417, 1223, - 0, 1440, 1427, 1424, 0, 1859, 1859, 1440, 1414, 0, - 0, 0, 0, 0, 0, 0, 1416, 1425, 0, 1440, - 0, 1417, 0, 0, 0, 0, 1440, 2656, 1440, 1440, - 1440, 1440, 1440, 1440, 1440, 1440, 1440, 0, 1440, 1428, - 0, 0, 1429, 1430, 1431, 0, 1432, 1433, 1434, 1435, - 1436, 1437, 0, 0, 2493, 0, 0, 1438, 0, 0, - 0, 1428, 0, 0, 1429, 1430, 1431, 0, 1432, 1433, - 1434, 1435, 1436, 1437, 0, 0, 0, 0, 2531, 1438, - 0, 0, -1643, 0, 0, 0, 0, 0, 0, 0, - 1428, 0, 0, 1429, 1430, 1431, 0, 1432, 1433, 1434, - 1435, 1436, 1437, 0, 0, 0, 0, 0, 1438, 1440, - 0, 0, 0, 1418, 0, 0, 0, 1419, 0, 0, + 0, 0, 699, 0, 696, 0, 0, 641, 2801, 1446, + 0, 0, 1447, 0, 0, 0, 0, 0, 2813, 0, + 0, 0, 1230, 0, 0, 1228, 1448, 1230, 1230, 1449, + 0, 0, 641, 0, 2826, 0, 0, 0, 1450, 0, + 0, 0, 2517, 0, 696, 3092, 3094, 3096, 1228, 3098, + 0, 1594, 0, 0, 0, 0, 641, 0, 1452, 0, + 0, 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, + 1461, 0, 0, 0, 0, 2046, 1462, 0, 0, 0, + 0, 1228, 0, 1594, 0, 2871, 0, 0, 2872, 0, + 0, 0, 0, 0, 0, 2876, 0, 1228, 1450, 1437, + 641, 0, 2547, 0, 0, 0, 0, 1439, 0, 0, + 0, 1228, 1440, 0, 0, 0, 0, 0, 0, 0, + 0, 994, 0, 0, 0, 0, 1228, 0, 1452, 0, + 3166, 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, + 1461, 696, 699, 0, 1230, 0, 1462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1414, 0, 0, 0, 0, 1418, 1420, 1421, 1416, - 1419, 1223, 0, 0, 1417, 0, 0, 0, 0, 0, - 1422, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1420, 1421, 0, 0, 0, 1223, 0, 0, 0, 0, - 1428, 0, 0, 1422, 0, 0, 0, 1432, 1433, 1434, - 1435, 1436, 1437, 1423, 0, 0, 1424, 0, 1438, 0, + 1228, 696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1425, 0, 1426, 0, 0, 0, 1423, 0, 0, 1424, + 0, 0, 0, 0, 0, 0, 0, 0, 1452, 0, + 0, 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, + 1461, 0, 0, 0, 0, 0, 1462, 0, 0, 0, + 1230, 0, 0, 0, 0, 0, 0, 699, 1228, 0, + 0, 0, 0, 0, 0, 0, 0, 699, 0, 2966, + 2967, 0, 0, 0, 1441, 0, 0, 0, 1442, 1220, + 0, 0, 0, 0, 0, 0, 0, 0, 696, 1228, + 0, 0, 0, 0, 0, 0, 0, 0, 1443, 1444, + 0, 699, 1228, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1445, 0, 0, 0, 0, 0, 976, + 0, 3243, 0, 0, 699, 0, 0, 0, 0, 0, + 0, 0, 3252, 0, 0, 1230, 1228, 0, 1439, 0, + 0, 0, 0, 1440, 0, 0, 1446, 0, 0, 1447, + 0, 0, 0, 1031, 699, 699, 0, 0, 0, 0, + 0, 0, 0, 1448, 0, 0, 1449, 0, 0, 0, + 0, 0, 696, 0, 0, 0, 0, 0, 0, 0, + 1220, 0, 0, 0, 699, 699, 0, 0, 0, 699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1425, 0, 1426, 0, 0, 1440, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1414, 0, - 0, 0, 0, 0, 0, 0, 1416, 0, 0, 0, - 0, 1417, 0, 0, 0, 0, 0, 0, 1440, 1418, - 0, 0, 0, 1419, 0, 1427, 0, 0, 0, 0, + 0, 699, 699, 699, 699, 0, 0, 0, 0, 1594, + 0, 0, 0, 699, 1594, 0, 699, 0, 0, 699, + 3293, 0, 0, 0, 0, 0, 0, 1228, 699, 699, + 2582, 699, 0, 0, 0, 1450, 0, 0, 3308, 0, + 3080, 0, 0, 0, 699, 0, 699, 0, 0, 0, + 699, 0, 0, 0, 0, 0, 0, 0, 3105, 0, + 0, 0, 0, 0, 0, -1888, 0, 699, 0, 1442, + 3110, 0, 0, 0, 0, 0, 0, 699, 0, 699, + 699, 699, 3340, 0, 0, 0, 0, 0, 0, 1443, + 1444, 0, 0, 699, 0, 0, 0, 0, 0, 0, + 0, 699, 0, 0, -1888, 0, 0, 0, 699, 0, + 0, 0, 0, 699, 0, 0, 0, 0, 0, 0, + 699, 699, 699, 0, 0, 1452, 0, 0, 1453, 1454, + 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, 0, + 1447, 699, 0, 1462, 0, 0, 0, 0, 0, 1228, + 0, 0, 0, 0, 1448, 0, 0, 0, 0, 0, + 0, 0, 1220, 0, 0, 0, 0, 1230, 1230, 0, + 1230, 0, 0, 0, 1222, 0, 0, 1230, 0, 0, + 0, 0, 0, 0, 0, 1228, 0, 0, 0, 0, + 0, 1439, 0, 0, 0, 0, 1440, 1220, 0, 0, + 0, 1377, 0, 0, 0, 0, 0, 0, 1230, 0, + 1230, 0, 0, 0, 0, 0, 0, 0, 0, 1220, + 0, 0, 0, 0, 0, 0, -1888, 0, 0, 1400, + 0, 0, 0, 3214, 3215, 3216, 3217, 0, 0, 0, + 0, 0, 0, 0, 1594, 1594, 1594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1420, 1421, 0, 0, 0, 1427, 0, - 0, 0, 0, 0, 0, 0, 1422, 0, 0, 0, + 0, 1425, 1426, 0, 1429, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1222, 0, 1220, 0, 0, + 0, 1467, 1230, 2956, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1220, 1228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1230, 1228, 0, 0, 0, + 0, 0, 0, 1220, 0, 0, 1452, 0, -1888, 0, + 1510, 0, 1442, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 0, 0, 0, 0, 1462, 0, 1220, 1594, 1230, 0, + 0, 0, 1443, 1444, 0, 0, 0, 1622, 0, 0, + 0, 1632, 1635, 0, 1230, 0, 0, -1888, 0, 0, + 0, 0, 1228, 0, 0, 0, 0, 0, 1230, 0, + 1228, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1230, 0, 0, 1220, 0, 0, 0, + 0, 0, 1437, 1447, 0, 3531, 0, 0, 699, 0, + 1439, 0, 699, 0, 0, 1440, 0, 1448, 0, 0, + 0, 0, 699, 0, 0, 0, 0, 1230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1423, - 0, 0, 1424, 0, 1223, 0, 0, 0, 1223, 1223, - 0, 0, 0, 0, 0, 0, 1425, 0, 1426, 0, - 0, 0, 1440, 1428, 0, 0, 1429, 1430, 1431, 0, - 1432, 1433, 1434, 1435, 1436, 1437, 1418, 0, 0, 1440, - 1419, 1438, 0, 0, 0, 0, 1428, 0, 0, 1429, - 1430, 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, - 1420, 1421, 0, 2703, 1438, 0, 0, 0, 0, 0, - 0, 1440, 0, 1422, 0, 0, 0, 1223, 0, 0, - 0, 1427, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2330, 2330, 1859, 0, 0, 1859, 1859, 1859, - 1859, 1859, 1859, 1859, 1859, 1859, 1423, 1859, 2330, 1424, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1425, 0, 1426, 0, 0, 0, 0, - 0, 0, 1440, 0, 0, 1440, 0, 1440, 1414, 0, - 0, 0, 2330, 2330, 0, 0, 1416, 0, 0, 0, - 0, 1417, 0, 0, 0, 0, 1859, 1859, 1440, 0, - 1440, 0, 0, 1440, 0, 0, 0, 0, 0, 1428, - 0, 0, 1429, 1430, 1431, 0, 1432, 1433, 1434, 1435, - 1436, 1437, 1414, 0, 0, 0, 2743, 1438, 1427, 0, - 1416, 0, 0, 0, 0, 1417, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1440, 0, 1414, - 0, 0, 0, 0, 0, 0, 0, 1416, 0, 0, - 0, 0, 1417, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1418, 0, 0, 0, - 1419, 0, 1416, 0, 0, 0, 1428, 1417, 0, 1429, - 1430, 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, - 1420, 1421, 0, 2914, 1438, 0, 0, 0, 0, 0, - 0, 0, 0, 1422, 0, 0, 0, 0, 0, 0, - 1418, 0, 0, 0, 1419, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1859, 0, 1420, 1421, 1423, 1418, 0, 1424, - 0, 1419, 0, 0, 0, 0, 0, 1422, 0, 0, - 0, 0, 0, 1425, 0, 1426, 0, 0, 0, 2722, - 0, 1420, 1421, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1422, 0, 0, 0, 0, 0, - 1423, 0, 0, 1424, 0, 0, 0, 0, 0, 0, - 0, 0, -1643, 0, 0, 0, 1419, 1425, 0, 1426, - 0, 0, 0, 0, 0, 0, 0, 1423, 0, 0, - 1424, 0, 0, 0, 0, 0, 1420, 1421, 1427, 0, - 0, 0, 0, 0, 1425, 0, 1426, 0, 0, -1643, - 0, 0, 0, 0, 1440, 0, 0, 1440, 1440, 1440, - 0, 2330, 0, 0, 0, 0, 2330, 2330, 2330, 2330, - 2330, 2330, 2330, 2330, 2330, 1416, 2330, 1440, 1440, 0, - 1417, 0, 1427, 0, 0, 1424, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1425, - 0, 0, 0, 1440, 1859, 1859, 1440, 0, 1440, 1427, - 0, 0, 1440, 2330, 2330, 0, 0, 1440, 0, 0, - 1440, 0, 0, 0, 0, 0, 1428, 1440, 0, 1429, - 1430, 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, - 0, 0, 0, 2946, 1438, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2944, 0, -1643, 0, 0, 0, 0, 0, - 1428, 0, 0, 1429, 1430, 1431, 0, 1432, 1433, 1434, - 1435, 1436, 1437, 0, 0, 0, 0, 3073, 1438, 0, - 0, 0, 0, 0, 0, -1643, 0, 1428, 0, 1419, - 1429, 1430, 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, - 0, 0, 0, 0, 3111, 1438, 0, 0, 0, 1420, - 1421, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1643, 2330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1428, 0, 0, 0, 0, 0, 0, 1432, - 1433, 1434, 1435, 1436, 1437, 0, 0, 0, 1424, 0, - 1438, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1425, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1440, - 0, 0, 0, 1859, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1440, 0, 1440, 0, 0, - 0, 0, 2330, 2330, 1440, 0, 0, 1859, 1859, 1440, - 1440, 0, 1440, 0, 0, 0, 0, -1643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 699, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1437, 0, 0, 0, 0, 0, 1222, 0, 1439, + 0, 0, 0, 0, 1440, 0, 0, 0, 0, 0, + 0, 0, 699, 0, 0, 1230, 0, 0, 0, -1888, + 0, 699, 0, 0, 0, 0, 0, 699, 0, 699, + 0, 0, 1222, 0, 699, 0, 1223, 699, 699, 699, + 699, 699, 699, 699, 699, 699, 1230, 699, 0, 0, + 0, 699, 699, 0, 1222, 0, 0, 0, 1228, 1230, + 0, 0, 0, 0, 699, 0, 0, 1441, 1594, 0, + 699, 1442, 0, 0, 0, 0, 0, 0, 0, 0, + 699, 0, 1228, 699, 0, 699, 0, 1225, 0, 3397, + 0, 1443, 1444, 1230, 699, 699, 699, 0, 0, 0, + 699, 0, 0, 699, 1220, 0, 1445, 0, 0, 1452, + 0, 2552, 1222, 699, 994, 0, 1456, 1457, 1458, 1459, + 1460, 1461, 699, 0, 0, 0, 1441, 1462, 0, 1222, + 1442, 0, 0, 0, 0, 0, 1228, 1223, 3440, 1446, + 0, 0, 1447, 0, 0, 0, 0, 0, 1222, 0, + 1443, 1444, 0, 0, 0, 0, 1448, 0, 0, 1449, + 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, + 0, 1222, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3460, 1594, 1230, 1594, 0, 0, 1225, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1446, 0, + 0, 1447, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1594, 0, 0, 1448, 0, 1228, 1449, 0, + 1986, 1222, 0, 0, 0, 0, 0, 0, 1450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1228, 2008, 0, 0, 2010, 0, 0, 2021, 0, + 0, 0, 0, 0, 0, 2028, 2033, 0, 0, 0, + 2038, 0, 0, 2043, 0, 0, 0, 0, 0, 0, + 0, 0, 1228, 0, 0, 0, 1228, 1228, 2052, 0, + 0, 0, 2058, 0, 0, 0, 2070, 1450, 0, 0, + 2077, 0, 0, 699, 2079, 2080, 2081, 2082, 2083, 2084, + 2085, 2086, 2087, 0, 0, 2089, 1230, 0, 0, 0, + 976, 0, 0, 0, 0, 0, 0, 0, 1452, 1223, + 0, 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, + 1461, 0, 1220, 0, 0, 2754, 1462, 1220, 1220, 0, + 0, 0, 1230, 699, 699, 0, 0, 0, 1437, 0, + 0, 2556, 0, 0, 1223, 0, 1439, 0, 0, 0, + 699, 1440, 0, 0, 0, 699, 0, 0, 699, 0, + 1225, 0, 0, 0, 0, 0, 1223, 1452, 0, 0, + 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, + 0, 0, 0, 0, 0, 1462, 0, 0, 0, 1222, + 0, 0, 0, 0, 0, 1225, 699, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1439, 0, + 0, 0, 0, 1440, 0, 0, 0, 1225, 0, 0, + 0, 0, 0, 0, 1223, 0, 0, 0, 0, 0, + 0, 0, 699, 0, 0, 0, 0, 0, 0, 699, + 699, 1223, 1230, 1031, 1220, 0, 0, 699, 699, 0, + 0, 0, 699, 1230, 0, 0, 0, 0, 699, 699, + 1223, 0, 699, 0, 0, 0, 1226, 0, 0, 0, + 0, 0, 0, 1441, 0, 1225, 0, 1442, 0, 0, + 0, 0, 699, 1223, 0, 0, 0, 0, 0, 0, + 0, 0, 1225, 0, 0, 0, 0, 1443, 1444, 0, + 0, 2177, 0, 0, 0, 0, 0, 0, 0, 1230, + 1220, 1225, 1445, 0, 0, 0, 0, 1230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1223, 1225, 1441, 0, 0, 0, 1442, + 0, 0, 0, 0, 0, 1446, 0, 0, 1447, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, + 1444, 0, 1448, 0, 0, 1449, 0, 1226, 0, 0, + 0, 0, 0, 0, 1445, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1220, 0, 0, 0, 699, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1594, + 1447, 0, 0, 0, 0, 0, 0, 1222, 0, 0, + 0, 0, 1222, 1222, 1448, 0, 0, 0, 0, 1437, + 0, 0, 0, 0, 1450, 0, 0, 1439, 0, 699, + 0, 2336, 1440, 0, 1230, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 699, 0, 0, 0, + 699, 0, 0, 0, 0, 1230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 699, 0, 0, 0, 1230, + 0, 0, 0, 0, 0, 0, 1450, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1437, 0, 0, 699, + 699, 1223, 0, 699, 1439, 0, 0, 0, 0, 1440, + 699, 699, 0, 0, 1452, 0, 2442, 1453, 1454, 1455, + 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, 0, 1222, + 0, 0, 1462, 1230, 0, 0, 699, 0, 0, 1226, + 0, 0, 0, 0, 1227, 0, 0, 0, 0, 0, + 2463, 0, 1225, 0, 1441, 0, 0, 0, 1442, 0, + 0, 0, 0, 0, 0, 0, 0, 699, 0, 0, + 0, 0, 0, 976, 1226, 0, 1452, 0, 1443, 1444, + -1888, -1888, 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 0, 0, 0, 1445, 1462, 1222, 1226, 0, 0, 0, + 0, 0, 0, 0, 2499, 0, 0, 699, 699, 0, + 0, 0, 0, 0, 1230, 0, 0, 1220, 1220, 0, + 1220, 0, 0, 0, 0, 0, 1446, 1220, 0, 1447, + 0, 1441, 0, 0, 0, 1442, 0, 699, 1230, 0, + 699, 0, 699, 1448, 0, 1227, 1449, 0, 0, 0, + 2033, 0, 2033, 2033, 1226, 1443, 1444, 0, 1220, 0, + 1220, 0, 2559, 0, 0, 2562, 699, 0, 2564, 1230, + 1445, 1226, 0, 1230, 1230, 0, 0, 0, 0, 0, + 1222, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1226, 0, 0, 2585, 0, 2587, 0, 1594, 0, 2590, + 0, 0, 0, 1446, 699, 0, 1447, 0, 0, 0, + 0, 0, 0, 1226, 0, 1450, 0, 0, 0, 0, + 1448, 0, 0, 1449, 699, 0, 0, 0, 0, 1223, + 2605, 1230, 1220, 0, 1223, 1223, 0, 0, 0, 0, + 2894, 0, 2615, 0, 0, 0, 0, 699, 0, 0, + 1031, 0, 0, 0, 0, 1220, 0, 1622, 0, 0, + 0, 0, 2628, 1226, 0, 0, 0, 0, 0, 1635, + 1635, 1632, 0, 0, 0, 0, 0, 0, 0, 0, + 1225, 0, 0, 0, 0, 1225, 1225, 0, 1220, 0, + 2641, 0, 1450, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1220, 1452, 0, 0, 1453, 1454, + 1455, 699, 1456, 1457, 1458, 1459, 1460, 1461, 1220, 0, + 0, 0, 0, 1462, 0, 0, 0, 1227, 0, 0, + 0, 0, 0, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1440, 0, 0, 0, 0, + 0, 1223, 1437, 0, 0, 2940, 0, 0, 0, 0, + 1439, 0, 1227, 0, 0, 1440, 0, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1452, 0, 1227, 1453, 1454, 1455, 0, 1456, + 1457, 1458, 1459, 1460, 1461, 699, 0, 0, 0, 2941, + 1462, 0, 1225, 0, 0, 0, 0, 0, 0, 0, + 1437, 0, 1222, 1222, 0, 1222, 0, 1223, 1439, 0, + 0, 0, 1222, 1440, 0, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1428, 0, 0, 0, 0, - 0, 0, 1432, 1433, 1434, 1435, 1436, 1437, 1440, 0, - 0, 0, 0, 1438, 0, 0, 0, 0, 0, 0, - 0, 0, 2330, 1859, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2330, 2330, 1440, 0, - 1440, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1440, 0, 0, 171, 172, 173, 174, - 175, 176, 177, 178, 0, 180, 181, 182, 0, 0, - 0, 0, 0, 0, 0, 183, 184, 0, 185, 0, - 186, 187, 188, 0, 189, 0, 190, 191, 0, 192, - 193, 194, 195, 196, 0, 1440, 197, 198, 199, 200, - 0, 201, 202, 203, 204, 205, 0, 2330, 206, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 215, 216, - 0, 217, 218, 219, 0, 220, 221, 0, 0, 0, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 0, 230, 0, 231, 232, 233, 234, 235, 0, 236, - 237, 238, 0, 0, 239, 240, 241, 242, 243, 0, - 244, 245, 246, 0, 247, 248, 0, 249, 250, 251, - 252, 253, 254, 255, 0, 256, 257, 258, 259, 0, - 260, 0, 261, 0, 0, 0, 262, 263, 0, 264, - 265, 0, 266, 0, 267, 268, 269, 270, 0, 271, - 272, 273, 0, 274, 275, 276, 277, 278, 279, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 0, 287, - 0, 288, 0, 0, 289, 0, 290, 291, 292, 293, - 294, 0, 295, 0, 296, 0, 0, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 0, 314, 0, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 0, 324, - 325, 0, 326, 0, 327, 328, 329, 330, 331, 0, - 0, 332, 0, 0, 0, 333, 334, 0, 0, 335, - 0, 0, 336, 337, 338, 339, 340, 341, 0, 342, - 343, 344, 345, 346, 347, 0, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 0, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 382, 0, 383, 384, 385, 386, - 0, 387, 388, 0, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 0, 401, 402, 0, - 403, 404, 405, 406, 407, 0, 408, 409, 0, 0, - 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, - 0, 0, 419, 420, 421, 422, 0, 3141, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 0, 0, - 0, 0, 0, 450, 0, 0, 0, 0, 0, 171, - 172, 173, 174, 175, 176, 177, 178, 1949, 180, 181, - 182, 0, -1395, 0, 0, 841, 0, -1395, 183, 184, - 0, 185, 632, 186, 187, 188, 633, 842, 634, 843, - 844, 0, 192, 193, 194, 195, 196, 845, 846, 197, - 847, 848, 200, 0, 201, 202, 203, 204, 849, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 635, 220, 221, - 850, 851, 852, 853, 854, 222, 223, 224, 225, 226, - 855, 856, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 1950, 0, 239, 240, 857, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 858, 253, 254, 859, 860, 256, 257, - 258, 861, 0, 260, 0, 261, 636, 0, 637, 262, - 263, 0, 264, 862, 0, 266, 0, 267, 268, 269, - 270, 638, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 639, 280, 281, 282, 283, 284, 863, - 864, 0, 865, 0, 288, 640, 641, 289, 642, 290, - 291, 292, 293, 294, 0, 866, 643, 296, 644, 0, - 297, 298, 299, 867, 868, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 869, 645, - 870, 455, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 871, 324, 325, 646, 326, 872, 873, 328, 874, - 330, 331, 0, 0, 332, 456, 0, 0, 875, 334, - 0, 0, 335, 647, 648, 876, 337, 338, 339, 340, - 341, 0, 342, 877, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 878, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 649, 369, 370, 879, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 880, 383, - 384, 385, 386, 650, 387, 881, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 882, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 883, - 884, 0, 0, 410, 885, 412, 886, 887, 414, 415, - 416, 417, 418, 0, 888, 419, 420, 421, 422, 889, - 0, 423, 424, 425, 426, 427, 890, 429, 651, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 891, 892, 893, 894, 895, 896, 897, 447, 448, - 449, 0, 0, 0, 0, 0, 652, 898, 557, 899, - 900, 901, 902, 903, 0, 0, 0, 0, 904, 905, - 1951, 0, 0, 0, 0, 0, 0, 907, 1952, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 841, 0, 0, 183, 184, - 0, 185, 632, 186, 187, 188, 633, 842, 634, 843, - 844, 0, 192, 193, 194, 195, 196, 845, 846, 197, - 847, 848, 200, 0, 201, 202, 203, 204, 849, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 635, 220, 221, - 850, 851, 852, 853, 854, 222, 223, 224, 225, 226, - 855, 856, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 857, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 858, 253, 254, 859, 860, 256, 257, - 258, 861, 0, 260, 0, 261, 636, 0, 637, 262, - 263, 0, 264, 862, 0, 266, 0, 267, 268, 269, - 270, 638, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 639, 280, 281, 282, 283, 284, 863, - 864, 0, 865, 0, 288, 640, 641, 289, 642, 290, - 291, 292, 293, 294, 0, 866, 643, 296, 644, 0, - 297, 298, 299, 867, 868, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 869, 645, - 870, 455, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 871, 324, 325, 646, 326, 872, 873, 328, 874, - 330, 331, 0, 0, 332, 456, 0, 0, 875, 334, - 0, 0, 335, 647, 648, 876, 337, 338, 339, 340, - 341, 0, 342, 877, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 878, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 649, 369, 370, 879, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 880, 383, - 384, 385, 386, 650, 387, 881, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 882, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 883, - 884, 0, 0, 410, 885, 412, 886, 887, 414, 415, - 416, 417, 418, 0, 888, 419, 420, 421, 422, 889, - 0, 423, 424, 425, 426, 427, 890, 429, 651, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 891, 892, 893, 894, 895, 896, 897, 447, 448, - 449, 0, 0, 0, 0, 0, 652, 898, 557, 899, - 900, 901, 902, 903, 0, 0, 0, 0, 904, 905, - 0, 0, 0, 0, 0, 0, 0, 907, 1861, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 2226, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, -1033, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, -1033, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, -1033, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, -1033, 290, - 291, 292, 293, 294, 0, 295, -1033, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, -1033, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, -1033, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 971, 185, - 632, 186, 187, 188, 633, 1190, 634, 1191, 1192, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 1193, 1194, - 200, 0, 201, 202, 203, 204, 0, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 635, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 1195, 1196, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 857, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 253, 254, 0, 0, 256, 257, 258, 1197, - 0, 260, 0, 261, 636, 0, 637, 262, 263, 0, - 264, 0, 0, 266, 0, 267, 268, 269, 270, 638, - 271, 272, 273, 1563, 274, 275, 276, 277, 278, 279, - 0, 639, 1564, 281, 282, 283, 284, 1198, 1199, 0, - 1200, 0, 288, 640, 641, 289, 642, 290, 291, 292, - 293, 294, 0, 0, 643, 296, 644, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 1201, 645, 1202, 0, - 315, 316, 317, 318, 319, 320, 321, 0, 323, 0, - 324, 325, 646, 326, 0, 0, 328, 1203, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 1565, 647, 648, 0, 337, 338, 339, 340, 341, 0, - 342, 0, 0, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 1204, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 649, 369, 370, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 1566, 385, - 386, 650, 387, 1206, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 0, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 1207, 1208, 0, - 0, 410, 0, 412, 0, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 0, 1209, 429, 651, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 0, 0, - 0, 0, 0, 0, 0, 0, 447, 448, 449, 0, - 0, 0, 0, 0, 1210, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 841, 0, 0, 183, 184, 1567, 185, 632, 186, - 187, 188, 633, 842, 634, 843, 844, 1871, 192, 193, - 194, 195, 196, 845, 846, 197, 847, 848, 200, 0, - 201, 202, 203, 204, 849, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 635, 220, 221, 850, 851, 852, 853, - 854, 222, 223, 224, 225, 226, 855, 856, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 857, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 858, - 253, 254, 859, 860, 256, 257, 258, 861, 0, 260, - 0, 261, 636, 1872, 637, 262, 263, 0, 264, 862, - 0, 266, 0, 267, 268, 269, 270, 638, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 639, - 280, 281, 282, 283, 284, 863, 864, 0, 865, 0, - 288, 640, 641, 289, 642, 290, 291, 292, 293, 294, - 1873, 866, 643, 296, 644, 0, 297, 298, 299, 867, - 868, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 869, 645, 870, 455, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 871, 324, 325, - 646, 326, 872, 873, 328, 874, 330, 331, 0, 0, - 332, 456, 0, 0, 875, 334, 0, 0, 335, 647, - 648, 876, 337, 338, 339, 340, 341, 0, 342, 877, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 878, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 649, 369, - 370, 879, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 880, 383, 384, 385, 386, 650, - 387, 881, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 882, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 883, 884, 0, 1874, 410, - 885, 412, 886, 887, 414, 415, 416, 417, 418, 0, - 888, 419, 420, 421, 422, 889, 0, 423, 424, 425, - 426, 427, 890, 429, 651, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 891, 892, 893, - 894, 895, 896, 897, 447, 448, 449, 0, 0, 0, - 0, 0, 652, 898, 557, 899, 900, 901, 902, 903, - 0, 0, 0, 0, 904, 905, 0, 0, 0, 0, - 0, 0, 0, 907, 171, 172, 173, 174, 175, 176, - 177, 178, 0, 180, 181, 182, 0, 0, 0, 0, - 841, 0, 0, 183, 184, 0, 185, 632, 186, 187, - 188, 633, 842, 634, 843, 844, 0, 192, 193, 194, - 195, 196, 845, 846, 197, 847, 848, 200, 0, 201, - 202, 203, 204, 849, 0, 0, 206, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 215, 216, 0, 217, - 218, 219, 635, 220, 221, 850, 851, 852, 853, 854, - 222, 223, 224, 225, 226, 855, 856, 229, 0, 230, - 0, 231, 232, 233, 234, 235, 0, 236, 237, 238, - 0, 0, 239, 240, 857, 242, 243, 0, 244, 245, - 246, 0, 247, 248, 0, 249, 250, 251, 858, 253, - 254, 859, 860, 256, 257, 258, 861, 0, 260, 0, - 261, 636, 0, 637, 262, 263, 0, 264, 862, 0, - 266, 0, 267, 268, 269, 270, 638, 271, 272, 273, - 0, 274, 275, 276, 277, 278, 279, 0, 639, 280, - 281, 282, 283, 284, 863, 864, 0, 865, 0, 288, - 640, 641, 289, 642, 290, 291, 292, 293, 294, 0, - 866, 643, 296, 644, 0, 297, 298, 299, 867, 868, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 869, 645, 870, 455, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 871, 324, 325, 646, - 326, 872, 873, 328, 874, 330, 331, 0, 0, 332, - 456, 0, 0, 875, 334, 0, 0, 335, 647, 648, - 876, 337, 338, 339, 340, 341, 0, 342, 877, 344, - 345, 346, 347, 0, 348, 349, 350, 351, 352, 353, - 878, 355, 356, 0, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 0, 367, 368, 649, 369, 370, - 879, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 880, 383, 384, 385, 386, 650, 387, - 881, 0, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 882, 400, 0, 401, 402, 0, 403, 404, - 405, 406, 407, 0, 883, 884, 0, 0, 410, 885, - 412, 886, 887, 414, 415, 416, 417, 418, 0, 888, - 419, 420, 421, 422, 889, 0, 423, 424, 425, 426, - 427, 890, 429, 651, 430, 431, 432, 0, 0, 433, - 434, 435, 436, 437, 438, 439, 891, 892, 893, 894, - 895, 896, 897, 447, 448, 449, 0, 0, 0, 0, - 0, 652, 898, 557, 899, 900, 901, 902, 903, 0, - 0, 0, 0, 904, 905, 906, 0, 0, 0, 0, - 0, 0, 907, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 841, - 0, 0, 183, 184, 0, 185, 632, 186, 187, 188, - 633, 842, 634, 843, 844, 0, 192, 193, 194, 195, - 196, 845, 846, 197, 847, 848, 200, 0, 201, 202, - 203, 204, 849, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 635, 220, 221, 850, 851, 852, 853, 854, 222, - 223, 224, 225, 226, 855, 856, 229, 967, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 857, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 858, 253, 254, - 859, 860, 256, 257, 258, 861, 0, 260, 0, 261, - 636, 0, 637, 262, 263, 0, 264, 862, 0, 266, - 0, 267, 268, 269, 270, 638, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 639, 280, 281, - 282, 283, 284, 863, 864, 0, 865, 0, 288, 640, - 641, 289, 642, 290, 291, 292, 293, 294, 0, 866, - 643, 296, 644, 0, 297, 298, 299, 867, 868, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 869, 645, 870, 455, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 871, 324, 325, 646, 326, - 872, 873, 328, 874, 330, 331, 0, 0, 332, 456, - 0, 0, 875, 334, 0, 0, 335, 647, 648, 876, - 337, 338, 339, 340, 341, 0, 342, 877, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 878, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 649, 369, 370, 879, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 880, 383, 384, 385, 386, 650, 387, 881, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 882, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 883, 884, 0, 0, 410, 885, 412, - 886, 887, 414, 415, 416, 417, 418, 0, 888, 419, - 420, 421, 422, 889, 0, 423, 424, 425, 426, 427, - 890, 429, 651, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 891, 892, 893, 894, 895, - 896, 897, 447, 448, 449, 0, 0, 0, 0, 0, - 652, 898, 557, 899, 900, 901, 902, 903, 0, 0, - 0, 0, 904, 905, 0, 0, 0, 0, 0, 0, - 0, 907, 171, 172, 173, 174, 175, 176, 177, 178, - 0, 180, 181, 182, 0, 0, 0, 0, 841, 0, - 0, 183, 184, 0, 185, 632, 186, 187, 188, 633, - 842, 634, 843, 844, 0, 192, 193, 194, 195, 196, - 845, 846, 197, 847, 848, 200, 0, 201, 202, 203, - 204, 849, 0, 0, 206, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 215, 216, 0, 217, 218, 219, - 635, 220, 221, 850, 851, 852, 853, 854, 222, 223, - 224, 225, 226, 855, 856, 229, 0, 230, 0, 231, - 232, 233, 234, 235, 0, 236, 237, 238, 0, 0, - 239, 240, 857, 242, 243, 0, 244, 245, 246, 0, - 247, 248, 0, 249, 250, 251, 858, 253, 254, 859, - 860, 256, 257, 258, 861, 0, 260, 0, 261, 636, - 0, 637, 262, 263, 0, 264, 862, 0, 266, 0, - 267, 268, 269, 270, 638, 271, 272, 273, 0, 274, - 275, 276, 277, 278, 279, 0, 639, 280, 281, 282, - 283, 284, 863, 864, 0, 865, 0, 288, 640, 641, - 289, 642, 290, 291, 292, 293, 294, 0, 866, 643, - 296, 644, 0, 297, 298, 299, 867, 868, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 869, 645, 870, 455, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 871, 324, 325, 646, 326, 872, - 873, 328, 874, 330, 331, 0, 0, 332, 456, 0, - 0, 875, 334, 0, 0, 335, 647, 648, 876, 337, - 338, 339, 340, 341, 0, 342, 877, 344, 345, 346, - 347, 0, 348, 349, 350, 351, 352, 353, 878, 355, - 356, 0, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 0, 367, 368, 649, 369, 370, 879, 372, - 373, 374, 375, 376, 377, 378, 379, 37, 380, 381, - 382, 880, 383, 384, 385, 386, 650, 387, 881, 0, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 882, 400, 0, 401, 402, 0, 403, 404, 405, 406, - 407, 0, 883, 884, 0, 0, 410, 885, 412, 886, - 887, 414, 415, 416, 417, 418, 0, 888, 419, 420, - 421, 422, 889, 0, 423, 424, 425, 426, 1404, 890, - 429, 651, 430, 431, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 891, 892, 893, 894, 895, 896, - 897, 447, 448, 449, 0, 0, 0, 0, 0, 652, - 898, 557, 899, 900, 901, 902, 903, 0, 0, 0, - 0, 904, 905, 0, 0, 0, 0, 0, 0, 0, - 907, 171, 172, 173, 174, 175, 176, 177, 178, 1512, - 180, 181, 182, 0, 0, 0, 0, 841, 0, 0, - 183, 184, 0, 185, 632, 186, 187, 188, 633, 842, - 634, 843, 844, 0, 192, 193, 194, 195, 196, 845, - 846, 197, 847, 848, 200, 0, 201, 202, 203, 204, - 849, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 635, - 220, 221, 850, 851, 852, 853, 854, 222, 223, 224, - 225, 226, 855, 856, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 857, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 858, 253, 254, 859, 860, - 256, 257, 258, 861, 0, 260, 0, 261, 636, 0, - 637, 262, 263, 0, 264, 862, 0, 266, 0, 267, - 268, 269, 270, 638, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 639, 280, 281, 282, 283, - 284, 863, 864, 0, 865, 0, 288, 640, 641, 289, - 642, 290, 291, 292, 293, 294, 0, 866, 643, 296, - 644, 0, 297, 298, 299, 867, 868, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 869, 645, 870, 455, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 871, 324, 325, 646, 326, 872, 873, - 328, 874, 330, 331, 0, 0, 332, 456, 0, 0, - 875, 334, 0, 0, 335, 647, 648, 876, 337, 338, - 339, 340, 341, 0, 342, 877, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 878, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 649, 369, 370, 879, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 880, 383, 384, 385, 386, 650, 387, 881, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 882, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 883, 884, 0, 0, 410, 885, 412, 886, 887, - 414, 415, 416, 417, 418, 0, 888, 419, 420, 421, - 422, 889, 0, 423, 424, 425, 426, 427, 890, 429, - 651, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 891, 892, 893, 894, 895, 896, 897, - 447, 448, 449, 0, 0, 0, 0, 0, 652, 898, - 557, 899, 900, 901, 902, 903, 0, 0, 0, 0, - 904, 905, 0, 0, 0, 0, 0, 0, 0, 907, - 171, 172, 173, 174, 175, 176, 177, 178, 0, 180, - 181, 182, 0, 0, 0, 0, 841, 0, 0, 183, - 184, 0, 185, 632, 186, 187, 188, 633, 842, 634, - 843, 844, 0, 192, 193, 194, 195, 196, 845, 846, - 197, 847, 848, 200, 0, 201, 202, 203, 204, 849, - 0, 0, 206, 207, 208, 209, 210, 211, 0, 212, - 213, 214, 215, 216, 0, 217, 218, 219, 635, 220, - 221, 850, 851, 852, 853, 854, 222, 223, 224, 225, - 226, 855, 856, 229, 0, 230, 0, 231, 232, 233, - 234, 235, 0, 236, 237, 238, 0, 0, 239, 240, - 857, 242, 243, 0, 244, 245, 246, 0, 247, 248, - 0, 249, 250, 251, 858, 253, 254, 859, 860, 256, - 257, 258, 861, 0, 260, 0, 261, 636, 0, 637, - 262, 263, 0, 264, 862, 0, 266, 0, 267, 268, - 269, 270, 638, 271, 272, 273, 0, 274, 275, 276, - 277, 278, 279, 0, 639, 280, 281, 282, 283, 284, - 863, 864, 0, 865, 0, 288, 640, 641, 289, 642, - 290, 291, 292, 293, 294, 0, 866, 643, 296, 644, - 0, 297, 298, 299, 867, 868, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 869, - 645, 870, 455, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 871, 324, 325, 646, 326, 872, 873, 328, - 874, 330, 331, 0, 0, 332, 456, 0, 0, 875, - 334, 0, 0, 335, 647, 648, 876, 337, 338, 339, - 340, 341, 0, 342, 877, 344, 345, 346, 347, 0, - 348, 349, 350, 351, 352, 353, 878, 355, 356, 0, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 0, 367, 368, 649, 369, 370, 879, 372, 373, 374, - 375, 376, 377, 378, 379, 0, 380, 381, 382, 880, - 383, 384, 385, 386, 650, 387, 881, 0, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 882, 400, - 0, 401, 402, 0, 403, 404, 405, 406, 407, 0, - 883, 884, 0, 0, 410, 885, 412, 886, 887, 414, - 415, 416, 417, 418, 0, 888, 419, 420, 421, 422, - 889, 0, 423, 424, 425, 426, 427, 890, 429, 651, - 430, 431, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 891, 892, 893, 894, 895, 896, 897, 447, - 448, 449, 0, 0, 0, 0, 0, 652, 898, 557, - 899, 900, 901, 902, 903, 0, 0, 0, 0, 904, - 905, 0, 0, 0, 0, 0, 1349, 0, 907, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 841, 0, 0, 183, 184, - 0, 185, 632, 186, 187, 188, 633, 842, 634, 843, - 844, 0, 192, 193, 194, 195, 196, 845, 846, 197, - 847, 848, 200, 0, 201, 202, 203, 204, 849, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 635, 220, 221, - 850, 851, 852, 853, 854, 222, 223, 224, 225, 226, - 855, 856, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 857, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 858, 253, 254, 859, 860, 256, 257, - 258, 861, 0, 260, 0, 261, 636, 1872, 637, 262, - 263, 0, 264, 862, 0, 266, 0, 267, 268, 269, - 270, 638, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 639, 280, 281, 282, 283, 284, 863, - 864, 0, 865, 0, 288, 640, 641, 289, 642, 290, - 291, 292, 293, 294, 0, 866, 643, 296, 644, 0, - 297, 298, 299, 867, 868, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 869, 645, - 870, 455, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 871, 324, 325, 646, 326, 872, 873, 328, 874, - 330, 331, 0, 0, 332, 456, 0, 0, 875, 334, - 0, 0, 335, 647, 648, 876, 337, 338, 339, 340, - 341, 0, 342, 877, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 878, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 649, 369, 370, 879, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 880, 383, - 384, 385, 386, 650, 387, 881, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 882, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 883, - 884, 0, 0, 410, 885, 412, 886, 887, 414, 415, - 416, 417, 418, 0, 888, 419, 420, 421, 422, 889, - 0, 423, 424, 425, 426, 427, 890, 429, 651, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 891, 892, 893, 894, 895, 896, 897, 447, 448, - 449, 0, 0, 0, 0, 0, 652, 898, 557, 899, - 900, 901, 902, 903, 0, 0, 0, 0, 904, 905, - 0, 0, 0, 0, 0, 0, 0, 907, 171, 172, - 173, 174, 175, 176, 177, 178, 0, 180, 181, 182, - 0, 0, 0, 0, 841, 0, 0, 183, 184, 0, - 185, 632, 186, 187, 188, 633, 842, 634, 843, 844, - 0, 192, 193, 194, 195, 196, 845, 846, 197, 847, - 848, 200, 0, 201, 202, 203, 204, 849, 0, 0, - 206, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 215, 216, 0, 217, 218, 219, 635, 220, 221, 850, - 851, 852, 853, 854, 222, 223, 224, 225, 226, 855, - 856, 229, 0, 230, 0, 231, 232, 233, 234, 235, - 0, 236, 237, 238, 0, 0, 239, 240, 857, 242, - 243, 0, 244, 245, 246, 0, 247, 248, 0, 249, - 250, 251, 858, 253, 254, 859, 860, 256, 257, 258, - 861, 0, 260, 0, 261, 636, 0, 637, 262, 263, - 0, 264, 862, 0, 266, 0, 267, 268, 269, 270, - 638, 271, 272, 273, 0, 274, 275, 276, 277, 278, - 279, 0, 639, 280, 281, 282, 283, 284, 863, 864, - 0, 865, 0, 288, 640, 641, 289, 642, 290, 291, - 292, 293, 294, 0, 866, 643, 296, 644, 0, 297, - 298, 299, 867, 868, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 869, 645, 870, - 455, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 871, 324, 325, 646, 326, 872, 873, 328, 874, 330, - 331, 0, 0, 332, 456, 0, 0, 875, 334, 0, - 0, 335, 647, 648, 876, 337, 338, 339, 340, 341, - 0, 342, 877, 344, 345, 346, 347, 0, 348, 349, - 350, 351, 352, 353, 878, 355, 356, 0, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, - 368, 649, 369, 370, 879, 372, 373, 374, 375, 376, - 377, 378, 379, 0, 380, 381, 382, 880, 383, 384, - 385, 386, 650, 387, 881, 0, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 882, 400, 0, 401, - 402, 0, 403, 404, 405, 406, 407, 0, 883, 884, - 0, 0, 410, 885, 412, 886, 887, 414, 415, 416, - 417, 418, 0, 888, 419, 420, 421, 422, 889, 0, - 423, 424, 425, 426, 427, 890, 429, 651, 430, 431, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 891, 892, 893, 894, 895, 896, 897, 447, 448, 449, - 0, 0, 0, 0, 0, 652, 898, 557, 899, 900, - 901, 902, 903, 0, 0, 0, 0, 904, 905, 0, - 0, 0, 0, 0, 0, 0, 907, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 841, 0, 0, 183, 184, 0, 185, - 632, 186, 187, 188, 633, 842, 634, 843, 844, 0, - 192, 193, 194, 195, 196, 845, 846, 197, 847, 848, - 200, 0, 201, 202, 203, 204, 849, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 635, 220, 2244, 850, 851, - 852, 853, 854, 222, 223, 224, 225, 226, 855, 856, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 857, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 858, 253, 254, 859, 860, 256, 257, 258, 861, - 0, 260, 0, 261, 636, 0, 637, 262, 263, 0, - 264, 862, 0, 266, 0, 267, 268, 269, 270, 638, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 639, 280, 281, 282, 283, 284, 863, 864, 0, - 865, 0, 288, 640, 641, 289, 642, 290, 291, 292, - 293, 294, 0, 866, 643, 296, 644, 0, 297, 298, - 299, 867, 868, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 869, 645, 870, 455, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 871, - 324, 325, 646, 326, 872, 873, 328, 874, 330, 331, - 0, 0, 332, 456, 0, 0, 875, 334, 0, 0, - 335, 647, 648, 876, 337, 338, 339, 340, 341, 0, - 342, 877, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 878, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 649, 369, 370, 879, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 880, 383, 384, 385, - 386, 650, 387, 881, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 882, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 883, 884, 0, - 0, 410, 885, 412, 886, 887, 414, 415, 416, 417, - 418, 0, 888, 419, 420, 421, 422, 889, 0, 423, - 424, 425, 426, 427, 890, 429, 651, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 891, - 892, 893, 894, 895, 896, 897, 447, 448, 449, 0, - 0, 0, 0, 0, 652, 898, 557, 899, 900, 901, - 902, 903, 0, 0, 0, 0, 904, 905, 0, 0, - 0, 0, 0, 0, 0, 907, 171, 172, 173, 174, - 175, 176, 177, 178, 0, 180, 181, 182, 0, 0, - 0, 0, 841, 0, 0, 183, 184, 0, 185, 632, - 186, 187, 188, 633, 842, 634, 843, 844, 0, 192, - 193, 194, 195, 196, 845, 846, 197, 847, 848, 200, - 0, 201, 202, 203, 204, 849, 0, 0, 206, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 215, 216, - 0, 217, 218, 219, 635, 220, 221, 850, 851, 852, - 853, 854, 222, 223, 224, 225, 226, 855, 856, 229, - 0, 230, 0, 231, 232, 233, 234, 235, 0, 236, - 237, 238, 0, 0, 239, 240, 857, 242, 243, 0, - 244, 245, 246, 0, 247, 248, 0, 249, 250, 251, - 858, 253, 254, 859, 860, 256, 257, 258, 861, 0, - 260, 0, 261, 636, 0, 637, 262, 263, 0, 264, - 862, 0, 266, 0, 267, 268, 269, 270, 638, 271, - 272, 273, 0, 274, 275, 276, 277, 278, 279, 0, - 639, 280, 281, 282, 283, 284, 863, 864, 0, 865, - 0, 288, 640, 641, 289, 642, 290, 291, 292, 293, - 294, 0, 866, 643, 296, 644, 0, 297, 298, 299, - 867, 868, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 869, 645, 870, 455, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 871, 324, - 325, 646, 326, 872, 873, 328, 874, 330, 331, 0, - 0, 332, 456, 0, 0, 875, 334, 0, 0, 335, - 647, 648, 876, 337, 338, 339, 340, 341, 0, 342, - 877, 344, 345, 346, 347, 0, 348, 349, 350, 351, - 352, 353, 878, 355, 356, 0, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 0, 367, 368, 649, - 369, 370, 879, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 382, 880, 383, 384, 385, 386, - 650, 387, 881, 0, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 882, 400, 0, 401, 402, 0, - 403, 404, 405, 406, 407, 0, 883, 884, 0, 0, - 410, 885, 412, 886, 887, 414, 415, 416, 417, 418, - 0, 888, 419, 420, 421, 422, 889, 0, 423, 424, - 425, 426, 427, 890, 429, 651, 430, 431, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 2922, 891, 892, - 893, 894, 895, 896, 897, 447, 448, 449, 0, 0, - 0, 0, 0, 652, 898, 557, 899, 900, 901, 902, - 903, 0, 0, 0, 0, 904, 905, 0, 0, 0, - 0, 0, 0, 0, 907, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 841, 0, 0, 183, 184, 0, 185, 632, 186, - 187, 188, 633, 842, 634, 843, 844, 0, 192, 193, - 194, 195, 196, 845, 846, 197, 847, 848, 200, 0, - 201, 202, 203, 204, 849, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 635, 220, 221, 850, 851, 852, 853, - 854, 222, 223, 224, 225, 226, 855, 856, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 857, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 858, - 253, 254, 859, 860, 256, 257, 258, 861, 0, 260, - 0, 261, 636, 0, 637, 262, 263, 0, 264, 862, - 0, 266, 0, 267, 268, 269, 270, 638, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 639, - 280, 281, 282, 283, 284, 863, 864, 0, 865, 0, - 288, 640, 641, 289, 642, 290, 291, 292, 293, 294, - 0, 866, 643, 296, 644, 0, 297, 298, 299, 867, - 868, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 869, 645, 870, 455, 315, 2929, - 317, 318, 319, 320, 321, 322, 323, 871, 324, 325, - 646, 326, 872, 873, 328, 874, 330, 331, 0, 0, - 332, 456, 0, 0, 875, 334, 0, 0, 335, 647, - 648, 876, 337, 338, 339, 340, 341, 0, 342, 877, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 878, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 649, 369, - 370, 879, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 880, 383, 384, 385, 386, 650, - 387, 881, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 882, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 883, 884, 0, 0, 410, - 885, 412, 886, 887, 414, 415, 416, 417, 418, 0, - 888, 419, 420, 421, 422, 889, 0, 423, 424, 425, - 426, 427, 890, 429, 651, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 891, 892, 893, - 894, 895, 896, 897, 447, 448, 449, 0, 0, 0, - 0, 0, 652, 898, 557, 899, 900, 901, 902, 903, - 0, 0, 0, 0, 904, 905, 0, 0, 0, 0, - 0, 0, 0, 907, 171, 172, 173, 174, 175, 176, - 177, 178, 0, 180, 181, 182, 0, 0, 0, 0, - 841, 0, 0, 183, 184, 0, 185, 632, 186, 187, - 188, 633, 842, 634, 843, 844, 0, 192, 193, 194, - 195, 196, 845, 846, 197, 847, 848, 200, 0, 201, - 202, 203, 204, 849, 0, 0, 206, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 215, 216, 0, 217, - 218, 219, 635, 220, 221, 850, 851, 852, 853, 854, - 222, 223, 224, 225, 226, 855, 856, 229, 0, 230, - 0, 231, 232, 233, 234, 235, 0, 236, 237, 238, - 0, 0, 239, 240, 857, 242, 243, 0, 244, 245, - 246, 0, 247, 248, 0, 249, 250, 251, 858, 253, - 254, 859, 860, 256, 257, 258, 861, 0, 260, 0, - 261, 636, 0, 637, 262, 263, 0, 264, 862, 0, - 266, 0, 267, 268, 269, 270, 638, 271, 272, 273, - 0, 274, 275, 276, 277, 278, 279, 0, 639, 280, - 281, 282, 283, 284, 863, 864, 0, 865, 0, 288, - 640, 641, 289, 642, 290, 291, 292, 293, 294, 0, - 866, 643, 296, 644, 0, 297, 298, 299, 867, 868, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 869, 645, 870, 455, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 0, 324, 325, 646, - 326, 872, 873, 328, 874, 330, 331, 0, 0, 332, - 456, 0, 0, 875, 334, 0, 0, 335, 647, 648, - 876, 337, 338, 339, 340, 341, 0, 342, 877, 344, - 345, 346, 347, 0, 348, 349, 350, 351, 352, 353, - 878, 355, 356, 0, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 0, 367, 368, 649, 369, 370, - 879, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 880, 383, 384, 385, 386, 650, 387, - 881, 0, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 882, 400, 0, 401, 402, 0, 403, 404, - 405, 406, 407, 0, 883, 884, 0, 0, 410, 885, - 412, 886, 887, 414, 415, 416, 417, 418, 0, 0, - 419, 420, 421, 422, 889, 0, 423, 424, 425, 426, - 427, 890, 429, 651, 430, 431, 432, 0, 0, 433, - 434, 435, 436, 437, 438, 439, 891, 892, 893, 894, - 895, 896, 897, 447, 448, 449, 0, 0, 0, 0, - 0, 652, 898, 557, 899, 900, 901, 902, 903, 0, - 0, 0, 0, 1854, 1855, 0, 0, 0, 0, 0, - 0, 0, 907, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 841, - 0, 0, 183, 184, 0, 185, 632, 186, 187, 188, - 0, 842, 634, 843, 844, 0, 192, 193, 194, 195, - 196, 845, 846, 197, 847, 848, 200, 0, 201, 202, - 203, 204, 849, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 635, 220, 221, 850, 851, 852, 853, 854, 222, - 223, 224, 225, 226, 855, 856, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 857, 242, 243, 0, 244, 245, 246, - 0, 247, 0, 0, 249, 250, 251, 858, 253, 254, - 859, 860, 256, 257, 258, 861, 0, 260, 0, 261, - 636, 0, 637, 262, 263, 0, 264, 862, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 639, 280, 281, - 282, 283, 284, 863, 864, 0, 865, 0, 288, 640, - 641, 289, 642, 290, 291, 292, 293, 294, 0, 866, - 643, 296, 0, 0, 297, 298, 299, 867, 868, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 869, 645, 870, 455, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 646, 326, - 872, 873, 328, 874, 330, 331, 0, 0, 332, 456, - 0, 0, 875, 334, 0, 0, 335, 647, 648, 876, - 337, 338, 339, 340, 341, 0, 342, 877, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 878, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 649, 369, 370, 879, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 880, 383, 384, 385, 386, 0, 387, 881, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 882, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 883, 884, 0, 0, 410, 885, 412, - 886, 887, 414, 415, 416, 417, 418, 0, 888, 419, - 420, 421, 422, 889, 0, 423, 424, 425, 426, 427, - 890, 429, 651, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 891, 892, 893, 894, 895, - 896, 897, 447, 448, 449, 0, 0, 0, 0, 0, - 652, 898, 557, 899, 900, 901, 902, 903, 0, 0, - 0, 0, 904, 905, 0, 0, 0, 0, 0, 0, - 0, 907, 171, 172, 173, 174, 175, 176, 177, 178, - 0, 180, 181, 182, 0, 0, 0, 0, 841, 0, - 0, 183, 184, 0, 185, 632, 186, 187, 188, 0, - 842, 634, 843, 844, 0, 192, 193, 194, 195, 196, - 845, 846, 197, 847, 848, 200, 0, 201, 202, 203, - 204, 849, 0, 0, 206, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 215, 216, 0, 217, 218, 219, - 635, 220, 221, 850, 851, 852, 853, 854, 222, 223, - 224, 225, 226, 855, 856, 229, 0, 230, 0, 231, - 232, 233, 234, 235, 0, 236, 237, 238, 0, 0, - 239, 240, 857, 242, 243, 0, 244, 245, 246, 0, - 247, 0, 0, 249, 250, 251, 858, 253, 254, 859, - 860, 256, 257, 258, 861, 0, 260, 0, 261, 636, - 0, 637, 262, 263, 0, 264, 862, 0, 266, 0, - 267, 268, 269, 270, 0, 271, 272, 273, 0, 274, - 275, 276, 277, 278, 279, 0, 639, 280, 281, 282, - 283, 284, 863, 864, 0, 865, 0, 288, 640, 641, - 289, 642, 290, 291, 292, 293, 294, 0, 866, 643, - 296, 0, 0, 297, 298, 299, 867, 868, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 869, 645, 870, 455, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 0, 324, 325, 646, 326, 872, - 873, 328, 874, 330, 331, 0, 0, 332, 456, 0, - 0, 875, 334, 0, 0, 335, 647, 648, 876, 337, - 338, 339, 340, 341, 0, 342, 877, 344, 345, 346, - 347, 0, 348, 349, 350, 351, 352, 353, 878, 355, - 356, 0, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 0, 367, 368, 649, 369, 370, 879, 372, - 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, - 382, 880, 383, 384, 385, 386, 0, 387, 881, 0, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 882, 400, 0, 401, 402, 0, 403, 404, 405, 406, - 407, 0, 883, 884, 0, 0, 410, 885, 412, 886, - 887, 414, 415, 416, 417, 418, 0, 0, 419, 420, - 421, 422, 889, 0, 423, 424, 425, 426, 427, 890, - 429, 651, 430, 431, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 891, 892, 893, 894, 895, 896, - 897, 447, 448, 449, 0, 0, 0, 0, 0, 652, - 898, 557, 899, 900, 901, 902, 903, 0, 0, 0, - 0, 1854, 1855, 0, 0, 0, 0, 0, 0, 0, - 907, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 632, 186, 187, 188, 633, 189, - 634, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 846, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 849, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 635, - 220, 221, 850, 851, 852, 853, 854, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 859, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 636, 0, - 637, 262, 263, 0, 264, 862, 0, 266, 0, 267, - 268, 269, 270, 638, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 639, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 640, 641, 289, - 642, 290, 291, 292, 293, 294, 0, 866, 643, 296, - 644, 0, 297, 298, 299, 867, 868, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 645, 314, 455, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 646, 326, 0, 873, - 328, 329, 330, 331, 0, 0, 332, 456, 0, 610, - 333, 334, 0, 0, 335, 647, 648, 876, 337, 338, - 339, 340, 341, 0, 342, 877, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 649, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 37, 380, 381, 382, - 880, 383, 384, 385, 386, 650, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 882, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 885, 412, 886, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 889, 0, 423, 424, 425, 426, 1404, 428, 429, - 651, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 891, 892, 893, 894, 895, 896, 897, - 447, 448, 449, 0, 0, 0, 0, 0, 652, 0, - 0, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 1739, - 183, 184, 0, 185, 632, 186, 187, 188, 633, 189, - 634, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 846, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 849, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 635, - 220, 221, 850, 851, 852, 853, 854, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 859, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 636, 0, - 637, 262, 263, 0, 264, 862, 0, 266, 0, 267, - 268, 269, 270, 638, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 639, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 640, 641, 289, - 642, 290, 291, 292, 293, 294, 0, 866, 643, 296, - 644, 0, 297, 298, 299, 867, 868, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 645, 314, 455, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 646, 326, 0, 873, - 328, 329, 330, 331, 0, 0, 332, 456, 0, 610, - 333, 334, 0, 0, 335, 647, 648, 876, 337, 338, - 339, 340, 341, 0, 342, 877, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 649, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 880, 383, 384, 385, 386, 650, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 882, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 885, 412, 886, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 889, 0, 423, 424, 425, 426, 427, 428, 429, - 651, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 891, 892, 893, 894, 895, 896, 897, - 447, 448, 449, 0, 0, 0, 0, 0, 652, 0, - 0, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 1739, - 183, 184, 0, 185, 632, 186, 187, 188, 633, 189, - 634, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 846, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 849, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 635, - 220, 221, 850, 851, 852, 853, 854, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 859, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 636, 0, - 637, 262, 263, 0, 264, 862, 0, 266, 0, 267, - 268, 269, 270, 638, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 639, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 640, 641, 289, - 642, 290, 291, 292, 293, 294, 0, 866, 643, 296, - 644, 0, 297, 298, 299, 867, 868, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 645, 314, 455, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 646, 326, 0, 873, - 328, 329, 330, 331, 0, 0, 332, 456, 0, 0, - 333, 334, 0, 0, 335, 647, 648, 876, 337, 338, - 339, 340, 341, 0, 342, 877, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 649, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 880, 383, 384, 385, 386, 650, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 882, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 885, 412, 886, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 889, 0, 423, 424, 425, 426, 427, 428, 429, - 651, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 891, 892, 893, 894, 895, 896, 897, - 447, 448, 449, 0, 0, 0, 0, 0, 652, 0, - 0, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 3041, - 183, 184, 0, 185, 632, 186, 187, 188, 633, 189, - 634, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 635, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 636, 0, - 637, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 638, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 639, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 640, 641, 289, - 642, 290, 291, 292, 293, 294, 0, 295, 643, 296, - 644, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 645, 314, 455, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 646, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 456, 0, 0, - 333, 334, 0, 0, 335, 647, 648, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 649, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 650, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 651, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 652, 0, - 0, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 3089, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 455, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 456, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 0, - 0, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 959, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 37, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 1404, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 0, - 0, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 46, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 0, - 0, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 1489, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 0, + 0, 1226, 1227, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1222, 0, 1222, 1220, 0, 0, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 1225, 1220, + 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, + 0, 0, 0, 0, 0, 0, 0, 1441, 0, 0, + 0, 1442, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1227, 1223, 1220, 0, 0, 0, 0, 0, 0, + 0, 1443, 1444, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1445, 1222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2621, - 171, 172, 173, 174, 175, 176, 177, 178, 1081, 180, - 181, 182, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 183, - 184, 1089, 185, 632, 186, 187, 188, 633, 1190, 634, - 1191, 1192, 1090, 192, 193, 194, 195, 196, 1091, 1092, - 197, 1193, 1194, 200, 1093, 201, 202, 203, 204, 0, - 1094, 1095, 206, 207, 208, 209, 210, 211, 1096, 212, - 213, 214, 215, 216, 1097, 217, 218, 219, 635, 220, - 221, 1098, 1099, 1100, 1101, 1102, 222, 223, 224, 225, - 226, 1195, 1196, 229, 1103, 230, 1104, 231, 232, 233, - 234, 235, 1105, 236, 237, 238, 1106, 1107, 239, 240, - 857, 242, 243, 1108, 244, 245, 246, 1109, 247, 248, - 1110, 249, 250, 251, 0, 253, 254, 0, 1111, 256, - 257, 258, 1197, 1112, 260, 1113, 261, 636, 1114, 637, - 262, 263, 1115, 264, 0, 1116, 266, 1117, 267, 268, - 269, 270, 638, 271, 272, 273, 1118, 274, 275, 276, - 277, 278, 279, 1119, 639, 0, 281, 282, 283, 284, - 1198, 1199, 1120, 1200, 1121, 288, 640, 641, 289, 642, - 290, 291, 292, 293, 294, 1122, 0, 643, 296, 644, - 1123, 297, 298, 299, 1124, 1125, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 1201, - 645, 1202, 1126, 315, 316, 317, 318, 319, 320, 321, - 0, 323, 1127, 324, 325, 646, 326, 1128, 0, 328, - 1203, 330, 331, 1129, 1130, 332, 1131, 1132, 1133, 2521, - 334, 1134, 1135, 0, 647, 648, 0, 337, 338, 339, - 340, 341, 1136, 342, 0, 0, 345, 346, 347, 1137, - 348, 349, 350, 351, 352, 353, 1204, 355, 356, 1138, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 1139, 367, 368, 649, 369, 370, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 1140, 380, 381, 382, 1141, - 383, 1566, 385, 386, 650, 387, 1206, 1142, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 0, 400, - 1143, 401, 402, 1144, 403, 404, 405, 406, 407, 1145, - 1207, 1208, 1146, 1147, 410, 0, 412, 0, 1148, 414, - 415, 416, 417, 418, 1149, 1150, 419, 420, 421, 422, - 1151, 1152, 423, 424, 425, 426, 0, 1209, 429, 651, - 430, 431, 432, 1153, 1154, 433, 434, 435, 436, 437, - 438, 0, 0, 0, 0, 0, 0, 0, 0, 447, - 448, 449, 0, 0, 0, 0, 0, 1210, 1460, 557, - 0, 0, 670, 542, 0, 671, 672, 673, 0, 674, - 2522, 676, 677, 678, 679, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 668, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 669, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 0, 0, 0, 0, 670, 0, 0, - 671, 672, 673, 0, 674, 675, 676, 677, 678, 679, - 171, 172, 173, 174, 175, 176, 177, 178, 0, 180, - 181, 182, 0, 0, 0, 0, 0, 0, 0, 183, - 184, 0, 185, 0, 186, 187, 188, 0, 189, 0, - 190, 191, 0, 192, 193, 194, 195, 196, 0, 0, - 197, 198, 199, 200, 0, 201, 745, 203, 204, 205, - 0, 0, 206, 207, 208, 209, 210, 211, 0, 212, - 213, 214, 215, 216, 0, 217, 218, 219, 0, 220, - 221, 0, 0, 0, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, - 234, 235, 0, 236, 237, 238, 0, 0, 239, 240, - 241, 242, 243, 0, 244, 245, 246, 0, 247, 248, - 0, 249, 250, 251, 252, 253, 254, 255, 0, 746, - 257, 258, 259, 0, 260, 0, 261, 0, 0, 0, - 262, 263, 0, 264, 265, 0, 266, 0, 267, 268, - 269, 270, 0, 271, 272, 273, 0, 274, 275, 276, - 277, 278, 279, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 0, 287, 0, 288, 0, 0, 289, 0, - 290, 291, 292, 293, 294, 0, 295, 0, 296, 0, - 0, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 0, 314, 0, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 0, 324, 325, 0, 326, 0, 327, 328, - 329, 330, 331, 0, 0, 332, 0, 0, 0, 333, - 334, 0, 0, 335, 0, 0, 336, 337, 338, 339, - 340, 341, 0, 342, 343, 344, 345, 346, 347, 0, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 0, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 0, 367, 368, 0, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 0, 380, 381, 382, 0, - 383, 384, 385, 386, 0, 387, 388, 0, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 0, 401, 402, 0, 403, 404, 405, 406, 407, 0, - 408, 409, 0, 0, 410, 411, 412, 413, 0, 414, - 415, 416, 417, 418, 0, 0, 419, 420, 421, 422, - 0, 0, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 0, 0, 0, 0, 0, 450, 0, 0, - 0, 0, 670, 0, 0, 671, 672, 673, 0, 674, - 675, 676, 677, 678, 679, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 781, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 782, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 783, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 0, 0, 0, 0, 670, 0, 0, - 671, 672, 673, 0, 674, 675, 676, 677, 678, 679, - 171, 172, 173, 174, 175, 176, 177, 178, 0, 180, - 181, 182, 0, 0, 0, 0, 0, 0, 0, 183, - 184, 0, 185, 0, 186, 187, 188, 0, 189, 0, - 190, 191, 0, 192, 193, 194, 195, 196, 0, 0, - 197, 198, 199, 200, 0, 201, 1172, 203, 204, 205, - 0, 0, 206, 207, 208, 209, 210, 211, 0, 212, - 213, 214, 215, 216, 0, 217, 218, 219, 0, 220, - 221, 0, 0, 0, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, - 234, 235, 0, 236, 237, 238, 0, 0, 239, 240, - 241, 242, 243, 0, 244, 245, 246, 0, 247, 248, - 0, 249, 250, 251, 252, 253, 254, 255, 0, 1173, - 257, 258, 259, 0, 260, 0, 261, 0, 0, 0, - 262, 263, 0, 264, 265, 0, 266, 0, 267, 268, - 269, 270, 0, 271, 272, 273, 0, 274, 275, 276, - 277, 278, 279, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 0, 287, 0, 288, 0, 0, 289, 0, - 290, 291, 292, 293, 294, 0, 295, 0, 296, 0, - 0, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 0, 314, 0, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 0, 324, 325, 0, 326, 0, 327, 328, - 329, 330, 331, 0, 0, 332, 0, 0, 0, 333, - 334, 0, 0, 335, 0, 0, 336, 337, 338, 339, - 340, 341, 0, 342, 343, 344, 345, 346, 347, 0, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 0, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 0, 367, 368, 0, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 0, 380, 381, 382, 0, - 383, 384, 385, 386, 0, 387, 388, 0, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 0, 401, 402, 0, 403, 404, 405, 406, 407, 0, - 408, 409, 0, 0, 410, 411, 412, 413, 0, 414, - 415, 416, 417, 418, 0, 0, 419, 420, 421, 422, - 0, 0, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 0, 0, 0, 0, 0, 450, 0, 0, - 0, 0, 670, 0, 0, 671, 672, 673, 0, 674, - 675, 676, 677, 678, 679, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 0, 0, 0, 0, 670, 0, 0, - 671, 672, 673, 0, 674, 675, 676, 677, 678, 679, - 171, 172, 173, 174, 175, 176, 177, 178, 1081, 180, - 181, 182, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 183, - 184, 1089, 185, 632, 186, 187, 188, 633, 189, 634, - 190, 191, 1090, 192, 193, 194, 195, 196, 1091, 1092, - 197, 198, 199, 200, 1093, 201, 202, 203, 204, 205, - 1094, 1095, 206, 207, 208, 209, 210, 211, 1096, 212, - 213, 214, 215, 216, 1097, 217, 218, 219, 635, 220, - 221, 1098, 1099, 1100, 1101, 1102, 222, 223, 224, 225, - 226, 227, 228, 229, 1103, 230, 1104, 231, 232, 233, - 234, 235, 1105, 236, 237, 238, 1106, 1107, 239, 240, - 241, 242, 243, 1108, 244, 245, 246, 1109, 247, 248, - 1110, 249, 250, 251, 252, 253, 254, 255, 1111, 256, - 257, 258, 259, 1112, 260, 1113, 261, 636, 1114, 637, - 262, 263, 1115, 264, 265, 1116, 266, 1117, 267, 268, - 269, 270, 638, 271, 272, 273, 1118, 274, 275, 276, - 277, 278, 279, 1119, 639, 280, 281, 282, 283, 284, - 285, 286, 1120, 287, 1121, 288, 640, 641, 289, 642, - 290, 291, 292, 293, 294, 1122, 295, 643, 296, 644, - 1123, 297, 298, 299, 1124, 1125, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 645, 314, 1126, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 1127, 324, 325, 646, 326, 1128, 327, 328, - 329, 330, 331, 1129, 1130, 332, 1131, 1132, 1133, 333, - 334, 1134, 1135, 335, 647, 648, 336, 337, 338, 339, - 340, 341, 1136, 342, 343, 344, 345, 346, 347, 1137, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 1138, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 1139, 367, 368, 649, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 1140, 380, 381, 382, 1141, - 383, 384, 385, 386, 650, 387, 388, 1142, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 1143, 401, 402, 1144, 403, 404, 405, 406, 407, 1145, - 408, 409, 1146, 1147, 410, 411, 412, 413, 1148, 414, - 415, 416, 417, 418, 1149, 1150, 419, 420, 421, 422, - 1151, 1152, 423, 424, 425, 426, 427, 428, 429, 651, - 430, 431, 432, 1153, 1154, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 0, 0, 0, 0, 0, 1155, 171, 172, - 173, 174, 175, 176, 177, 178, 0, 180, 181, 182, - 0, 1156, 0, 0, 0, 0, 0, 183, 184, 0, - 185, 0, 186, 187, 188, 0, 189, 0, 190, 191, - 0, 192, 193, 194, 195, 196, 0, 0, 197, 198, - 199, 200, 0, 201, 202, 203, 204, 205, 0, 0, - 206, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 215, 216, 0, 217, 218, 219, 0, 220, 221, 0, - 0, 0, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 0, 230, 0, 231, 232, 233, 234, 235, - 0, 236, 237, 238, 0, 0, 239, 240, 241, 242, - 243, 0, 244, 245, 246, 0, 247, 248, 0, 249, - 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, - 259, 0, 260, 0, 261, 0, 0, 0, 262, 263, - 0, 264, 265, 0, 266, 0, 267, 268, 269, 270, - 0, 271, 272, 273, 0, 274, 275, 276, 277, 278, - 279, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 0, 287, 0, 288, 0, 0, 289, 0, 290, 291, - 292, 293, 294, 0, 295, 0, 296, 0, 0, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 0, 314, - 0, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 0, 324, 325, 0, 326, 0, 327, 328, 329, 330, - 331, 0, 0, 332, 0, 0, 0, 333, 334, 0, - 0, 335, 0, 0, 336, 337, 338, 339, 340, 341, - 0, 342, 343, 344, 345, 346, 347, 0, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 0, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, - 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 0, 380, 381, 382, 0, 383, 384, - 385, 386, 0, 387, 388, 0, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 0, 401, - 402, 0, 403, 404, 405, 406, 407, 0, 408, 409, - 0, 0, 410, 411, 412, 413, 0, 414, 415, 416, - 417, 418, 0, 0, 419, 420, 421, 422, 0, 0, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 0, 0, 0, 0, 0, 450, 171, 172, 173, 174, - 175, 176, 177, 178, 0, 180, 181, 182, 0, 608, - 0, 0, 0, 0, 0, 183, 184, 0, 185, 632, - 186, 187, 188, 633, 1190, 634, 1191, 1192, 0, 192, - 193, 194, 195, 196, 0, 0, 197, 1193, 1194, 200, - 0, 201, 202, 203, 204, 0, 0, 0, 206, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 215, 216, - 0, 217, 218, 219, 635, 220, 221, 0, 0, 0, - 0, 0, 222, 223, 224, 225, 226, 1195, 1196, 229, - 0, 230, 0, 231, 232, 233, 234, 235, 0, 236, - 237, 238, 0, 0, 239, 240, 857, 242, 243, 0, - 244, 245, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 253, 254, 0, 0, 256, 257, 258, 1197, 0, - 260, 0, 261, 636, 0, 637, 262, 263, 0, 264, - 0, 0, 266, 0, 267, 268, 269, 270, 638, 271, - 272, 273, 0, 274, 275, 276, 277, 278, 279, 0, - 639, 0, 281, 282, 283, 284, 1198, 1199, 0, 1200, - 0, 288, 640, 641, 289, 642, 290, 291, 292, 293, - 294, 0, 0, 643, 296, 644, 0, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 1201, 645, 1202, 0, 315, - 316, 317, 318, 319, 320, 321, 0, 323, 0, 324, - 325, 646, 326, 0, 0, 328, 1203, 330, 331, 0, - 0, 332, 0, 0, 0, 333, 334, 0, 0, 0, - 647, 648, 0, 337, 338, 339, 340, 341, 0, 342, - 0, 0, 345, 346, 347, 0, 348, 349, 350, 351, - 352, 353, 1204, 355, 356, 0, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 0, 367, 368, 649, - 369, 370, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 382, 0, 383, 1205, 385, 386, - 650, 387, 1206, 0, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 0, 400, 0, 401, 402, 0, - 403, 404, 405, 406, 407, 0, 1207, 1208, 0, 0, - 410, 0, 412, 0, 0, 414, 415, 416, 417, 418, - 0, 0, 419, 420, 421, 422, 0, 0, 423, 424, - 425, 426, 0, 1209, 429, 651, 430, 431, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 0, 0, 0, - 0, 0, 0, 0, 0, 447, 448, 449, 0, 0, - 0, 0, 0, 1210, 171, 172, 173, 174, 175, 176, - 177, 178, 0, 180, 181, 182, 0, 1523, 0, 0, - 0, 0, 0, 183, 184, 0, 185, 632, 186, 187, - 188, 633, 1190, 634, 1191, 1192, 0, 192, 193, 194, - 195, 196, 0, 0, 197, 1193, 1194, 200, 0, 201, - 202, 203, 204, 0, 0, 0, 206, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 215, 216, 0, 217, - 218, 219, 635, 220, 221, 0, 0, 0, 0, 0, - 222, 223, 224, 225, 226, 1195, 1196, 229, 0, 230, - 0, 231, 232, 233, 234, 235, 0, 236, 237, 238, - 0, 0, 239, 240, 857, 242, 243, 0, 244, 245, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 253, - 254, 0, 0, 256, 257, 258, 1197, 0, 260, 0, - 261, 636, 0, 637, 262, 263, 0, 264, 0, 0, - 266, 0, 267, 268, 269, 270, 638, 271, 272, 273, - 0, 274, 275, 276, 277, 278, 279, 0, 639, 0, - 281, 282, 283, 284, 1198, 1199, 0, 1200, 0, 288, - 640, 641, 289, 642, 290, 291, 292, 293, 294, 0, - 0, 643, 296, 644, 0, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 1201, 645, 1202, 0, 315, 316, 317, - 318, 319, 320, 321, 0, 323, 0, 324, 325, 646, - 326, 0, 0, 328, 1203, 330, 331, 0, 0, 332, - 0, 0, 0, 333, 334, 0, 0, 0, 647, 648, - 0, 337, 338, 339, 340, 341, 0, 342, 0, 0, - 345, 346, 347, 0, 348, 349, 350, 351, 352, 353, - 1204, 355, 356, 0, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 0, 367, 368, 649, 369, 370, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 0, 383, 1205, 385, 386, 650, 387, - 1206, 0, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 0, 400, 0, 401, 402, 0, 403, 404, - 405, 406, 407, 0, 1207, 1208, 0, 0, 410, 0, - 412, 0, 0, 414, 415, 416, 417, 418, 0, 0, - 419, 420, 421, 422, 0, 0, 423, 424, 425, 426, - 0, 1209, 429, 651, 430, 431, 432, 0, 0, 433, - 434, 435, 436, 437, 438, 0, 0, 0, 0, 0, - 0, 0, 0, 447, 448, 449, 0, 0, 0, 0, - 0, 1669, 171, 172, 173, 174, 175, 176, 177, 178, - 0, 180, 181, 182, 0, 1523, 0, 0, 0, 0, - 0, 183, 184, 0, 185, 0, 186, 187, 188, 0, - 189, 0, 190, 191, 0, 192, 193, 194, 195, 196, - 0, 0, 197, 198, 199, 200, 0, 201, 202, 203, - 204, 205, 0, 0, 206, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 215, 216, 0, 217, 218, 219, - 0, 220, 221, 0, 0, 0, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 1473, 230, 0, 231, - 232, 233, 234, 235, 0, 236, 237, 238, 0, 0, - 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, - 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, - 1474, 256, 257, 258, 259, 0, 260, 0, 261, 0, - 0, 0, 262, 263, 0, 264, 265, 0, 266, 0, - 267, 268, 269, 270, 0, 271, 272, 273, 0, 274, - 275, 276, 277, 278, 279, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 0, 287, 0, 288, 0, 0, - 289, 0, 290, 291, 292, 293, 294, 0, 295, 0, - 296, 0, 0, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 0, 314, 0, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 0, 324, 325, 0, 326, 0, - 327, 328, 329, 330, 331, 1475, 0, 332, 0, 1476, - 0, 333, 334, 0, 0, 335, 0, 0, 336, 337, - 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, - 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 0, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 0, 367, 368, 0, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, - 382, 0, 383, 384, 385, 386, 0, 387, 388, 0, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 0, 401, 402, 0, 403, 404, 405, 406, - 407, 0, 408, 409, 0, 0, 410, 411, 412, 413, - 1477, 414, 415, 416, 417, 418, 0, 0, 419, 420, - 421, 422, 0, 0, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 0, 0, 0, 0, 0, 450, - 1460, 942, 0, 0, 0, 542, 0, 0, 0, 0, - 0, 0, 1461, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 1483, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 1474, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 1475, 0, 332, 0, - 1476, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 1477, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 1460, 942, 0, 0, 0, 542, 0, 0, 0, - 0, 0, 0, 1461, 171, 172, 173, 174, 175, 176, - 177, 178, 0, 180, 181, 182, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 185, 0, 186, 187, - 188, 0, 189, 0, 190, 191, 0, 192, 193, 194, - 195, 196, 0, 0, 197, 198, 199, 200, 0, 201, - 202, 203, 204, 205, 0, 0, 206, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 215, 216, 0, 217, - 218, 219, 0, 220, 221, 0, 0, 0, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, - 0, 231, 232, 233, 234, 235, 0, 236, 237, 238, - 0, 0, 239, 240, 241, 242, 243, 0, 244, 245, - 246, 0, 247, 248, 0, 249, 250, 251, 252, 253, - 254, 255, 1474, 256, 257, 258, 259, 0, 260, 0, - 261, 0, 0, 0, 262, 263, 0, 264, 265, 0, - 266, 0, 267, 268, 269, 270, 0, 271, 272, 273, - 0, 274, 275, 276, 277, 278, 279, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 0, 0, 289, 0, 290, 291, 292, 293, 294, 0, - 295, 0, 296, 0, 0, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 0, 314, 0, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 0, 324, 325, 0, - 326, 0, 327, 328, 329, 330, 331, 1475, 0, 332, - 0, 1476, 0, 333, 334, 0, 0, 335, 0, 0, - 336, 337, 338, 339, 340, 341, 0, 342, 343, 344, - 345, 346, 347, 0, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 0, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 0, 367, 368, 0, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 0, 383, 384, 385, 386, 0, 387, - 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 0, 401, 402, 0, 403, 404, - 405, 406, 407, 0, 408, 409, 0, 0, 410, 411, - 412, 413, 1477, 414, 415, 416, 417, 418, 0, 0, - 419, 420, 421, 422, 0, 0, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 0, 0, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 0, 0, 0, 0, - 0, 450, 1460, 942, 0, 0, 0, 542, 0, 0, - 0, 0, 0, 0, 1461, 171, 533, 173, 174, 175, - 176, 177, 178, 534, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 535, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 536, 259, 0, 260, - 0, 537, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 538, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 539, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 540, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 541, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 1414, 423, 424, 425, - 426, 427, 428, 429, 1416, 430, 431, 432, 0, 1417, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 1414, 0, 0, - 0, 0, 450, 0, 0, 1416, 0, 0, 542, 0, - 1417, 0, 0, 0, 0, 543, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1441, 0, 0, 0, 1442, + 1222, 1227, 0, 1225, 0, 0, 0, 0, 0, 1446, + 0, 0, 1447, 0, 0, 0, 0, 0, 0, 1443, + 1444, 0, 0, 0, 0, 0, 1448, 0, 0, 1449, + 0, 0, 0, 1222, 1445, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1220, 0, 0, 0, 0, 1222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1222, 0, 0, 0, 1446, 0, 0, + 1447, 2895, 0, 0, 0, 0, 0, 0, 1222, 0, + 2898, 0, 0, 0, 1448, 0, 2899, 1449, 2900, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2918, 2919, 1222, 0, 0, 0, 0, 0, 0, 1226, + 0, 0, 0, 0, 1226, 1226, 0, 0, 0, 2038, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2944, + 0, 0, 2947, 0, 2949, 0, 0, 0, 0, 0, + 0, 0, 0, 2953, 0, 0, 1450, 0, 0, 2958, + 0, 0, 2961, 0, 0, 0, 1220, 1437, 0, 0, + 1222, 0, 2968, 0, 0, 1439, 0, 0, 0, 1227, + 1440, 2463, 0, 0, 1223, 1223, 0, 1223, 1452, 0, + 0, 1453, 1454, 1455, 1223, 1456, 1457, 1458, 1459, 1460, + 1461, 1222, 1220, 0, 0, 0, 1462, 0, 1437, 0, + 0, 0, 0, 0, 1222, 0, 1439, 0, 0, 0, + 0, 1440, 0, 0, 0, 1223, 0, 1223, 0, 0, + 0, 0, 0, 0, 0, 1225, 1225, 0, 1225, 0, + 0, 1226, 1464, 0, 0, 1225, 1452, 0, 1222, 1453, + 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 0, 0, 0, 2973, 1462, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1225, 0, 1225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1464, 0, 1223, + 0, 0, 1441, 0, 0, 0, 1442, 1226, 0, 0, + 0, 0, 1220, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1223, 1220, 0, 0, 1443, 1444, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1222, + 0, 1445, 0, 1441, 0, 0, 0, 1442, 0, 0, + 1225, 0, 0, 0, 0, 1223, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1443, 1444, 0, + 0, 1223, 0, 1225, 1446, 0, 0, 1447, 0, 1220, + 0, 0, 1445, 0, 0, 1223, 0, 1220, 0, 0, + 0, 1448, 1226, 0, 1449, 0, 0, 0, 0, 0, + 1223, 0, 3139, 3140, 0, 0, 1225, 1227, 0, 0, + 0, 0, 1227, 1227, 0, 1446, 0, 0, 1447, 0, + 0, 0, 1225, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1448, 0, 1223, 1449, 1225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1225, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1222, 0, 1450, 0, 3179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1225, 0, 0, 0, 0, + 0, 0, 1223, 0, 0, 0, 0, 1222, 0, 0, + 0, 0, 0, 0, 1450, 0, 0, 0, 3195, 3197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3204, 0, 1223, 0, 0, 0, 3209, 3210, 1227, + 0, 3212, 0, 0, 0, 1220, 1223, 0, 0, 0, + 0, 0, 0, 1225, 0, 0, 0, 0, 0, 0, + 0, 3226, 0, 1452, 0, 0, 1453, 1454, 1455, 1220, + 1456, 1457, 1458, 1459, 1460, 1461, 0, 0, 2982, 0, + 1223, 1462, 0, 0, 1225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1464, 0, 0, 1225, 0, 0, + 0, 0, 0, 0, 1452, 1227, 0, 1453, 1454, 1455, + 0, 1456, 1457, 1458, 1459, 1460, 1461, 1222, 0, 0, + 0, 2988, 1462, 1220, 0, 0, 0, 0, 1222, 0, + 0, 1225, 0, 0, 1226, 1226, 0, 1226, 0, 0, + 0, 0, 0, 0, 1226, 0, 0, 0, 0, 0, + 0, 0, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1418, 0, 0, 0, 1419, 0, + 0, 1223, 0, 0, 0, 1226, 1464, 1226, 3281, 0, + 0, 2017, 0, 0, 1222, 0, 0, 0, 0, 0, + 1227, 0, 1222, 0, 0, 0, 0, 0, 0, 0, + 0, 1464, 1464, 0, 1220, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1420, 1421, - 0, 0, 0, 0, 0, 1418, 0, 0, 0, 1419, - 0, 1422, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1420, - 1421, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1422, 0, 1423, 0, 0, 1424, 0, 0, + 0, 0, 1225, 0, 0, 0, 0, 0, 1220, 0, + 0, 0, 0, 0, 0, 3330, 0, 0, 0, 0, + 0, 0, 0, 1464, 0, 0, 0, 0, 0, 1226, + 0, 0, 0, 0, 1437, 0, 0, 0, 0, 1220, + 0, 1, 1439, 1220, 1220, 0, 0, 1440, 0, 0, + 0, 2, 1226, 3, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1464, 5, 0, 0, + 0, 0, 3360, 1223, 0, 0, 0, 0, 0, 0, + 3362, 0, 0, 0, 0, 1226, 0, 6, 0, 7, + 8, 0, 0, 0, 9, 10, 0, 0, 0, 0, + 0, 1226, 0, 0, 0, 11, 0, 12, 0, 1223, + 0, 0, 0, 0, 0, 1226, 0, 0, 0, 0, + 1222, 0, 0, 0, 1225, 0, 13, 0, 0, 14, + 1226, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 16, 0, 0, 1222, 0, 0, 17, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, + 1225, 20, 0, 0, 1226, 0, 21, 0, 0, 1441, + 0, 0, 0, 1442, 0, 0, 0, 3430, 1464, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 1464, 0, + 0, 1464, 0, 1443, 1444, 0, 0, 0, 1222, 0, + 0, 0, 1227, 1227, 0, 1227, 23, 0, 1445, 2038, + 0, 0, 1227, 0, 0, 0, 0, 0, 0, 1223, + 0, 0, 1226, 0, 0, 0, 0, 0, 0, 0, + 1223, 24, 25, 0, 0, 3462, 0, 26, 0, 0, + 0, 1446, 0, 1227, 1447, 1227, 27, 0, 0, 0, + 0, 0, 0, 1226, 0, 0, 0, 0, 1448, 0, + 0, 1449, 0, 0, 28, 0, 1226, 0, 0, 0, + 1225, 0, 0, 0, 0, 0, 0, 0, 0, 1222, + 0, 1225, 0, 0, 0, 0, 1223, 0, 0, 0, + 0, 0, 0, 0, 1223, 0, 0, 0, 0, 0, + 1226, 29, 0, 1222, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 0, 0, 0, 31, 1227, 32, 0, + 0, 0, 0, 33, 0, 0, 0, 0, 34, 0, + 1450, 35, 0, 0, 1222, 36, 0, 1225, 1222, 1222, + 1227, 37, 0, 0, 0, 1225, 0, 38, 0, 0, + 39, 0, 1437, 0, 0, 0, 0, 40, 0, 0, + 1439, 0, 0, 0, 0, 1440, 0, 0, 0, 0, + 41, 0, 0, 1227, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 42, 0, 0, 1227, + 0, 1226, 0, 1437, 0, 43, 0, 44, 0, 0, + 45, 1439, 0, 1227, 46, 0, 1440, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 47, 0, 1227, 0, + 1452, 0, 0, 1453, 1454, 1455, 0, 1456, 1457, 1458, + 1459, 1460, 1461, 0, 0, 0, 0, 2992, 1462, 0, + 0, 0, 1223, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1227, 0, 0, 0, 1437, 48, 0, 0, + 0, 0, 0, 0, 1439, 0, 1223, 0, 0, 1440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1425, 0, 1426, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1423, 0, 0, 1424, 0, + 1439, 0, 0, 0, 0, 1440, 0, 1441, 0, 0, + 0, 1442, 0, 1225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1425, 0, 1426, 0, 0, 0, 0, 0, + 1227, 1443, 1444, 1226, 0, 0, 0, 1225, 0, 0, + 1223, 0, 0, 0, 0, 0, 1445, 0, 1441, 0, + 0, 0, 1442, 0, 0, 0, 0, 0, 0, 0, + 0, 1227, 1464, 0, 0, 0, 0, 0, 0, 1226, + 0, 0, 1443, 1444, 1227, 0, 0, 0, 0, 1446, + 0, 0, 1447, 0, 1464, 0, 1464, 1445, 2017, 2017, + 2535, 1225, 2957, 2017, 0, 0, 1448, 1464, 0, 1449, + 0, 0, 0, 0, 1464, 0, 0, 0, 1227, 1464, + 0, 1441, 0, 0, 1464, 1442, 0, 0, 0, 1464, + 1446, 1223, 0, 1447, 0, 0, 0, -1888, 1464, 0, + 0, 1442, 2017, 2017, 1464, 1443, 1444, 1448, 0, 0, + 1449, 0, 0, 0, 0, 1223, 1464, 0, 0, 0, + 1445, 1443, 1444, 1464, 0, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1464, 1464, 0, 1464, -1888, 0, 1450, 0, + 0, 0, 1225, 0, 0, 0, 1223, 0, 0, 1226, + 1223, 1223, 0, 1446, 0, 0, 1447, 0, 0, 0, + 1226, 0, 0, 1439, 0, 0, 1225, 0, 1440, 1227, + 1448, 0, 1447, 1449, 0, 0, 0, 0, 0, 1450, + 0, 0, 0, 0, 0, 0, 1448, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1225, 0, 0, + 0, 1225, 1225, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1226, 0, 0, 0, + 0, 0, 0, 1464, 1226, 0, 0, 0, 1452, 0, + 0, 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, + 1461, 0, 1450, 0, 0, 3181, 1462, 0, 0, 0, + 0, 1437, 0, 0, 0, 2960, 0, 0, -1888, 1439, + 0, 0, 0, 0, 1440, 0, 0, 0, 0, 1452, + 0, 0, 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, + 1460, 1461, 0, 0, 0, 0, 3213, 1462, 0, 0, + -1888, 1227, 0, 0, 1442, 0, 0, 0, 0, 0, + 1437, 0, 0, 0, 0, 0, 0, 0, 1439, 0, + 0, 0, 0, 1440, 1443, 1444, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1227, 0, -1888, + 0, 0, 1452, 0, 0, 1453, 1454, 1455, 0, 1456, + 1457, 1458, 1459, 1460, 1461, 0, 0, 0, 1452, 3352, + 1462, 0, 0, 0, 0, 1456, 1457, 1458, 1459, 1460, + 1461, 0, 0, 0, 0, 1447, 1462, 0, 0, 0, + 0, 0, 1226, 0, 0, 0, 0, 0, 0, 1448, + 0, 0, 1464, 0, 0, 0, 1441, 0, 0, 0, + 1442, 0, 0, 0, 0, 0, 1226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1443, 1444, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1441, 0, 1227, 0, 1442, + 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, + 1226, -1888, 0, 0, 0, 0, 0, 0, 1446, 1443, + 1444, 1447, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1445, 1448, 0, 0, 1449, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1427, 0, 0, 0, + 0, 0, 0, 0, 1227, 0, 0, 1446, 0, 1464, + 1447, 0, 1227, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1448, 0, 0, 1449, 0, 0, + 0, 1226, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1452, 0, 0, 0, 1464, 0, 1450, 1456, 1457, + 1458, 1459, 1460, 1461, 0, 1226, 0, 0, 0, 1462, + 0, 0, 0, 0, 0, 0, 2535, 2535, 2017, 0, + 0, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, + 1437, 2017, 2535, 0, 0, 0, 1226, 0, 1439, 0, + 1226, 1226, 0, 1440, 0, 0, 1450, 0, 0, 0, + 0, 0, 0, 0, 0, 1464, 0, 0, 1464, 0, + 1464, 0, 0, 0, 0, 2535, 2535, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1437, 0, 0, 2017, + 2017, 1464, 0, 1464, 1439, 0, 1464, 1452, 0, 1440, + 1453, 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, + 0, 1464, 0, 0, 3367, 1462, 0, 0, 0, 0, + 1227, 1464, 0, 0, 1439, 0, 0, 0, 0, 1440, + 0, 0, 0, 0, 1464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1227, 0, 1452, 1464, 0, 1453, + 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 0, 0, 0, 3399, 1462, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1441, 0, 0, 0, 1442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1227, 1443, + 1444, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1445, 0, 3211, 0, 0, 0, + 0, 1441, 0, 0, 0, 1442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1427, 0, 0, + 0, 0, 0, 0, 0, 1443, 1444, 1446, 0, 0, + 1447, -1888, 0, 0, 0, 1442, 0, 0, 0, 0, + 1445, 0, 0, 0, 1448, 0, 0, 1449, 0, 0, + 0, 0, 0, 490, 0, 1443, 1444, 0, 0, 1227, + 0, 0, 0, 0, 0, 491, 0, 2017, 0, 0, + -1888, 0, 0, 1446, 0, 0, 1447, 0, 0, 0, + 0, 0, 0, 1227, 0, 492, 0, 0, 0, 0, + 1448, 0, 0, 1449, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 493, 1447, 0, 0, -566, + 0, 0, 0, 0, 1227, 0, 1450, 0, 1227, 1227, + 1448, 0, 0, 0, 0, 0, 0, 0, 0, 494, + 0, 0, 0, 0, 0, 495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1450, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 497, 0, 0, + 0, 1464, -724, 498, 1464, 1464, 1464, 499, 2535, 0, + 0, 0, -1888, 2535, 2535, 2535, 2535, 2535, 2535, 2535, + 2535, 2535, -703, 2535, 1464, 1464, 1452, 0, 0, 1453, + 1454, 1455, 0, 1456, 1457, 1458, 1459, 1460, 1461, 0, + 0, 0, 0, 3497, 1462, -431, 0, 0, 0, 0, + 1464, 2017, 2017, 1464, 0, 1464, 0, 0, 500, 1464, + 2535, 2535, 0, 0, 1464, 0, 0, 1464, 0, 0, + 0, 0, 1452, 0, 1464, 1453, 1454, 1455, 0, 1456, + 1457, 1458, 1459, 1460, 1461, 0, 0, 0, 0, 0, + 1462, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1452, 0, 501, 0, 0, 502, 0, 1456, + 1457, 1458, 1459, 1460, 1461, 0, 0, 0, 0, 0, + 1462, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 503, 0, 0, 0, -724, + 0, 504, 0, 0, 0, 0, 0, 0, 0, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 506, 507, 0, 508, + 509, 0, 0, 0, 0, 2535, 0, 0, 510, 0, + 0, 0, 511, 512, 0, 0, 0, 0, 513, 0, + 0, 0, 0, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1428, 0, 0, 1429, 1430, 1431, - 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, 0, - 0, 3190, 1438, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1428, 0, 0, 1429, 1430, - 1431, 0, 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, - 0, 0, 0, 1438, 171, 172, 173, 174, 175, 176, - 177, 178, 0, 180, 181, 182, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 185, 0, 186, 187, - 188, 0, 189, 0, 190, 191, 0, 192, 193, 194, - 195, 196, 0, 0, 197, 198, 199, 200, 0, 201, - 202, 203, 204, 205, 0, 0, 206, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 215, 216, 0, 217, - 218, 219, 0, 220, 221, 0, 0, 0, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, - 0, 231, 232, 233, 234, 235, 0, 236, 237, 238, - 0, 0, 239, 240, 241, 242, 243, 0, 244, 245, - 246, 0, 247, 248, 0, 249, 250, 251, 252, 253, - 254, 255, 0, 256, 257, 258, 259, 0, 260, 0, - 261, 0, 0, 0, 262, 263, 0, 264, 265, 0, - 266, 0, 267, 268, 269, 270, 0, 271, 272, 273, - 0, 274, 275, 276, 277, 278, 279, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 0, 287, 0, 288, - 0, 0, 289, 0, 290, 291, 292, 293, 294, 0, - 295, 0, 296, 0, 0, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 0, 314, 0, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 0, 324, 325, 0, - 326, 0, 327, 328, 329, 330, 331, 0, 0, 332, - 0, 0, 0, 333, 334, 0, 0, 335, 0, 0, - 336, 337, 338, 339, 340, 341, 0, 342, 343, 344, - 345, 346, 347, 0, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 0, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 0, 367, 368, 0, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 0, 383, 384, 385, 386, 0, 387, - 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 0, 401, 402, 0, 403, 404, - 405, 406, 407, 0, 408, 409, 0, 0, 410, 411, - 412, 413, 0, 414, 415, 416, 417, 418, 0, 0, - 419, 420, 421, 422, 0, 0, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 0, 0, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 0, 0, 0, 0, - 0, 450, 0, 0, 0, 0, 0, 0, 2898, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 3238, 557, 3239, - 3240, 0, 3241, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 1454, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 0, 942, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 0, 942, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 1297, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 0, 942, 171, 172, 173, 174, 175, 176, 177, - 178, 1081, 180, 181, 182, 1082, 1083, 1084, 1085, 1086, - 1087, 1088, 183, 184, 1089, 185, 632, 186, 187, 188, - 633, 189, 634, 190, 191, 1090, 192, 193, 194, 195, - 196, 1091, 1092, 197, 198, 199, 200, 1093, 201, 202, - 203, 204, 205, 1094, 1095, 206, 207, 208, 209, 210, - 211, 1096, 212, 213, 214, 215, 216, 1097, 217, 218, - 219, 635, 220, 221, 1098, 1099, 1100, 1101, 1102, 222, - 223, 224, 225, 226, 227, 228, 229, 1103, 230, 1104, - 231, 232, 233, 234, 235, 1105, 236, 237, 238, 1106, - 1107, 239, 240, 241, 242, 243, 1108, 244, 245, 246, - 1109, 247, 248, 1110, 249, 250, 251, 252, 253, 254, - 255, 1111, 256, 257, 258, 259, 1112, 260, 1113, 261, - 636, 1114, 637, 262, 263, 1115, 264, 265, 1116, 266, - 1117, 267, 268, 269, 270, 638, 271, 272, 273, 1118, - 274, 275, 276, 277, 278, 279, 1119, 639, 280, 281, - 282, 283, 284, 285, 286, 1120, 287, 1121, 288, 640, - 641, 289, 642, 290, 291, 292, 293, 294, 1122, 295, - 643, 296, 644, 1123, 297, 298, 299, 1124, 1125, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 645, 314, 1126, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1127, 324, 325, 646, 326, - 1128, 327, 328, 329, 330, 331, 1129, 1130, 332, 1131, - 1132, 1133, 333, 334, 1134, 1135, 335, 647, 648, 336, - 337, 338, 339, 340, 341, 1136, 342, 343, 344, 345, - 346, 347, 1137, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 1138, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 1139, 367, 368, 649, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1140, 380, - 381, 382, 1141, 383, 384, 385, 386, 650, 387, 388, - 1142, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 1143, 401, 402, 1144, 403, 404, 405, - 406, 407, 1145, 408, 409, 1146, 1147, 410, 411, 412, - 413, 1148, 414, 415, 416, 417, 418, 1149, 1150, 419, - 420, 421, 422, 1151, 1152, 423, 424, 425, 426, 427, - 428, 429, 651, 430, 431, 432, 1153, 1154, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 1155, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 632, 186, 187, 188, 633, 189, - 634, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 635, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 636, 0, - 637, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 638, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 639, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 640, 641, 289, - 642, 290, 291, 292, 293, 294, 0, 295, 643, 296, - 644, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 645, 314, 455, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 646, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 456, 0, 0, - 333, 334, 0, 0, 335, 647, 648, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 649, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 650, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 651, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 652, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 632, 186, 187, 188, 633, 189, 634, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 635, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 636, 0, 637, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 769, 638, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 639, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 640, 641, 289, 642, 290, - 291, 292, 293, 294, 0, 295, 643, 296, 644, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 645, - 314, 455, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 646, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 456, 0, 0, 333, 334, - 0, 0, 335, 647, 648, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 649, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 650, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 651, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 652, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 632, 186, 187, 188, 633, 189, 634, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 635, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 636, 0, 637, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 776, 638, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 639, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 640, 641, 289, 642, 290, 291, 292, - 293, 294, 0, 295, 643, 296, 644, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 645, 314, 455, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 646, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 456, 0, 0, 333, 334, 0, 0, - 335, 647, 648, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 649, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 650, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 651, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 652, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 1536, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 1537, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 1538, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 2195, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 1539, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 1540, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 581, 177, - 178, 547, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 548, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 582, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 549, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 550, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 547, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 548, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 549, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 550, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 3, 4, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 455, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 456, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 270, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 455, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 456, 0, 610, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 934, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 455, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 456, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 1313, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 1314, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 1315, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 455, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 456, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 1316, 376, 377, 378, 379, 0, 1317, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 1318, 1319, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 548, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 549, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 550, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 1939, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 1940, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 455, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 456, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 1941, 403, 1942, 405, 1943, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 270, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 455, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 456, 0, 0, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 2078, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 2079, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 2088, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 2089, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 496, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 497, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 575, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 270, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 0, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 576, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 577, 409, 0, - 0, 578, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 601, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 602, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 603, 409, 0, 0, 604, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 765, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 945, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 946, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 593, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 594, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 937, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 596, 409, 0, 0, 597, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 598, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 2226, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 2239, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 270, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 0, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 2265, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 2828, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 2830, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 2832, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 270, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 0, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 3141, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 270, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 270, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 565, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 573, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 591, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 592, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 593, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 594, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 595, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 596, - 409, 0, 0, 597, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 598, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 774, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 0, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 778, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 786, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 788, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 790, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 793, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 0, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 795, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 798, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 593, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 594, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 937, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 596, 409, 0, 0, 597, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 598, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 961, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 0, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 408, - 409, 0, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 0, 186, 187, 188, 0, 189, 0, 190, 191, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 0, 0, 206, - 207, 208, 1256, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 0, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 241, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 254, 255, 0, 256, 257, 258, 259, - 0, 260, 0, 261, 0, 0, 0, 262, 263, 0, - 264, 265, 0, 266, 0, 267, 268, 269, 270, 0, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 0, - 287, 0, 288, 0, 0, 289, 0, 290, 291, 292, - 293, 294, 0, 295, 0, 296, 0, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 314, 0, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, - 324, 325, 0, 326, 0, 327, 328, 329, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 335, 0, 0, 336, 337, 338, 339, 340, 341, 0, - 342, 343, 344, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 384, 385, - 386, 0, 387, 388, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 408, 409, 0, - 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 0, - 0, 0, 0, 0, 450, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 0, 186, - 187, 188, 0, 189, 0, 190, 191, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 198, 199, 200, 0, - 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 0, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 241, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 254, 255, 0, 256, 257, 258, 259, 0, 260, - 0, 261, 0, 0, 0, 262, 263, 0, 264, 265, - 0, 266, 0, 267, 268, 269, 1279, 0, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 0, - 288, 0, 0, 289, 0, 290, 291, 292, 293, 294, - 0, 295, 0, 296, 0, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 314, 0, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 0, 324, 325, - 0, 326, 0, 327, 328, 329, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 335, 0, - 0, 336, 337, 338, 339, 340, 341, 0, 342, 343, - 344, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 384, 385, 386, 0, - 387, 388, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 408, 409, 0, 0, 410, - 411, 412, 413, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 0, 0, 0, - 0, 0, 450, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 0, 186, 187, 188, - 0, 189, 0, 190, 191, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 0, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 241, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 254, - 255, 0, 256, 257, 258, 259, 0, 260, 0, 261, - 0, 0, 0, 262, 263, 0, 264, 265, 0, 266, - 0, 267, 268, 269, 1281, 0, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 0, 287, 0, 288, 0, - 0, 289, 0, 290, 291, 292, 293, 294, 0, 295, - 0, 296, 0, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 314, 0, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 0, 324, 325, 0, 326, - 0, 327, 328, 329, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 335, 0, 0, 336, - 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 384, 385, 386, 0, 387, 388, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 0, 0, 0, 0, 0, - 450, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 0, 186, 187, 188, 0, 189, - 0, 190, 191, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 0, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 241, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 254, 255, 0, - 256, 257, 258, 259, 0, 260, 0, 261, 0, 0, - 0, 262, 263, 0, 264, 265, 0, 266, 0, 267, - 268, 269, 270, 0, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 0, 287, 0, 288, 0, 0, 289, - 0, 290, 291, 292, 293, 294, 0, 295, 0, 296, - 0, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 0, 314, 0, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 0, 324, 325, 0, 326, 0, 327, - 328, 329, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 335, 0, 0, 336, 337, 338, - 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 0, 369, 370, 371, 372, 373, - 1346, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 384, 385, 386, 0, 387, 388, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 408, 409, 0, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 0, 0, 0, 0, 0, 450, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 0, 186, 187, 188, 0, 189, 0, 190, - 191, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 198, 199, 200, 0, 201, 202, 203, 204, 205, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 0, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 241, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, - 258, 259, 0, 260, 0, 261, 0, 0, 0, 262, - 263, 0, 264, 265, 0, 266, 0, 267, 268, 269, - 270, 0, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 0, 287, 0, 288, 0, 0, 289, 0, 290, - 291, 292, 293, 294, 0, 295, 0, 296, 0, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 593, 313, 0, - 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 0, 324, 325, 0, 326, 0, 327, 328, 329, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 335, 0, 0, 336, 337, 338, 339, 340, - 341, 0, 342, 343, 344, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 0, 594, 370, 371, 372, 373, 374, 1559, - 376, 377, 378, 379, 0, 380, 381, 937, 0, 383, - 384, 385, 386, 0, 387, 388, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 596, - 409, 0, 0, 597, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 598, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 0, 0, 0, 0, 0, 450, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 632, 186, 187, 188, 633, 1190, 634, 1191, 1192, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 1193, 1194, - 200, 0, 201, 202, 203, 204, 0, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 635, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 1195, 1196, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 857, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 253, 254, 0, 0, 256, 257, 258, 1197, - 0, 260, 0, 261, 636, 0, 637, 262, 263, 0, - 264, 0, 0, 266, 0, 267, 268, 269, 270, 638, - 271, 272, 273, 1563, 274, 275, 276, 277, 278, 279, - 0, 639, 1564, 281, 282, 283, 284, 1198, 1199, 0, - 1200, 0, 288, 640, 641, 289, 642, 290, 291, 292, - 293, 294, 0, 0, 643, 296, 644, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 1201, 645, 1202, 0, - 315, 316, 317, 318, 319, 320, 321, 0, 323, 0, - 324, 325, 646, 326, 0, 0, 328, 1203, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 1565, 647, 648, 0, 337, 338, 339, 340, 341, 0, - 342, 0, 0, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 1204, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 649, 369, 370, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 1566, 385, - 386, 650, 387, 1206, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 0, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 1207, 1208, 0, - 0, 410, 0, 412, 0, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 0, 1209, 429, 651, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 0, 0, - 0, 0, 0, 0, 0, 0, 447, 448, 449, 0, - 0, 0, 0, 0, 1210, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 632, 186, - 187, 188, 633, 1190, 634, 1191, 1192, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 1193, 1194, 200, 0, - 201, 202, 203, 204, 0, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 635, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 1195, 1196, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 857, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 0, - 253, 254, 0, 0, 256, 257, 258, 1197, 0, 260, - 0, 261, 636, 0, 637, 262, 263, 0, 264, 0, - 0, 266, 0, 267, 268, 269, 270, 638, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 639, - 0, 281, 282, 283, 284, 1198, 1199, 0, 1200, 0, - 288, 640, 641, 289, 642, 290, 291, 292, 293, 294, - 0, 0, 643, 296, 644, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 1201, 645, 1202, 0, 315, 316, - 317, 318, 319, 320, 321, 1585, 323, 0, 324, 325, - 646, 326, 0, 0, 328, 1203, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 0, 647, - 648, 0, 337, 338, 339, 340, 341, 0, 342, 0, - 0, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 1204, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 649, 369, - 370, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 1205, 385, 386, 650, - 387, 1206, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 0, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 1207, 1208, 0, 0, 410, - 0, 412, 0, 0, 414, 415, 416, 417, 418, 0, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 0, 1209, 429, 651, 430, 431, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 447, 448, 449, 0, 0, 0, - 0, 0, 1210, 171, 172, 173, 174, 175, 176, 177, - 178, 0, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 183, 184, 0, 185, 632, 186, 187, 188, - 633, 1190, 634, 1191, 1192, 0, 192, 193, 194, 195, - 196, 0, 0, 197, 1193, 1194, 200, 0, 201, 202, - 203, 204, 0, 0, 0, 206, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 215, 216, 0, 217, 218, - 219, 635, 220, 221, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 226, 1195, 1196, 229, 0, 230, 0, - 231, 232, 233, 234, 235, 0, 236, 237, 238, 0, - 0, 239, 240, 857, 242, 243, 0, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 0, 253, 254, - 0, 0, 256, 257, 258, 1197, 0, 260, 0, 261, - 636, 0, 637, 262, 263, 0, 264, 0, 0, 266, - 0, 267, 268, 269, 270, 638, 271, 272, 273, 0, - 274, 275, 276, 277, 278, 279, 0, 639, 0, 281, - 282, 283, 284, 1198, 1199, 0, 1200, 0, 288, 640, - 641, 289, 642, 290, 291, 292, 293, 294, 0, 0, - 643, 296, 644, 0, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 1201, 645, 1202, 0, 315, 316, 317, 318, - 319, 320, 321, 2451, 323, 0, 324, 325, 646, 326, - 0, 0, 328, 1203, 330, 331, 0, 0, 332, 0, - 0, 0, 333, 334, 0, 0, 0, 647, 648, 0, - 337, 338, 339, 340, 341, 0, 342, 0, 0, 345, - 346, 347, 0, 348, 349, 350, 351, 352, 353, 1204, - 355, 356, 0, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 0, 367, 368, 649, 369, 370, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 0, 383, 1205, 385, 386, 650, 387, 1206, - 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 0, 400, 0, 401, 402, 0, 403, 404, 405, - 406, 407, 0, 1207, 1208, 0, 0, 410, 0, 412, - 0, 0, 414, 415, 416, 417, 418, 0, 0, 419, - 420, 421, 422, 0, 0, 423, 424, 425, 426, 0, - 1209, 429, 651, 430, 431, 432, 0, 0, 433, 434, - 435, 436, 437, 438, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 448, 449, 0, 0, 0, 0, 0, - 1210, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 185, 632, 186, 187, 188, 633, 1190, - 634, 1191, 1192, 0, 192, 193, 194, 195, 196, 0, - 0, 197, 1193, 1194, 200, 0, 201, 202, 203, 204, - 0, 0, 0, 206, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 215, 216, 0, 217, 218, 219, 635, - 220, 221, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 226, 1195, 1196, 229, 0, 230, 0, 231, 232, - 233, 234, 235, 0, 236, 237, 238, 0, 0, 239, - 240, 857, 242, 243, 0, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 0, 253, 254, 0, 0, - 256, 257, 258, 1197, 0, 260, 0, 261, 636, 0, - 637, 262, 263, 0, 264, 0, 0, 266, 0, 267, - 268, 269, 270, 638, 271, 272, 273, 0, 274, 275, - 276, 277, 278, 279, 0, 639, 0, 281, 282, 283, - 284, 1198, 1199, 0, 1200, 0, 288, 640, 641, 289, - 642, 290, 291, 292, 293, 294, 0, 0, 643, 296, - 644, 0, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 1201, 645, 1202, 0, 315, 316, 317, 318, 319, 320, - 321, 0, 323, 0, 324, 325, 646, 326, 1555, 0, - 328, 1203, 330, 331, 0, 0, 332, 0, 0, 0, - 333, 334, 0, 0, 0, 647, 648, 0, 337, 338, - 339, 340, 341, 0, 342, 0, 0, 345, 346, 347, - 0, 348, 349, 350, 351, 352, 353, 1204, 355, 356, - 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 649, 369, 370, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 0, 383, 1566, 385, 386, 650, 387, 1206, 0, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, - 400, 0, 401, 402, 0, 403, 404, 405, 406, 407, - 0, 1207, 1208, 0, 0, 410, 0, 412, 0, 0, - 414, 415, 416, 417, 418, 0, 0, 419, 420, 421, - 422, 0, 0, 423, 424, 425, 426, 0, 1209, 429, - 651, 430, 431, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 0, 0, 0, 0, 0, 0, 0, 0, - 447, 448, 449, 0, 0, 0, 0, 0, 1210, 171, - 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 183, 184, - 0, 185, 632, 186, 187, 188, 633, 1190, 634, 1191, - 1192, 0, 192, 193, 194, 195, 196, 0, 0, 197, - 1193, 1194, 200, 0, 201, 202, 203, 204, 0, 0, - 0, 206, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 215, 216, 0, 217, 218, 219, 635, 220, 221, - 0, 0, 0, 0, 0, 222, 223, 224, 225, 226, - 1195, 1196, 229, 0, 230, 0, 231, 232, 233, 234, - 235, 0, 236, 237, 238, 0, 0, 239, 240, 857, - 242, 243, 0, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 0, 253, 254, 0, 0, 256, 257, - 258, 1197, 0, 260, 0, 261, 636, 0, 637, 262, - 263, 0, 264, 0, 0, 266, 0, 267, 268, 269, - 270, 638, 271, 272, 273, 0, 274, 275, 276, 277, - 278, 279, 0, 639, 0, 281, 282, 283, 284, 1198, - 1199, 0, 1200, 0, 288, 640, 641, 289, 642, 290, - 291, 292, 293, 294, 0, 0, 643, 296, 644, 0, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 1201, 645, - 1202, 0, 315, 316, 317, 318, 319, 320, 321, 0, - 323, 0, 324, 325, 646, 326, 0, 0, 328, 1203, - 330, 331, 0, 0, 332, 0, 0, 0, 333, 334, - 0, 0, 0, 647, 648, 0, 337, 338, 339, 340, - 341, 0, 342, 0, 0, 345, 346, 347, 0, 348, - 349, 350, 351, 352, 353, 1204, 355, 356, 0, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 649, 369, 370, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 0, 383, - 1205, 385, 386, 650, 387, 1206, 0, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 0, 400, 0, - 401, 402, 0, 403, 404, 405, 406, 407, 0, 1207, - 1208, 0, 0, 410, 0, 412, 0, 0, 414, 415, - 416, 417, 418, 0, 0, 419, 420, 421, 422, 0, - 0, 423, 424, 425, 426, 0, 1209, 429, 651, 430, - 431, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 0, 0, 0, 0, 0, 0, 0, 0, 447, 448, - 449, 0, 0, 0, 0, 0, 1210, 171, 172, 173, - 174, 175, 176, 177, 178, 0, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 183, 184, 0, 185, - 632, 186, 187, 188, 633, 1190, 634, 1191, 1192, 0, - 192, 193, 194, 195, 196, 0, 0, 197, 1193, 1194, - 200, 0, 201, 202, 203, 204, 0, 0, 0, 206, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 215, - 216, 0, 217, 218, 219, 635, 220, 221, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 226, 1195, 1196, - 229, 0, 230, 0, 231, 232, 233, 234, 235, 0, - 236, 237, 238, 0, 0, 239, 240, 857, 242, 243, - 0, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 253, 254, 0, 0, 256, 257, 258, 1197, - 0, 260, 0, 261, 636, 0, 637, 262, 263, 0, - 264, 0, 0, 266, 0, 267, 268, 269, 270, 638, - 271, 272, 273, 0, 274, 275, 276, 277, 278, 279, - 0, 639, 0, 281, 282, 283, 284, 1198, 1199, 0, - 1200, 0, 288, 640, 641, 289, 642, 290, 291, 292, - 293, 294, 0, 0, 643, 296, 644, 0, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 1201, 645, 1202, 0, - 315, 316, 317, 318, 319, 320, 321, 0, 323, 0, - 324, 325, 646, 326, 0, 0, 328, 1203, 330, 331, - 0, 0, 332, 0, 0, 0, 333, 334, 0, 0, - 0, 647, 648, 0, 337, 338, 339, 340, 341, 0, - 342, 0, 0, 345, 346, 347, 0, 348, 349, 350, - 351, 352, 353, 1204, 355, 356, 0, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 649, 369, 370, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 0, 383, 1566, 385, - 386, 650, 387, 1206, 0, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 0, 400, 0, 401, 402, - 0, 403, 404, 405, 406, 407, 0, 1207, 1208, 0, - 0, 410, 0, 412, 0, 0, 414, 415, 416, 417, - 418, 0, 0, 419, 420, 421, 422, 0, 0, 423, - 424, 425, 426, 0, 1209, 429, 651, 430, 431, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 0, 0, - 0, 0, 0, 0, 0, 0, 447, 448, 449, 0, - 0, 0, 0, 0, 1210, 171, 172, 173, 174, 175, - 176, 177, 178, 0, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 183, 184, 0, 185, 632, 186, - 187, 188, 633, 1190, 634, 1191, 1192, 0, 192, 193, - 194, 195, 196, 0, 0, 197, 1193, 1194, 200, 0, - 201, 202, 203, 204, 0, 0, 0, 206, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 215, 216, 0, - 217, 218, 219, 635, 220, 221, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 226, 1195, 1196, 229, 0, - 230, 0, 231, 232, 233, 234, 235, 0, 236, 237, - 238, 0, 0, 239, 240, 857, 242, 243, 0, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 0, - 253, 254, 0, 0, 256, 257, 258, 1197, 0, 260, - 0, 261, 636, 0, 637, 262, 263, 0, 264, 0, - 0, 266, 0, 267, 268, 269, 270, 638, 271, 272, - 273, 0, 274, 275, 276, 277, 278, 279, 0, 639, - 0, 281, 282, 283, 284, 1198, 1199, 0, 1200, 0, - 288, 640, 641, 289, 642, 290, 291, 292, 293, 294, - 0, 0, 643, 296, 644, 0, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 1201, 645, 1202, 0, 315, 316, - 317, 318, 319, 320, 321, 0, 323, 0, 324, 325, - 646, 326, 0, 0, 328, 1203, 330, 331, 0, 0, - 332, 0, 0, 0, 333, 334, 0, 0, 0, 647, - 648, 0, 337, 338, 339, 340, 341, 0, 342, 0, - 0, 345, 346, 347, 0, 348, 349, 350, 351, 352, - 353, 1204, 355, 356, 0, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 0, 367, 368, 649, 369, - 370, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 0, 383, 0, 385, 386, 650, - 387, 1206, 0, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 0, 400, 0, 401, 402, 0, 403, - 404, 405, 406, 407, 0, 1207, 1208, 505, 0, 410, - 0, 412, 0, 0, 414, 415, 416, 417, 418, 506, - 0, 419, 420, 421, 422, 0, 0, 423, 424, 425, - 426, 0, 1209, 429, 651, 430, 431, 432, 0, 507, - 433, 434, 435, 436, 437, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 447, 448, 449, 0, 0, 0, - 0, 508, 1210, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 509, 0, + 0, 0, 0, 0, 0, 1464, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1464, 0, 0, 0, 2017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 511, 0, 0, 0, 0, 512, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, + 0, 1464, 0, 1464, 0, 0, 0, 0, 2535, 2535, + 1464, 0, 0, 2017, 2017, 1464, 1464, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, - 0, 0, 0, 0, 0, 0, 0, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 516, 0, 0, 0, 517, 0, - 518, 0, 0, 0, 0, 0, 519, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2535, 2017, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2535, 2535, 1464, 0, 1464, 0, + 0, 0, 0, 0, 0, 0, 0, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 1464, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 2535, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 1464, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 3433, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 0, 0, 0, 0, 0, 185, 186, + 187, 188, 189, 190, 191, 192, 2107, 194, 195, 196, + 0, -1547, 0, 0, 896, 0, -1547, 197, 198, 0, + 199, 673, 200, 201, 202, 674, 897, 675, 898, 899, + 0, 206, 207, 208, 209, 210, 900, 901, 211, 212, + 902, 903, 215, 0, 216, 217, 218, 219, 904, 0, + 0, 221, 222, 223, 224, 225, 226, 0, 227, 228, + 229, 230, 231, 232, 0, 233, 234, 235, 676, 236, + 237, 905, 906, 907, 908, 909, 910, 911, 238, 239, + 240, 241, 242, 243, 912, 913, 246, 0, 247, 0, + 248, 249, 250, 251, 252, 0, 253, 254, 255, 2108, + 0, 256, 257, 914, 259, 260, 0, 261, 262, 263, + 0, 264, 265, 0, 266, 267, 268, 915, 270, 271, + 916, 917, 273, 0, 274, 918, 276, 0, 277, 0, + 278, 678, 0, 679, 279, 280, 0, 281, 919, 0, + 283, 0, 284, 285, 286, 287, 288, 680, 289, 290, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 681, + 298, 299, 300, 301, 302, 920, 921, 0, 922, 0, + 306, 682, 683, 307, 684, 308, 309, 310, 311, 312, + 313, 314, 0, 923, 685, 316, 686, 0, 317, 318, + 319, 924, 925, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 926, 687, 927, 637, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 928, + 344, 345, 688, 346, 929, 930, 348, 931, 350, 351, + 0, 0, 352, 638, 0, 0, 932, 354, 355, 0, + 0, 356, 689, 690, 691, 933, 358, 359, 360, 361, + 362, 363, 0, 364, 934, 366, 367, 368, 369, 370, + 0, 371, 372, 373, 374, 375, 376, 377, 935, 379, + 380, 381, 0, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 0, 392, 393, 692, 394, 395, 936, + 397, 398, 399, 400, 401, 402, 403, 404, 0, 405, + 406, 407, 408, 937, 409, 410, 411, 412, 693, 413, + 938, 0, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 939, 426, 0, 427, 428, 0, 429, 430, + 431, 432, 433, 0, 940, 941, 0, 0, 436, 942, + 438, 943, 944, 440, 441, 442, 443, 444, 445, 0, + 945, 446, 447, 448, 449, 946, 0, 450, 451, 452, + 453, 454, 947, 2109, 456, 694, 457, 458, 459, 0, + 0, 460, 0, 0, 461, 462, 463, 464, 465, 466, + 948, 949, 950, 951, 952, 953, 954, 474, 475, 476, + 0, 0, 0, 695, 955, 585, 956, 957, 958, 568, + 959, 0, 0, 0, 0, 960, 961, 2110, 0, 0, + 0, 0, 0, 0, 963, 2111, 185, 186, 187, 188, + 189, 190, 191, 192, 0, 194, 195, 196, 0, 0, + 0, 0, 896, 0, 0, 197, 198, 0, 199, 673, + 200, 201, 202, 674, 897, 675, 898, 899, 0, 206, + 207, 208, 209, 210, 900, 901, 211, 212, 902, 903, + 215, 0, 216, 217, 218, 219, 904, 0, 0, 221, + 222, 223, 224, 225, 226, 0, 227, 228, 229, 230, + 231, 232, 0, 233, 234, 235, 676, 236, 237, 905, + 906, 907, 908, 909, 910, 911, 238, 239, 240, 241, + 242, 243, 912, 913, 246, 0, 247, 0, 248, 249, + 250, 251, 252, 0, 253, 254, 255, 0, 0, 256, + 257, 914, 259, 260, 0, 261, 262, 263, 0, 264, + 265, 0, 266, 267, 268, 915, 270, 271, 916, 917, + 273, 0, 274, 918, 276, 0, 277, 0, 278, 678, + 0, 679, 279, 280, 0, 281, 919, 0, 283, 0, + 284, 285, 286, 287, 288, 680, 289, 290, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 681, 298, 299, + 300, 301, 302, 920, 921, 0, 922, 0, 306, 682, + 683, 307, 684, 308, 309, 310, 311, 312, 313, 314, + 0, 923, 685, 316, 686, 0, 317, 318, 319, 924, + 925, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 926, 687, 927, 637, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 928, 344, 345, + 688, 346, 929, 930, 348, 931, 350, 351, 0, 0, + 352, 638, 0, 0, 932, 354, 355, 0, 0, 356, + 689, 690, 691, 933, 358, 359, 360, 361, 362, 363, + 0, 364, 934, 366, 367, 368, 369, 370, 0, 371, + 372, 373, 374, 375, 376, 377, 935, 379, 380, 381, + 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 0, 392, 393, 692, 394, 395, 936, 397, 398, + 399, 400, 401, 402, 403, 404, 0, 405, 406, 407, + 408, 937, 409, 410, 411, 412, 693, 413, 938, 0, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 939, 426, 0, 427, 428, 0, 429, 430, 431, 432, + 433, 0, 940, 941, 0, 0, 436, 942, 438, 943, + 944, 440, 441, 442, 443, 444, 445, 0, 945, 446, + 447, 448, 449, 946, 0, 450, 451, 452, 453, 454, + 947, 0, 456, 694, 457, 458, 459, 0, 0, 460, + 0, 0, 461, 462, 463, 464, 465, 466, 948, 949, + 950, 951, 952, 953, 954, 474, 475, 476, 0, 0, + 0, 695, 955, 585, 956, 957, 958, 568, 959, 0, + 0, 0, 0, 960, 961, 0, 0, 0, 0, 0, + 0, 0, 963, 2019, 185, 186, 187, 188, 189, 190, + 191, 192, 0, 194, 195, 196, 0, 0, 0, 0, + 0, 2423, 0, 197, 198, 0, 199, 0, 200, 201, + 202, 0, 203, 0, 204, 205, 0, 206, 207, 208, + 209, 210, 0, 0, 211, 212, 213, 214, 215, 0, + 216, 217, 218, 219, 220, 0, 0, 221, 222, 223, + 224, 225, 226, 0, 227, 228, 229, 230, 231, 232, + 0, 233, 234, 235, -1152, 236, 237, 0, 0, 0, + 0, 0, 0, 0, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 0, 247, 0, 248, 249, 250, 251, + 252, 0, 253, 254, 255, 0, 0, 256, 257, 258, + 259, 260, 0, 261, 262, 263, 0, 264, 265, 0, + 266, 267, 268, 269, 270, 271, 272, 0, 273, 0, + 274, 275, 276, 0, 277, 0, 278, 0, 0, -1152, + 279, 280, 0, 281, 282, 0, 283, 0, 284, 285, + 286, 287, 288, 0, 289, 290, 291, 0, 292, 293, + 294, 295, 296, 297, 0, -1152, 298, 299, 300, 301, + 302, 303, 304, 0, 305, 0, 306, 0, 0, 307, + -1152, 308, 309, 310, 311, 312, 313, 314, 0, 315, + -1152, 316, 0, 0, 317, 318, 319, 0, 0, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, -1152, 334, 0, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 0, 344, 345, 0, 346, + 0, 347, 348, 349, 350, 351, 0, 0, 352, 0, + 0, 0, 353, 354, 355, 0, 0, 356, 0, 0, + 0, 357, 358, 359, 360, 361, 362, 363, 0, 364, + 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 0, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 0, + 392, 393, -1152, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 0, 405, 406, 407, 408, 0, + 409, 410, 411, 412, 0, 413, 414, 0, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 0, 427, 428, 0, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 439, 0, 440, + 441, 442, 443, 444, 445, 0, 0, 446, 447, 448, + 449, 0, 0, 450, 451, 452, 453, 454, 455, 0, + 456, 0, 457, 458, 459, 0, 0, 460, 0, 0, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 0, 0, 0, 477, + 185, 186, 187, 188, 189, 190, 191, 192, 0, 194, + 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, + 198, 1038, 199, 673, 200, 201, 202, 674, 1196, 675, + 1197, 1198, 0, 206, 207, 208, 209, 210, 0, 0, + 211, 212, 1199, 1200, 215, 0, 216, 217, 218, 219, + 0, 0, 0, 221, 222, 223, 224, 225, 226, 0, + 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, + 676, 236, 237, 0, 0, 0, 677, 0, 0, 0, + 238, 239, 240, 241, 242, 243, 1201, 1202, 246, 0, + 247, 0, 248, 249, 250, 251, 252, 0, 253, 254, + 255, 0, 0, 256, 257, 914, 259, 260, 0, 261, + 262, 263, 0, 264, 265, 0, 266, 267, 268, 0, + 270, 271, 0, 0, 273, 0, 274, 1203, 276, 0, + 277, 0, 278, 678, 0, 679, 279, 280, 0, 281, + 0, 0, 283, 0, 284, 285, 286, 287, 288, 680, + 289, 290, 291, 1687, 292, 293, 294, 295, 296, 297, + 0, 681, 1688, 299, 300, 301, 302, 1204, 1205, 0, + 1206, 0, 306, 682, 683, 307, 684, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 685, 316, 686, 0, + 317, 318, 319, 0, 0, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 1207, 687, + 1208, 0, 335, 336, 337, 338, 339, 340, 341, 0, + 343, 0, 344, 345, 688, 346, 0, 0, 348, 1209, + 350, 351, 0, 0, 352, 0, 0, 0, 353, 354, + 355, 0, 0, 1689, 689, 690, 691, 0, 358, 359, + 360, 361, 362, 363, 0, 364, 0, 366, 0, 368, + 369, 370, 0, 371, 372, 373, 374, 375, 376, 377, + 1210, 379, 380, 381, 0, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 0, 392, 393, 692, 394, + 395, 0, 397, 398, 399, 400, 401, 402, 403, 404, + 0, 405, 406, 407, 408, 0, 409, 1690, 411, 412, + 693, 413, 1212, 0, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 0, 426, 0, 427, 428, 0, + 429, 430, 431, 432, 433, 0, 1213, 1214, 0, 0, + 436, 0, 438, 0, 0, 440, 441, 442, 443, 444, + 445, 0, 0, 446, 447, 448, 449, 0, 0, 450, + 451, 452, 453, 0, 1215, 1691, 456, 694, 457, 458, + 459, 0, 0, 460, 0, 0, 461, 462, 463, 464, + 465, 0, 0, 0, 0, 0, 0, 0, 0, 474, + 475, 476, 0, 0, 0, 1216, 185, 186, 187, 188, + 189, 190, 191, 192, 0, 194, 195, 196, 0, 0, + 0, 0, 0, 0, 0, 197, 198, 1692, 199, 673, + 200, 201, 202, 674, 1196, 675, 1197, 1198, 0, 206, + 207, 208, 209, 210, 0, 0, 211, 212, 1199, 1200, + 215, 0, 216, 217, 218, 219, 0, 0, 0, 221, + 222, 223, 224, 225, 226, 0, 227, 228, 229, 230, + 231, 232, 0, 233, 234, 235, 676, 236, 237, 0, + 0, 0, 677, 0, 0, 0, 238, 239, 240, 241, + 242, 243, 1201, 1202, 246, 0, 247, 0, 248, 249, + 250, 251, 252, 0, 253, 254, 255, 0, 0, 256, + 257, 914, 259, 260, 0, 261, 262, 263, 0, 264, + 265, 0, 266, 267, 268, 0, 270, 271, 0, 0, + 273, 0, 274, 1203, 276, 0, 277, 0, 278, 678, + 0, 679, 279, 280, 0, 281, 0, 0, 283, 0, + 284, 285, 286, 287, 288, 680, 289, 290, 291, 1687, + 292, 293, 294, 295, 296, 297, 0, 681, 1688, 299, + 300, 301, 302, 1204, 1205, 0, 1206, 0, 306, 682, + 683, 307, 684, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 685, 316, 686, 0, 317, 318, 319, 0, + 0, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 1207, 687, 1208, 0, 335, 336, + 337, 338, 339, 340, 341, 0, 343, 0, 344, 345, + 688, 346, 0, 0, 348, 1209, 350, 351, 0, 0, + 352, 0, 0, 0, 353, 354, 355, 0, 0, 1689, + 689, 690, 691, 0, 358, 359, 360, 361, 362, 363, + 0, 364, 0, 366, 0, 368, 369, 370, 0, 371, + 372, 373, 374, 375, 376, 377, 1210, 379, 380, 381, + 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 0, 392, 393, 692, 394, 395, 0, 397, 398, + 399, 400, 401, 402, 403, 404, 0, 405, 406, 407, + 408, 0, 409, 1690, 411, 412, 693, 413, 1212, 0, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 0, 426, 0, 427, 428, 0, 429, 430, 431, 432, + 433, 0, 1213, 1214, 0, 0, 436, 0, 438, 0, + 0, 440, 441, 442, 443, 444, 445, 0, 0, 446, + 447, 448, 449, 0, 0, 450, 451, 452, 453, 0, + 1215, 1691, 456, 694, 457, 458, 459, 0, 0, 460, + 0, 0, 461, 462, 463, 464, 465, 0, 0, 0, + 0, 0, 0, 0, 0, 474, 475, 476, 0, 0, + 0, 1216, 185, 186, 187, 188, 189, 190, 191, 192, + 0, 194, 195, 196, 0, 0, 0, 0, 896, 0, + 0, 197, 198, 2405, 199, 673, 200, 201, 202, 674, + 897, 675, 898, 899, 2029, 206, 207, 208, 209, 210, + 900, 901, 211, 212, 902, 903, 215, 0, 216, 217, + 218, 219, 904, 0, 0, 221, 222, 223, 224, 225, + 226, 0, 227, 228, 229, 230, 231, 232, 0, 233, + 234, 235, 676, 236, 237, 905, 906, 907, 908, 909, + 910, 911, 238, 239, 240, 241, 242, 243, 912, 913, + 246, 0, 247, 0, 248, 249, 250, 251, 252, 0, + 253, 254, 255, 0, 0, 256, 257, 914, 259, 260, + 0, 261, 262, 263, 0, 264, 265, 0, 266, 267, + 268, 915, 270, 271, 916, 917, 273, 0, 274, 918, + 276, 0, 277, 0, 278, 678, 2030, 679, 279, 280, + 0, 281, 919, 0, 283, 0, 284, 285, 286, 287, + 288, 680, 289, 290, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 681, 298, 299, 300, 301, 302, 920, + 921, 0, 922, 0, 306, 682, 683, 307, 684, 308, + 309, 310, 311, 312, 313, 314, 2031, 923, 685, 316, + 686, 0, 317, 318, 319, 924, 925, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 926, 687, 927, 637, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 928, 344, 345, 688, 346, 929, 930, + 348, 931, 350, 351, 0, 0, 352, 638, 0, 0, + 932, 354, 355, 0, 0, 356, 689, 690, 691, 933, + 358, 359, 360, 361, 362, 363, 0, 364, 934, 366, + 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, + 376, 377, 935, 379, 380, 381, 0, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 0, 392, 393, + 692, 394, 395, 936, 397, 398, 399, 400, 401, 402, + 403, 404, 0, 405, 406, 407, 408, 937, 409, 410, + 411, 412, 693, 413, 938, 0, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 939, 426, 0, 427, + 428, 0, 429, 430, 431, 432, 433, 0, 940, 941, + 0, 2032, 436, 942, 438, 943, 944, 440, 441, 442, + 443, 444, 445, 0, 945, 446, 447, 448, 449, 946, + 0, 450, 451, 452, 453, 454, 947, 0, 456, 694, + 457, 458, 459, 0, 0, 460, 0, 0, 461, 462, + 463, 464, 465, 466, 948, 949, 950, 951, 952, 953, + 954, 474, 475, 476, 0, 0, 0, 695, 955, 585, + 956, 957, 958, 568, 959, 0, 0, 0, 0, 960, + 961, 0, 0, 0, 0, 0, 0, 0, 963, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 896, 0, 0, 197, 198, + 0, 199, 673, 200, 201, 202, 674, 897, 675, 898, + 899, 0, 206, 207, 208, 209, 210, 900, 901, 211, + 212, 902, 903, 215, 0, 216, 217, 218, 219, 904, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 676, + 236, 237, 905, 906, 907, 908, 909, 910, 911, 238, + 239, 240, 241, 242, 243, 912, 913, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 914, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 915, 270, + 271, 916, 917, 273, 0, 274, 918, 276, 0, 277, + 0, 278, 678, 0, 679, 279, 280, 0, 281, 919, + 0, 283, 0, 284, 285, 286, 287, 288, 680, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 681, 298, 299, 300, 301, 302, 920, 921, 0, 922, + 0, 306, 682, 683, 307, 684, 308, 309, 310, 311, + 312, 313, 314, 0, 923, 685, 316, 686, 0, 317, + 318, 319, 924, 925, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 926, 687, 927, + 637, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 928, 344, 345, 688, 346, 929, 930, 348, 931, 350, + 351, 0, 0, 352, 638, 0, 0, 932, 354, 355, + 0, 0, 356, 689, 690, 691, 933, 358, 359, 360, + 361, 362, 363, 0, 364, 934, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 935, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 692, 394, 395, + 936, 397, 398, 399, 400, 401, 402, 403, 404, 37, + 405, 406, 407, 408, 937, 409, 410, 411, 412, 693, + 413, 938, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 939, 426, 0, 427, 428, 41, 429, + 430, 431, 432, 433, 0, 940, 941, 0, 0, 436, + 942, 438, 943, 944, 440, 441, 442, 443, 444, 445, + 0, 945, 446, 447, 448, 449, 946, 0, 450, 451, + 452, 453, 1427, 947, 0, 456, 694, 457, 458, 459, + 0, 0, 460, 0, 47, 461, 462, 463, 464, 465, + 466, 948, 949, 950, 951, 952, 953, 954, 474, 475, + 476, 0, 0, 0, 695, 955, 585, 956, 957, 958, + 568, 959, 0, 0, 0, 0, 960, 961, 0, 0, + 0, 0, 0, 0, 0, 963, 185, 186, 187, 188, + 189, 190, 191, 192, 0, 194, 195, 196, 0, 0, + 0, 0, 896, 0, 0, 197, 198, 0, 199, 673, + 200, 201, 202, 674, 897, 675, 898, 899, 0, 206, + 207, 208, 209, 210, 900, 901, 211, 212, 902, 903, + 215, 0, 216, 217, 218, 219, 904, 0, 0, 221, + 222, 223, 224, 225, 226, 0, 227, 228, 229, 230, + 231, 232, 0, 233, 234, 235, 676, 236, 237, 905, + 906, 907, 908, 909, 910, 911, 238, 239, 240, 241, + 242, 243, 912, 913, 246, 0, 247, 0, 248, 249, + 250, 251, 252, 0, 253, 254, 255, 0, 0, 256, + 257, 914, 259, 260, 0, 261, 262, 263, 0, 264, + 265, 0, 266, 267, 268, 915, 270, 271, 916, 917, + 273, 0, 274, 918, 276, 0, 277, 0, 278, 678, + 0, 679, 279, 280, 0, 281, 919, 0, 283, 0, + 284, 285, 286, 287, 288, 680, 289, 290, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 681, 298, 299, + 300, 301, 302, 920, 921, 0, 922, 0, 306, 682, + 683, 307, 684, 308, 309, 310, 311, 312, 313, 314, + 0, 923, 685, 316, 686, 0, 317, 318, 319, 924, + 925, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 926, 687, 927, 637, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 928, 344, 345, + 688, 346, 929, 930, 348, 931, 350, 351, 0, 0, + 352, 638, 0, 0, 932, 354, 355, 0, 0, 356, + 689, 690, 691, 933, 358, 359, 360, 361, 362, 363, + 0, 364, 934, 366, 367, 368, 369, 370, 0, 371, + 372, 373, 374, 375, 376, 377, 935, 379, 380, 381, + 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 0, 392, 393, 692, 394, 395, 936, 397, 398, + 399, 400, 401, 402, 403, 404, 0, 405, 406, 407, + 408, 937, 409, 410, 411, 412, 693, 413, 938, 0, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 939, 426, 0, 427, 428, 0, 429, 430, 431, 432, + 433, 0, 940, 941, 0, 0, 436, 942, 438, 943, + 944, 440, 441, 442, 443, 444, 445, 0, 945, 446, + 447, 448, 449, 946, 0, 450, 451, 452, 453, 454, + 947, 0, 456, 694, 457, 458, 459, 0, 0, 460, + 0, 0, 461, 462, 463, 464, 465, 466, 948, 949, + 950, 951, 952, 953, 954, 474, 475, 476, 0, 0, + 0, 695, 955, 585, 956, 957, 958, 568, 959, 0, + 0, 0, 0, 960, 961, 0, 0, 0, 0, 0, + 1372, 1978, 963, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 896, + 0, 0, 197, 198, 0, 199, 673, 200, 201, 202, + 674, 897, 675, 898, 899, 0, 206, 207, 208, 209, + 210, 900, 901, 211, 212, 902, 903, 215, 0, 216, + 217, 218, 219, 904, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 676, 236, 237, 905, 906, 907, 908, + 909, 910, 911, 238, 239, 240, 241, 242, 243, 912, + 913, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 914, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 915, 270, 271, 916, 917, 273, 0, 274, + 918, 276, 0, 277, 0, 278, 678, 0, 679, 279, + 280, 0, 281, 919, 0, 283, 0, 284, 285, 286, + 287, 288, 680, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 681, 298, 299, 300, 301, 302, + 920, 921, 0, 922, 0, 306, 682, 683, 307, 684, + 308, 309, 310, 311, 312, 313, 314, 0, 923, 685, + 316, 686, 0, 317, 318, 319, 924, 925, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 926, 687, 927, 637, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 928, 344, 345, 688, 346, 929, + 930, 348, 931, 350, 351, 0, 0, 352, 638, 0, + 0, 932, 354, 355, 0, 0, 356, 689, 690, 691, + 933, 358, 359, 360, 361, 362, 363, 0, 364, 934, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 935, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 692, 394, 395, 936, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 937, 409, + 410, 411, 412, 693, 413, 938, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 939, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 940, + 941, 0, 0, 436, 942, 438, 943, 944, 440, 441, + 442, 443, 444, 445, 0, 945, 446, 447, 448, 449, + 946, 0, 450, 451, 452, 453, 454, 947, 0, 456, + 694, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 948, 949, 950, 951, 952, + 953, 954, 474, 475, 476, 0, 0, 0, 695, 955, + 585, 956, 957, 958, 568, 959, 0, 0, 0, 0, + 960, 961, 962, 0, 0, 0, 0, 0, 0, 963, + 185, 186, 187, 188, 189, 190, 191, 192, 0, 194, + 195, 196, 0, 0, 0, 0, 896, 0, 0, 197, + 198, 0, 199, 673, 200, 201, 202, 674, 897, 675, + 898, 899, 0, 206, 207, 208, 209, 210, 900, 901, + 211, 212, 902, 903, 215, 0, 216, 217, 218, 219, + 904, 0, 0, 221, 222, 223, 224, 225, 226, 0, + 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, + 676, 236, 237, 905, 906, 907, 908, 909, 910, 911, + 238, 239, 240, 241, 242, 243, 912, 913, 246, 1030, + 247, 0, 248, 249, 250, 251, 252, 0, 253, 254, + 255, 0, 0, 256, 257, 914, 259, 260, 0, 261, + 262, 263, 0, 264, 265, 0, 266, 267, 268, 915, + 270, 271, 916, 917, 273, 0, 274, 918, 276, 0, + 277, 0, 278, 678, 0, 679, 279, 280, 0, 281, + 919, 0, 283, 0, 284, 285, 286, 287, 288, 680, + 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 681, 298, 299, 300, 301, 302, 920, 921, 0, + 922, 0, 306, 682, 683, 307, 684, 308, 309, 310, + 311, 312, 313, 314, 0, 923, 685, 316, 686, 0, + 317, 318, 319, 924, 925, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 926, 687, + 927, 637, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 928, 344, 345, 688, 346, 929, 930, 348, 931, + 350, 351, 0, 0, 352, 638, 0, 0, 932, 354, + 355, 0, 0, 356, 689, 690, 691, 933, 358, 359, + 360, 361, 362, 363, 0, 364, 934, 366, 367, 368, + 369, 370, 0, 371, 372, 373, 374, 375, 376, 377, + 935, 379, 380, 381, 0, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 0, 392, 393, 692, 394, + 395, 936, 397, 398, 399, 400, 401, 402, 403, 404, + 0, 405, 406, 407, 408, 937, 409, 410, 411, 412, + 693, 413, 938, 0, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 939, 426, 0, 427, 428, 0, + 429, 430, 431, 432, 433, 0, 940, 941, 0, 0, + 436, 942, 438, 943, 944, 440, 441, 442, 443, 444, + 445, 0, 945, 446, 447, 448, 449, 946, 0, 450, + 451, 452, 453, 454, 947, 0, 456, 694, 457, 458, + 459, 0, 0, 460, 0, 0, 461, 462, 463, 464, + 465, 466, 948, 949, 950, 951, 952, 953, 954, 474, + 475, 476, 0, 0, 0, 695, 955, 585, 956, 957, + 958, 568, 959, 0, 0, 0, 0, 960, 961, 0, + 0, 0, 0, 0, 0, 0, 963, 185, 186, 187, + 188, 189, 190, 191, 192, 1630, 194, 195, 196, 0, + 0, 0, 0, 896, 0, 0, 197, 198, 0, 199, + 673, 200, 201, 202, 674, 897, 675, 898, 899, 0, + 206, 207, 208, 209, 210, 900, 901, 211, 212, 902, + 903, 215, 0, 216, 217, 218, 219, 904, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 676, 236, 237, + 905, 906, 907, 908, 909, 910, 911, 238, 239, 240, + 241, 242, 243, 912, 913, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 914, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 915, 270, 271, 916, + 917, 273, 0, 274, 918, 276, 0, 277, 0, 278, + 678, 0, 679, 279, 280, 0, 281, 919, 0, 283, + 0, 284, 285, 286, 287, 288, 680, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 681, 298, + 299, 300, 301, 302, 920, 921, 0, 922, 0, 306, + 682, 683, 307, 684, 308, 309, 310, 311, 312, 313, + 314, 0, 923, 685, 316, 686, 0, 317, 318, 319, + 924, 925, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 926, 687, 927, 637, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 928, 344, + 345, 688, 346, 929, 930, 348, 931, 350, 351, 0, + 0, 352, 638, 0, 0, 932, 354, 355, 0, 0, + 356, 689, 690, 691, 933, 358, 359, 360, 361, 362, + 363, 0, 364, 934, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 935, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 692, 394, 395, 936, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 937, 409, 410, 411, 412, 693, 413, 938, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 939, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 940, 941, 0, 0, 436, 942, 438, + 943, 944, 440, 441, 442, 443, 444, 445, 0, 945, + 446, 447, 448, 449, 946, 0, 450, 451, 452, 453, + 454, 947, 0, 456, 694, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 948, + 949, 950, 951, 952, 953, 954, 474, 475, 476, 0, + 0, 0, 695, 955, 585, 956, 957, 958, 568, 959, + 0, 0, 0, 0, 960, 961, 0, 0, 0, 0, + 0, 0, 0, 963, 185, 186, 187, 188, 189, 190, + 191, 192, 0, 194, 195, 196, 0, 0, 0, 0, + 896, 0, 0, 197, 198, 0, 199, 673, 200, 201, + 202, 674, 897, 675, 898, 899, 0, 206, 207, 208, + 209, 210, 900, 901, 211, 212, 902, 903, 215, 0, + 216, 217, 218, 219, 904, 0, 0, 221, 222, 223, + 224, 225, 226, 0, 227, 228, 229, 230, 231, 232, + 0, 233, 234, 235, 676, 236, 237, 905, 906, 907, + 908, 909, 910, 911, 238, 239, 240, 241, 242, 243, + 912, 913, 246, 0, 247, 0, 248, 249, 250, 251, + 252, 0, 253, 254, 255, 0, 0, 256, 257, 914, + 259, 260, 0, 261, 262, 263, 0, 264, 265, 0, + 266, 267, 268, 915, 270, 271, 916, 917, 273, 0, + 274, 918, 276, 0, 277, 0, 278, 678, 2030, 679, + 279, 280, 0, 281, 919, 0, 283, 0, 284, 285, + 286, 287, 288, 680, 289, 290, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 681, 298, 299, 300, 301, + 302, 920, 921, 0, 922, 0, 306, 682, 683, 307, + 684, 308, 309, 310, 311, 312, 313, 314, 0, 923, + 685, 316, 686, 0, 317, 318, 319, 924, 925, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 926, 687, 927, 637, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 928, 344, 345, 688, 346, + 929, 930, 348, 931, 350, 351, 0, 0, 352, 638, + 0, 0, 932, 354, 355, 0, 0, 356, 689, 690, + 691, 933, 358, 359, 360, 361, 362, 363, 0, 364, + 934, 366, 367, 368, 369, 370, 0, 371, 372, 373, + 374, 375, 376, 377, 935, 379, 380, 381, 0, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 0, + 392, 393, 692, 394, 395, 936, 397, 398, 399, 400, + 401, 402, 403, 404, 0, 405, 406, 407, 408, 937, + 409, 410, 411, 412, 693, 413, 938, 0, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 939, 426, + 0, 427, 428, 0, 429, 430, 431, 432, 433, 0, + 940, 941, 0, 0, 436, 942, 438, 943, 944, 440, + 441, 442, 443, 444, 445, 0, 945, 446, 447, 448, + 449, 946, 0, 450, 451, 452, 453, 454, 947, 0, + 456, 694, 457, 458, 459, 0, 0, 460, 0, 0, + 461, 462, 463, 464, 465, 466, 948, 949, 950, 951, + 952, 953, 954, 474, 475, 476, 0, 0, 0, 695, + 955, 585, 956, 957, 958, 568, 959, 0, 0, 0, + 0, 960, 961, 0, 0, 0, 0, 0, 0, 0, + 963, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 896, 0, 0, + 197, 198, 0, 199, 673, 200, 201, 202, 674, 897, + 675, 898, 899, 0, 206, 207, 208, 209, 210, 900, + 901, 211, 212, 902, 903, 215, 0, 216, 217, 218, + 219, 904, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 676, 236, 237, 905, 906, 907, 908, 909, 910, + 911, 238, 239, 240, 241, 242, 243, 912, 913, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 914, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 915, 270, 271, 916, 917, 273, 0, 274, 918, 276, + 0, 277, 0, 278, 678, 0, 679, 279, 280, 0, + 281, 919, 0, 283, 0, 284, 285, 286, 287, 288, + 680, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 681, 298, 299, 300, 301, 302, 920, 921, + 0, 922, 0, 306, 682, 683, 307, 684, 308, 309, + 310, 311, 312, 313, 314, 0, 923, 685, 316, 686, + 0, 317, 318, 319, 924, 925, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 926, + 687, 927, 637, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 928, 344, 345, 688, 346, 929, 930, 348, + 931, 350, 351, 0, 0, 352, 638, 0, 0, 932, + 354, 355, 0, 0, 356, 689, 690, 691, 933, 358, + 359, 360, 361, 362, 363, 0, 364, 934, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 935, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 692, + 394, 395, 936, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 937, 409, 410, 411, + 412, 693, 413, 938, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 939, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 940, 941, 0, + 0, 436, 942, 438, 943, 944, 440, 441, 442, 443, + 444, 445, 0, 945, 446, 447, 448, 449, 946, 0, + 450, 451, 452, 453, 454, 947, 2980, 456, 694, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 948, 949, 950, 951, 952, 953, 954, + 474, 475, 476, 0, 0, 0, 695, 955, 585, 956, + 957, 958, 568, 959, 0, 0, 0, 0, 960, 961, + 0, 0, 0, 0, 0, 0, 0, 963, 185, 186, + 187, 188, 189, 190, 191, 192, 0, 194, 195, 196, + 0, 0, 0, 0, 896, 0, 0, 197, 198, 0, + 199, 673, 200, 201, 202, 674, 897, 675, 898, 899, + 0, 206, 207, 208, 209, 210, 900, 901, 211, 212, + 902, 903, 215, 0, 216, 217, 218, 219, 904, 0, + 0, 221, 222, 223, 224, 225, 226, 0, 227, 228, + 229, 230, 231, 232, 0, 233, 234, 235, 676, 236, + 237, 905, 906, 907, 908, 909, 910, 911, 238, 239, + 240, 241, 242, 243, 912, 913, 246, 0, 247, 0, + 248, 249, 250, 251, 252, 0, 253, 254, 255, 0, + 0, 256, 257, 914, 259, 260, 0, 261, 262, 263, + 0, 264, 265, 0, 266, 267, 268, 915, 270, 271, + 916, 917, 273, 0, 274, 918, 276, 0, 277, 0, + 278, 678, 0, 679, 279, 280, 0, 281, 919, 0, + 283, 0, 284, 285, 286, 287, 288, 680, 289, 290, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 681, + 298, 299, 300, 301, 302, 920, 921, 0, 922, 0, + 306, 682, 683, 307, 684, 308, 309, 310, 311, 312, + 313, 314, 0, 923, 685, 316, 686, 0, 317, 318, + 319, 924, 925, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 926, 687, 927, 637, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 928, + 344, 345, 688, 346, 929, 930, 348, 931, 350, 351, + 0, 0, 352, 638, 0, 0, 932, 354, 355, 0, + 0, 356, 689, 690, 691, 933, 358, 359, 360, 361, + 362, 363, 0, 364, 934, 366, 367, 368, 369, 370, + 0, 371, 372, 373, 374, 375, 376, 377, 935, 379, + 380, 381, 0, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 0, 392, 393, 692, 394, 395, 936, + 397, 398, 399, 400, 401, 402, 403, 404, 0, 405, + 406, 407, 408, 937, 409, 410, 411, 412, 693, 413, + 938, 0, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 939, 426, 0, 427, 428, 0, 429, 430, + 431, 432, 433, 0, 940, 941, 0, 0, 436, 942, + 438, 943, 944, 440, 441, 442, 443, 444, 445, 0, + 945, 446, 447, 448, 449, 946, 0, 450, 451, 452, + 453, 454, 947, 0, 456, 694, 457, 458, 459, 0, + 0, 460, 0, 0, 461, 462, 463, 464, 465, 466, + 948, 949, 950, 951, 952, 953, 954, 474, 475, 476, + 0, 0, 0, 695, 955, 585, 956, 957, 958, 568, + 959, 0, 0, 0, 0, 960, 961, 0, 0, 0, + 0, 0, 0, 0, 963, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 896, 0, 0, 197, 198, 0, 199, 673, 200, + 201, 202, 674, 897, 675, 898, 899, 0, 206, 207, + 208, 209, 210, 900, 901, 211, 212, 902, 903, 215, + 0, 216, 217, 218, 219, 904, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 676, 236, 2441, 905, 906, + 907, 908, 909, 910, 911, 238, 239, 240, 241, 242, + 243, 912, 913, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 914, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 915, 270, 271, 916, 917, 273, + 0, 274, 918, 276, 0, 277, 0, 278, 678, 0, + 679, 279, 280, 0, 281, 919, 0, 283, 0, 284, + 285, 286, 287, 288, 680, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 681, 298, 299, 300, + 301, 302, 920, 921, 0, 922, 0, 306, 682, 683, + 307, 684, 308, 309, 310, 311, 312, 313, 314, 0, + 923, 685, 316, 686, 0, 317, 318, 319, 924, 925, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 926, 687, 927, 637, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 928, 344, 345, 688, + 346, 929, 930, 348, 931, 350, 351, 0, 0, 352, + 638, 0, 0, 932, 354, 355, 0, 0, 356, 689, + 690, 691, 933, 358, 359, 360, 361, 362, 363, 0, + 364, 934, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 935, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 692, 394, 395, 936, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 937, 409, 410, 411, 412, 693, 413, 938, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 939, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 940, 941, 0, 0, 436, 942, 438, 943, 944, + 440, 441, 442, 443, 444, 445, 0, 945, 446, 447, + 448, 449, 946, 0, 450, 451, 452, 453, 454, 947, + 0, 456, 694, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 948, 949, 950, + 951, 952, 953, 954, 474, 475, 476, 0, 0, 0, + 695, 955, 585, 956, 957, 958, 568, 959, 0, 0, + 0, 0, 960, 961, 0, 0, 0, 0, 0, 0, + 0, 963, 185, 186, 187, 188, 189, 190, 191, 192, + 0, 194, 195, 196, 0, 0, 0, 0, 896, 0, + 0, 197, 198, 0, 199, 673, 200, 201, 202, 674, + 897, 675, 898, 899, 0, 206, 207, 208, 209, 210, + 900, 901, 211, 212, 902, 903, 215, 0, 216, 217, + 218, 219, 904, 0, 0, 221, 222, 223, 224, 225, + 226, 0, 227, 228, 229, 230, 231, 232, 0, 233, + 234, 235, 676, 236, 237, 905, 906, 907, 908, 909, + 910, 911, 238, 239, 240, 241, 242, 243, 912, 913, + 246, 0, 247, 0, 248, 249, 250, 251, 252, 0, + 253, 254, 255, 0, 0, 256, 257, 914, 259, 260, + 0, 261, 262, 263, 0, 264, 265, 0, 266, 267, + 268, 915, 270, 271, 916, 917, 273, 0, 274, 918, + 276, 0, 277, 0, 278, 678, 0, 679, 279, 280, + 0, 281, 919, 0, 283, 0, 284, 285, 286, 287, + 288, 680, 289, 290, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 681, 298, 299, 300, 301, 302, 920, + 921, 0, 922, 0, 306, 682, 683, 307, 684, 308, + 309, 310, 311, 312, 313, 314, 0, 923, 685, 316, + 686, 0, 317, 318, 319, 924, 925, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 926, 687, 927, 637, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 928, 344, 345, 688, 346, 929, 930, + 348, 931, 350, 351, 0, 0, 352, 638, 0, 0, + 932, 354, 355, 0, 0, 356, 689, 690, 691, 933, + 358, 359, 360, 361, 362, 363, 0, 364, 934, 366, + 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, + 376, 377, 935, 379, 380, 381, 0, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 0, 392, 393, + 692, 394, 395, 936, 397, 398, 399, 400, 401, 402, + 403, 404, 0, 405, 406, 407, 408, 937, 409, 410, + 411, 412, 693, 413, 938, 0, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 939, 426, 0, 427, + 428, 0, 429, 430, 431, 432, 433, 0, 940, 941, + 0, 0, 436, 942, 438, 943, 944, 440, 441, 442, + 443, 444, 445, 0, 945, 446, 447, 448, 449, 946, + 0, 450, 451, 452, 453, 454, 947, 0, 456, 694, + 457, 458, 459, 0, 0, 460, 0, 0, 461, 462, + 463, 464, 465, 3189, 948, 949, 950, 951, 952, 953, + 954, 474, 475, 476, 0, 0, 0, 695, 955, 585, + 956, 957, 958, 568, 959, 0, 0, 0, 0, 960, + 961, 0, 0, 0, 0, 0, 0, 0, 963, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 896, 0, 0, 197, 198, + 0, 199, 673, 200, 201, 202, 674, 897, 675, 898, + 899, 0, 206, 207, 208, 209, 210, 900, 901, 211, + 212, 902, 903, 215, 0, 216, 217, 218, 219, 904, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 676, + 236, 237, 905, 906, 907, 908, 909, 910, 911, 238, + 239, 240, 241, 242, 243, 912, 913, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 914, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 915, 270, + 271, 916, 917, 273, 0, 274, 918, 276, 0, 277, + 0, 278, 678, 0, 679, 279, 280, 0, 281, 919, + 0, 283, 0, 284, 285, 286, 287, 288, 680, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 681, 298, 299, 300, 301, 302, 920, 921, 0, 922, + 0, 306, 682, 683, 307, 684, 308, 309, 310, 311, + 312, 313, 314, 0, 923, 685, 316, 686, 0, 317, + 318, 319, 924, 925, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 926, 687, 927, + 637, 335, 3196, 337, 338, 339, 340, 341, 342, 343, + 928, 344, 345, 688, 346, 929, 930, 348, 931, 350, + 351, 0, 0, 352, 638, 0, 0, 932, 354, 355, + 0, 0, 356, 689, 690, 691, 933, 358, 359, 360, + 361, 362, 363, 0, 364, 934, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 935, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 692, 394, 395, + 936, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 937, 409, 410, 411, 412, 693, + 413, 938, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 939, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 940, 941, 0, 0, 436, + 942, 438, 943, 944, 440, 441, 442, 443, 444, 445, + 0, 945, 446, 447, 448, 449, 946, 0, 450, 451, + 452, 453, 454, 947, 0, 456, 694, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 948, 949, 950, 951, 952, 953, 954, 474, 475, + 476, 0, 0, 0, 695, 955, 585, 956, 957, 958, + 568, 959, 0, 0, 0, 0, 960, 961, 0, 0, + 0, 0, 0, 0, 0, 963, 185, 186, 187, 188, + 189, 190, 191, 192, 0, 194, 195, 196, 0, 0, + 0, 0, 896, 0, 0, 197, 198, 0, 199, 673, + 200, 201, 202, 674, 897, 675, 898, 899, 0, 206, + 207, 208, 209, 210, 900, 901, 211, 212, 902, 903, + 215, 0, 216, 217, 218, 219, 904, 0, 0, 221, + 222, 223, 224, 225, 226, 0, 227, 228, 229, 230, + 231, 232, 0, 233, 234, 235, 676, 236, 237, 905, + 906, 907, 908, 909, 910, 911, 238, 239, 240, 241, + 242, 243, 912, 913, 246, 0, 247, 0, 248, 249, + 250, 251, 252, 0, 253, 254, 255, 0, 0, 256, + 257, 914, 259, 260, 0, 261, 262, 263, 0, 264, + 265, 0, 266, 267, 268, 915, 270, 271, 916, 917, + 273, 0, 274, 918, 276, 0, 277, 0, 278, 678, + 0, 679, 279, 280, 0, 281, 919, 0, 283, 0, + 284, 285, 286, 287, 288, 680, 289, 290, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 681, 298, 299, + 300, 301, 302, 920, 921, 0, 922, 0, 306, 682, + 683, 307, 684, 308, 309, 310, 311, 312, 313, 314, + 0, 923, 685, 316, 686, 0, 317, 318, 319, 924, + 925, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 926, 687, 927, 637, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 0, 344, 345, + 688, 346, 929, 930, 348, 931, 350, 351, 0, 0, + 352, 638, 0, 0, 932, 354, 355, 0, 0, 356, + 689, 690, 691, 933, 358, 359, 360, 361, 362, 363, + 0, 364, 934, 366, 367, 368, 369, 370, 0, 371, + 372, 373, 374, 375, 376, 377, 935, 379, 380, 381, + 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 0, 392, 393, 692, 394, 395, 936, 397, 398, + 399, 400, 401, 402, 403, 404, 0, 405, 406, 407, + 408, 937, 409, 410, 411, 412, 693, 413, 938, 0, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 939, 426, 0, 427, 428, 0, 429, 430, 431, 432, + 433, 0, 940, 941, 0, 0, 436, 942, 438, 943, + 944, 440, 441, 442, 443, 444, 445, 0, 0, 446, + 447, 448, 449, 946, 0, 450, 451, 452, 453, 454, + 947, 0, 456, 694, 457, 458, 459, 0, 0, 460, + 0, 0, 461, 462, 463, 464, 465, 466, 948, 949, + 950, 951, 952, 953, 954, 474, 475, 476, 0, 0, + 0, 695, 955, 585, 956, 957, 958, 568, 959, 0, + 0, 0, 0, 2012, 2013, 0, 0, 0, 0, 0, + 0, 0, 963, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 896, + 0, 0, 197, 198, 0, 199, 673, 200, 201, 202, + 0, 897, 675, 898, 899, 0, 206, 207, 208, 209, + 210, 900, 901, 211, 212, 902, 903, 215, 0, 216, + 217, 218, 219, 904, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 676, 236, 237, 905, 906, 907, 908, + 909, 910, 911, 238, 239, 240, 241, 242, 243, 912, + 913, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 914, 259, + 260, 0, 261, 262, 263, 0, 264, 0, 0, 266, + 267, 268, 915, 270, 271, 916, 917, 273, 0, 274, + 918, 276, 0, 277, 0, 278, 678, 0, 679, 279, + 280, 0, 281, 919, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 681, 298, 299, 300, 301, 302, + 920, 921, 0, 922, 0, 306, 682, 683, 307, 684, + 308, 309, 310, 311, 312, 313, 314, 0, 923, 685, + 316, 0, 0, 317, 318, 319, 924, 925, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 926, 687, 927, 637, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 688, 346, 929, + 930, 348, 931, 350, 351, 0, 0, 352, 638, 0, + 0, 932, 354, 355, 0, 0, 356, 689, 690, 691, + 933, 358, 359, 360, 361, 362, 363, 0, 364, 934, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 935, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 692, 394, 395, 936, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 937, 409, + 410, 411, 412, 0, 413, 938, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 939, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 940, + 941, 0, 0, 436, 942, 438, 943, 944, 440, 441, + 442, 443, 444, 445, 0, 945, 446, 447, 448, 449, + 946, 0, 450, 451, 452, 453, 454, 947, 0, 456, + 694, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 948, 949, 950, 951, 952, + 953, 954, 474, 475, 476, 0, 0, 0, 695, 955, + 585, 956, 957, 958, 568, 959, 0, 0, 0, 0, + 960, 961, 0, 0, 0, 0, 0, 0, 0, 963, + 185, 186, 187, 188, 189, 190, 191, 192, 0, 194, + 195, 196, 0, 0, 0, 0, 896, 0, 0, 197, + 198, 0, 199, 673, 200, 201, 202, 0, 897, 675, + 898, 899, 0, 206, 207, 208, 209, 210, 900, 901, + 211, 212, 902, 903, 215, 0, 216, 217, 218, 219, + 904, 0, 0, 221, 222, 223, 224, 225, 226, 0, + 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, + 676, 236, 237, 905, 906, 907, 908, 909, 910, 911, + 238, 239, 240, 241, 242, 243, 912, 913, 246, 0, + 247, 0, 248, 249, 250, 251, 252, 0, 253, 254, + 255, 0, 0, 256, 257, 914, 259, 260, 0, 261, + 262, 263, 0, 264, 0, 0, 266, 267, 268, 915, + 270, 271, 916, 917, 273, 0, 274, 918, 276, 0, + 277, 0, 278, 678, 0, 679, 279, 280, 0, 281, + 919, 0, 283, 0, 284, 285, 286, 287, 288, 0, + 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 681, 298, 299, 300, 301, 302, 920, 921, 0, + 922, 0, 306, 682, 683, 307, 684, 308, 309, 310, + 311, 312, 313, 314, 0, 923, 685, 316, 0, 0, + 317, 318, 319, 924, 925, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 926, 687, + 927, 637, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 0, 344, 345, 688, 346, 929, 930, 348, 931, + 350, 351, 0, 0, 352, 638, 0, 0, 932, 354, + 355, 0, 0, 356, 689, 690, 691, 933, 358, 359, + 360, 361, 362, 363, 0, 364, 934, 366, 367, 368, + 369, 370, 0, 371, 372, 373, 374, 375, 376, 377, + 935, 379, 380, 381, 0, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 0, 392, 393, 692, 394, + 395, 936, 397, 398, 399, 400, 401, 402, 403, 404, + 0, 405, 406, 407, 408, 937, 409, 410, 411, 412, + 0, 413, 938, 0, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 939, 426, 0, 427, 428, 0, + 429, 430, 431, 432, 433, 0, 940, 941, 0, 0, + 436, 942, 438, 943, 944, 440, 441, 442, 443, 444, + 445, 0, 0, 446, 447, 448, 449, 946, 0, 450, + 451, 452, 453, 454, 947, 0, 456, 694, 457, 458, + 459, 0, 0, 460, 0, 0, 461, 462, 463, 464, + 465, 466, 948, 949, 950, 951, 952, 953, 954, 474, + 475, 476, 0, 0, 0, 695, 955, 585, 956, 957, + 958, 568, 959, 0, 0, 0, 0, 2012, 2013, 0, + 0, 0, 0, 0, 0, 0, 963, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 673, 200, 201, 202, 674, 203, 675, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 901, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 904, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 676, 236, 237, + 905, 906, 907, 908, 909, 910, 911, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 916, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 678, 0, 679, 279, 280, 0, 281, 919, 0, 283, + 0, 284, 285, 286, 287, 288, 680, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 681, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 682, 683, 307, 684, 308, 309, 310, 311, 312, 313, + 314, 0, 923, 685, 316, 686, 0, 317, 318, 319, + 924, 925, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 687, 334, 637, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 688, 346, 0, 930, 348, 349, 350, 351, 0, + 0, 352, 638, 0, 639, 353, 354, 355, 0, 0, + 356, 689, 690, 691, 933, 358, 359, 360, 361, 362, + 363, 0, 364, 934, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 692, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 37, 405, 406, + 407, 408, 937, 409, 410, 411, 412, 693, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 939, 426, 0, 427, 428, 41, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 942, 438, + 943, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 946, 0, 450, 451, 452, 453, + 1427, 455, 0, 456, 694, 457, 458, 459, 0, 0, + 460, 0, 47, 461, 462, 463, 464, 465, 466, 948, + 949, 950, 951, 952, 953, 954, 474, 475, 476, 0, + 0, 0, 695, 0, 0, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 1885, 197, 198, 0, 199, 673, 200, + 201, 202, 674, 203, 675, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 901, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 904, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 676, 236, 237, 905, 906, + 907, 908, 909, 910, 911, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 916, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 678, 0, + 679, 279, 280, 0, 281, 919, 0, 283, 0, 284, + 285, 286, 287, 288, 680, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 681, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 682, 683, + 307, 684, 308, 309, 310, 311, 312, 313, 314, 0, + 923, 685, 316, 686, 0, 317, 318, 319, 924, 925, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 687, 334, 637, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 688, + 346, 0, 930, 348, 349, 350, 351, 0, 0, 352, + 638, 0, 639, 353, 354, 355, 0, 0, 356, 689, + 690, 691, 933, 358, 359, 360, 361, 362, 363, 0, + 364, 934, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 692, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 937, 409, 410, 411, 412, 693, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 939, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 942, 438, 943, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 946, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 694, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 948, 949, 950, + 951, 952, 953, 954, 474, 475, 476, 0, 0, 0, + 695, 0, 0, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 1885, 197, 198, 0, 199, 673, 200, 201, 202, + 674, 203, 675, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 901, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 904, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 676, 236, 237, 905, 906, 907, 908, + 909, 910, 911, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 916, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 678, 0, 679, 279, + 280, 0, 281, 919, 0, 283, 0, 284, 285, 286, + 287, 288, 680, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 681, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 682, 683, 307, 684, + 308, 309, 310, 311, 312, 313, 314, 0, 923, 685, + 316, 686, 0, 317, 318, 319, 924, 925, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 687, 334, 637, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 688, 346, 0, + 930, 348, 349, 350, 351, 0, 0, 352, 638, 0, + 0, 353, 354, 355, 0, 0, 356, 689, 690, 691, + 933, 358, 359, 360, 361, 362, 363, 0, 364, 934, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 692, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 937, 409, + 410, 411, 412, 693, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 939, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 942, 438, 943, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 946, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 694, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 948, 949, 950, 951, 952, + 953, 954, 474, 475, 476, 0, 0, 0, 695, 0, + 0, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 3316, + 197, 198, 0, 199, 673, 200, 201, 202, 674, 203, + 675, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 676, 236, 237, 0, 0, 0, 677, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 678, 0, 679, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 680, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 681, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 682, 683, 307, 684, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 685, 316, 686, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 687, 334, 637, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 688, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 638, 0, 0, 353, + 354, 355, 0, 0, 356, 689, 690, 691, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 692, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 693, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 694, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 695, 0, 0, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 3377, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 37, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 41, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 1427, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 47, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 0, 0, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 48, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 637, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 638, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 0, 0, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 1017, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 0, 0, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 1603, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 0, + 0, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 2857, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 520, 521, 0, 0, 0, 522, 0, - 0, 0, 0, 0, 0, 0, 523, 0, 0, 0, - 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 526 + 0, 0, 0, 0, 0, 0, 0, 2975, 185, 186, + 187, 188, 189, 190, 191, 192, 1511, 194, 195, 196, + 1512, 1513, 1514, 1515, 1516, 1517, 1518, 197, 198, 1519, + 199, 673, 200, 201, 202, 674, 1196, 675, 1197, 1198, + 1520, 206, 207, 208, 209, 210, 1521, 1522, 211, 212, + 1199, 1200, 215, 1523, 216, 217, 218, 219, 0, 1524, + 1525, 221, 222, 223, 224, 225, 226, 1526, 227, 228, + 229, 230, 231, 232, 1527, 233, 234, 235, 676, 236, + 237, 1528, 1529, 1530, 677, 1531, 1532, 1533, 238, 239, + 240, 241, 242, 243, 1201, 1202, 246, 1534, 247, 1535, + 248, 249, 250, 251, 252, 1536, 253, 254, 255, 1537, + 1538, 256, 257, 914, 259, 260, 1539, 261, 262, 263, + 1540, 264, 265, 1541, 266, 267, 268, 0, 270, 271, + 0, 1542, 273, 1543, 274, 1203, 276, 1544, 277, 1545, + 278, 678, 1546, 679, 279, 280, 1547, 281, 0, 1548, + 283, 1549, 284, 285, 286, 287, 288, 680, 289, 290, + 291, 1550, 292, 293, 294, 295, 296, 297, 1551, 681, + 0, 299, 300, 301, 302, 1204, 1205, 1552, 1206, 1553, + 306, 682, 683, 307, 684, 308, 309, 310, 311, 312, + 313, 314, 1554, 0, 685, 316, 686, 1555, 317, 318, + 319, 1556, 1557, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 1207, 687, 1208, 1558, + 335, 336, 337, 338, 339, 340, 341, 0, 343, 1559, + 344, 345, 688, 346, 1560, 0, 348, 1209, 350, 351, + 1561, 1562, 352, 1563, 1564, 1565, 2743, 354, 355, 1566, + 1567, 0, 689, 690, 691, 0, 358, 359, 360, 361, + 362, 363, 1568, 364, 0, 366, 0, 368, 369, 370, + 1569, 371, 372, 373, 374, 375, 376, 377, 1210, 379, + 380, 381, 1570, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 1571, 392, 393, 692, 394, 395, 0, + 397, 398, 399, 400, 401, 402, 403, 404, 1572, 405, + 406, 407, 408, 1573, 409, 1690, 411, 412, 693, 413, + 1212, 1574, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 0, 426, 1575, 427, 428, 1576, 429, 430, + 431, 432, 433, 1577, 1213, 1214, 1578, 1579, 436, 0, + 438, 0, 1580, 440, 441, 442, 443, 444, 445, 1581, + 1582, 446, 447, 448, 449, 1583, 1584, 450, 451, 452, + 453, 0, 1215, 1585, 456, 694, 457, 458, 459, 1586, + 1587, 460, 1588, 1589, 461, 462, 463, 464, 465, 0, + 0, 0, 0, 0, 0, 0, 0, 474, 475, 476, + 0, 0, 0, 1216, 1485, 585, 0, 0, 714, 568, + 0, 715, 716, 717, 0, 2744, 2745, 720, 721, 722, + 723, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 712, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 713, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 0, 0, 0, + 0, 714, 0, 0, 715, 716, 717, 0, 718, 719, + 720, 721, 722, 723, 185, 186, 187, 188, 189, 190, + 191, 192, 0, 194, 195, 196, 0, 0, 0, 0, + 0, 0, 0, 197, 198, 0, 199, 0, 200, 201, + 202, 0, 203, 0, 204, 205, 0, 206, 207, 208, + 209, 210, 0, 0, 211, 212, 213, 214, 215, 0, + 216, 787, 218, 219, 220, 0, 0, 221, 222, 223, + 224, 225, 226, 0, 227, 228, 229, 230, 231, 232, + 0, 233, 234, 235, 0, 236, 237, 0, 0, 0, + 0, 0, 0, 0, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 0, 247, 0, 248, 249, 250, 251, + 252, 0, 253, 254, 255, 0, 0, 256, 257, 258, + 259, 260, 0, 261, 262, 263, 0, 264, 265, 0, + 266, 267, 268, 269, 270, 271, 272, 0, 788, 0, + 274, 275, 276, 0, 277, 0, 278, 0, 0, 0, + 279, 280, 0, 281, 282, 0, 283, 0, 284, 285, + 286, 287, 288, 0, 289, 290, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 0, 298, 299, 300, 301, + 302, 303, 304, 0, 305, 0, 306, 0, 0, 307, + 0, 308, 309, 310, 311, 312, 313, 314, 0, 315, + 0, 316, 0, 0, 317, 318, 319, 0, 0, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 0, 334, 0, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 0, 344, 345, 0, 346, + 0, 347, 348, 349, 350, 351, 0, 0, 352, 0, + 0, 0, 353, 354, 355, 0, 0, 356, 0, 0, + 0, 357, 358, 359, 360, 361, 362, 363, 0, 364, + 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 0, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 0, + 392, 393, 0, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 0, 405, 406, 407, 408, 0, + 409, 410, 411, 412, 0, 413, 414, 0, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 0, 427, 428, 0, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 439, 0, 440, + 441, 442, 443, 444, 445, 0, 0, 446, 447, 448, + 449, 0, 0, 450, 451, 452, 453, 454, 455, 0, + 456, 0, 457, 458, 459, 0, 0, 460, 0, 0, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 0, 0, 0, 477, + 0, 0, 0, 0, 714, 0, 0, 715, 716, 717, + 0, 718, 719, 720, 721, 722, 723, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 826, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 827, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 828, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 0, 0, 0, 0, 714, 0, 0, + 715, 716, 717, 0, 718, 719, 720, 721, 722, 723, + 185, 186, 187, 188, 189, 190, 191, 192, 0, 194, + 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, + 198, 0, 199, 0, 200, 201, 202, 0, 203, 0, + 204, 205, 0, 206, 207, 208, 209, 210, 0, 0, + 211, 212, 213, 214, 215, 0, 216, 1179, 218, 219, + 220, 0, 0, 221, 222, 223, 224, 225, 226, 0, + 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, + 0, 236, 237, 0, 0, 0, 0, 0, 0, 0, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 0, + 247, 0, 248, 249, 250, 251, 252, 0, 253, 254, + 255, 0, 0, 256, 257, 258, 259, 260, 0, 261, + 262, 263, 0, 264, 265, 0, 266, 267, 268, 269, + 270, 271, 272, 0, 1180, 0, 274, 275, 276, 0, + 277, 0, 278, 0, 0, 0, 279, 280, 0, 281, + 282, 0, 283, 0, 284, 285, 286, 287, 288, 0, + 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 0, 298, 299, 300, 301, 302, 303, 304, 0, + 305, 0, 306, 0, 0, 307, 0, 308, 309, 310, + 311, 312, 313, 314, 0, 315, 0, 316, 0, 0, + 317, 318, 319, 0, 0, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, + 334, 0, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 0, 344, 345, 0, 346, 0, 347, 348, 349, + 350, 351, 0, 0, 352, 0, 0, 0, 353, 354, + 355, 0, 0, 356, 0, 0, 0, 357, 358, 359, + 360, 361, 362, 363, 0, 364, 365, 366, 367, 368, + 369, 370, 0, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 0, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 0, 392, 393, 0, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 0, 405, 406, 407, 408, 0, 409, 410, 411, 412, + 0, 413, 414, 0, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 0, 427, 428, 0, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 439, 0, 440, 441, 442, 443, 444, + 445, 0, 0, 446, 447, 448, 449, 0, 0, 450, + 451, 452, 453, 454, 455, 0, 456, 0, 457, 458, + 459, 0, 0, 460, 0, 0, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 0, 0, 0, 477, 0, 0, 0, 0, + 714, 0, 0, 715, 716, 717, 0, 718, 719, 720, + 721, 722, 723, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 0, + 0, 0, 0, 714, 0, 0, 715, 716, 717, 0, + 718, 719, 720, 721, 722, 723, 185, 186, 187, 188, + 189, 190, 191, 192, 1511, 194, 195, 196, 1512, 1513, + 1514, 1515, 1516, 1517, 1518, 197, 198, 1519, 199, 673, + 200, 201, 202, 674, 203, 675, 204, 205, 1520, 206, + 207, 208, 209, 210, 1521, 1522, 211, 212, 213, 214, + 215, 1523, 216, 217, 218, 219, 220, 1524, 1525, 221, + 222, 223, 224, 225, 226, 1526, 227, 228, 229, 230, + 231, 232, 1527, 233, 234, 235, 676, 236, 237, 1528, + 1529, 1530, 677, 1531, 1532, 1533, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 1534, 247, 1535, 248, 249, + 250, 251, 252, 1536, 253, 254, 255, 1537, 1538, 256, + 257, 258, 259, 260, 1539, 261, 262, 263, 1540, 264, + 265, 1541, 266, 267, 268, 269, 270, 271, 272, 1542, + 273, 1543, 274, 275, 276, 1544, 277, 1545, 278, 678, + 1546, 679, 279, 280, 1547, 281, 282, 1548, 283, 1549, + 284, 285, 286, 287, 288, 680, 289, 290, 291, 1550, + 292, 293, 294, 295, 296, 297, 1551, 681, 298, 299, + 300, 301, 302, 303, 304, 1552, 305, 1553, 306, 682, + 683, 307, 684, 308, 309, 310, 311, 312, 313, 314, + 1554, 315, 685, 316, 686, 1555, 317, 318, 319, 1556, + 1557, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 687, 334, 1558, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 1559, 344, 345, + 688, 346, 1560, 347, 348, 349, 350, 351, 1561, 1562, + 352, 1563, 1564, 1565, 353, 354, 355, 1566, 1567, 356, + 689, 690, 691, 357, 358, 359, 360, 361, 362, 363, + 1568, 364, 365, 366, 367, 368, 369, 370, 1569, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 1570, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 1571, 392, 393, 692, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 1572, 405, 406, 407, + 408, 1573, 409, 410, 411, 412, 693, 413, 414, 1574, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 1575, 427, 428, 1576, 429, 430, 431, 432, + 433, 1577, 434, 435, 1578, 1579, 436, 437, 438, 439, + 1580, 440, 441, 442, 443, 444, 445, 1581, 1582, 446, + 447, 448, 449, 1583, 1584, 450, 451, 452, 453, 454, + 455, 1585, 456, 694, 457, 458, 459, 1586, 1587, 460, + 1588, 1589, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 0, 0, + 0, 1590, 185, 186, 187, 188, 189, 190, 191, 192, + 0, 194, 195, 196, 0, 1591, 0, 0, 0, 0, + 0, 197, 198, 0, 199, 0, 200, 201, 202, 0, + 203, 0, 204, 205, 0, 206, 207, 208, 209, 210, + 0, 0, 211, 212, 213, 214, 215, 0, 216, 217, + 218, 219, 220, 0, 0, 221, 222, 223, 224, 225, + 226, 0, 227, 228, 229, 230, 231, 232, 0, 233, + 234, 235, 0, 236, 237, 0, 0, 0, 0, 0, + 0, 0, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 0, 247, 0, 248, 249, 250, 251, 252, 0, + 253, 254, 255, 0, 0, 256, 257, 258, 259, 260, + 0, 261, 262, 263, 0, 264, 265, 0, 266, 267, + 268, 269, 270, 271, 272, 0, 273, 0, 274, 275, + 276, 0, 277, 0, 278, 0, 0, 0, 279, 280, + 0, 281, 282, 0, 283, 0, 284, 285, 286, 287, + 288, 0, 289, 290, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 0, 298, 299, 300, 301, 302, 303, + 304, 0, 305, 0, 306, 0, 0, 307, 0, 308, + 309, 310, 311, 312, 313, 314, 0, 315, 0, 316, + 0, 0, 317, 318, 319, 0, 0, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 0, 334, 0, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 0, 344, 345, 0, 346, 0, 347, + 348, 349, 350, 351, 0, 0, 352, 0, 0, 0, + 353, 354, 355, 0, 0, 356, 0, 0, 0, 357, + 358, 359, 360, 361, 362, 363, 0, 364, 365, 366, + 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 0, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 0, 392, 393, + 0, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 0, 405, 406, 407, 408, 0, 409, 410, + 411, 412, 0, 413, 414, 0, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 0, 427, + 428, 0, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 439, 0, 440, 441, 442, + 443, 444, 445, 0, 0, 446, 447, 448, 449, 0, + 0, 450, 451, 452, 453, 454, 455, 0, 456, 0, + 457, 458, 459, 0, 0, 460, 0, 0, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 0, 0, 0, 477, 185, 186, + 187, 188, 189, 190, 191, 192, 0, 194, 195, 196, + 0, 646, 0, 0, 0, 0, 0, 197, 198, 0, + 199, 673, 200, 201, 202, 674, 1196, 675, 1197, 1198, + 0, 206, 207, 208, 209, 210, 0, 0, 211, 212, + 1199, 1200, 215, 0, 216, 217, 218, 219, 0, 0, + 0, 221, 222, 223, 224, 225, 226, 0, 227, 228, + 229, 230, 231, 232, 0, 233, 234, 235, 676, 236, + 237, 0, 0, 0, 677, 0, 0, 0, 238, 239, + 240, 241, 242, 243, 1201, 1202, 246, 0, 247, 0, + 248, 249, 250, 251, 252, 0, 253, 254, 255, 0, + 0, 256, 257, 914, 259, 260, 0, 261, 262, 263, + 0, 264, 265, 0, 266, 267, 268, 0, 270, 271, + 0, 0, 273, 0, 274, 1203, 276, 0, 277, 0, + 278, 678, 0, 679, 279, 280, 0, 281, 0, 0, + 283, 0, 284, 285, 286, 287, 288, 680, 289, 290, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 681, + 0, 299, 300, 301, 302, 1204, 1205, 0, 1206, 0, + 306, 682, 683, 307, 684, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 685, 316, 686, 0, 317, 318, + 319, 0, 0, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 1207, 687, 1208, 0, + 335, 336, 337, 338, 339, 340, 341, 0, 343, 0, + 344, 345, 688, 346, 0, 0, 348, 1209, 350, 351, + 0, 0, 352, 0, 0, 0, 353, 354, 355, 0, + 0, 0, 689, 690, 691, 0, 358, 359, 360, 361, + 362, 363, 0, 364, 0, 366, 0, 368, 369, 370, + 0, 371, 372, 373, 374, 375, 376, 377, 1210, 379, + 380, 381, 0, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 0, 392, 393, 692, 394, 395, 0, + 397, 398, 399, 400, 401, 402, 403, 404, 0, 405, + 406, 407, 408, 0, 409, 1211, 411, 412, 693, 413, + 1212, 0, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 0, 426, 0, 427, 428, 0, 429, 430, + 431, 432, 433, 0, 1213, 1214, 0, 0, 436, 0, + 438, 0, 0, 440, 441, 442, 443, 444, 445, 0, + 0, 446, 447, 448, 449, 0, 0, 450, 451, 452, + 453, 0, 1215, 0, 456, 694, 457, 458, 459, 0, + 0, 460, 0, 0, 461, 462, 463, 464, 465, 0, + 0, 0, 0, 0, 0, 0, 0, 474, 475, 476, + 0, 0, 0, 1216, 185, 186, 187, 188, 189, 190, + 191, 192, 0, 194, 195, 196, 0, 1645, 0, 0, + 0, 0, 0, 197, 198, 0, 199, 673, 200, 201, + 202, 674, 1196, 675, 1197, 1198, 0, 206, 207, 208, + 209, 210, 0, 0, 211, 212, 1199, 1200, 215, 0, + 216, 217, 218, 219, 0, 0, 0, 221, 222, 223, + 224, 225, 226, 0, 227, 228, 229, 230, 231, 232, + 0, 233, 234, 235, 676, 236, 237, 0, 0, 0, + 677, 0, 0, 0, 238, 239, 240, 241, 242, 243, + 1201, 1202, 246, 0, 247, 0, 248, 249, 250, 251, + 252, 0, 253, 254, 255, 0, 0, 256, 257, 914, + 259, 260, 0, 261, 262, 263, 0, 264, 265, 0, + 266, 267, 268, 0, 270, 271, 0, 0, 273, 0, + 274, 1203, 276, 0, 277, 0, 278, 678, 0, 679, + 279, 280, 0, 281, 0, 0, 283, 0, 284, 285, + 286, 287, 288, 680, 289, 290, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 681, 0, 299, 300, 301, + 302, 1204, 1205, 0, 1206, 0, 306, 682, 683, 307, + 684, 308, 309, 310, 311, 312, 313, 314, 0, 0, + 685, 316, 686, 0, 317, 318, 319, 0, 0, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 1207, 687, 1208, 0, 335, 336, 337, 338, + 339, 340, 341, 0, 343, 0, 344, 345, 688, 346, + 0, 0, 348, 1209, 350, 351, 0, 0, 352, 0, + 0, 0, 353, 354, 355, 0, 0, 0, 689, 690, + 691, 0, 358, 359, 360, 361, 362, 363, 0, 364, + 0, 366, 0, 368, 369, 370, 0, 371, 372, 373, + 374, 375, 376, 377, 1210, 379, 380, 381, 0, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 0, + 392, 393, 692, 394, 395, 0, 397, 398, 399, 400, + 401, 402, 403, 404, 0, 405, 406, 407, 408, 0, + 409, 1211, 411, 412, 693, 413, 1212, 0, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 0, 426, + 0, 427, 428, 0, 429, 430, 431, 432, 433, 0, + 1213, 1214, 0, 0, 436, 0, 438, 0, 0, 440, + 441, 442, 443, 444, 445, 0, 0, 446, 447, 448, + 449, 0, 0, 450, 451, 452, 453, 0, 1215, 0, + 456, 694, 457, 458, 459, 0, 0, 460, 0, 0, + 461, 462, 463, 464, 465, 0, 0, 0, 0, 0, + 0, 0, 0, 474, 475, 476, 0, 0, 0, 1806, + 185, 186, 187, 188, 189, 190, 191, 192, 0, 194, + 195, 196, 0, 1645, 0, 0, 0, 0, 0, 197, + 198, 0, 199, 0, 200, 201, 202, 0, 203, 0, + 204, 205, 0, 206, 207, 208, 209, 210, 0, 0, + 211, 212, 213, 214, 215, 0, 216, 217, 218, 219, + 220, 0, 0, 221, 222, 223, 224, 225, 226, 0, + 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, + 0, 236, 237, 0, 0, 0, 0, 0, 0, 0, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 1496, + 247, 0, 248, 249, 250, 251, 252, 0, 253, 254, + 255, 0, 0, 256, 257, 258, 259, 260, 0, 261, + 262, 263, 0, 264, 265, 0, 266, 267, 268, 269, + 270, 271, 272, 1497, 273, 0, 274, 275, 276, 0, + 277, 0, 278, 0, 0, 0, 279, 280, 0, 281, + 282, 0, 283, 0, 284, 285, 286, 287, 288, 0, + 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 0, 298, 299, 300, 301, 302, 303, 304, 0, + 305, 0, 306, 0, 0, 307, 0, 308, 309, 310, + 311, 312, 313, 314, 0, 315, 0, 316, 0, 0, + 317, 318, 319, 0, 0, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, + 334, 0, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 0, 344, 345, 0, 346, 0, 347, 348, 349, + 350, 351, 1498, 0, 352, 0, 1499, 0, 353, 354, + 355, 0, 0, 356, 0, 0, 0, 357, 358, 359, + 360, 361, 362, 363, 0, 364, 365, 366, 367, 368, + 369, 370, 0, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 0, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 0, 392, 393, 0, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 0, 405, 406, 407, 408, 0, 409, 410, 411, 412, + 0, 413, 414, 0, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 0, 427, 428, 0, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 439, 1500, 440, 441, 442, 443, 444, + 445, 0, 0, 446, 447, 448, 449, 0, 0, 450, + 451, 452, 453, 454, 455, 0, 456, 0, 457, 458, + 459, 0, 0, 460, 0, 0, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 0, 0, 0, 477, 1485, 585, 0, 0, + 0, 568, 0, 0, 0, 0, 0, 569, 1486, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 1506, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 1497, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 1498, 0, 352, 0, 1499, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 1500, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 1485, 585, 0, 0, 0, + 568, 0, 0, 0, 0, 0, 569, 1486, 185, 186, + 187, 188, 189, 190, 191, 192, 0, 194, 195, 196, + 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, + 199, 0, 200, 201, 202, 0, 203, 0, 204, 205, + 0, 206, 207, 208, 209, 210, 0, 0, 211, 212, + 213, 214, 215, 0, 216, 217, 218, 219, 220, 0, + 0, 221, 222, 223, 224, 225, 226, 0, 227, 228, + 229, 230, 231, 232, 0, 233, 234, 235, 0, 236, + 237, 0, 0, 0, 0, 0, 0, 0, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 0, 247, 0, + 248, 249, 250, 251, 252, 0, 253, 254, 255, 0, + 0, 256, 257, 258, 259, 260, 0, 261, 262, 263, + 0, 264, 265, 0, 266, 267, 268, 269, 270, 271, + 272, 1497, 273, 0, 274, 275, 276, 0, 277, 0, + 278, 0, 0, 0, 279, 280, 0, 281, 282, 0, + 283, 0, 284, 285, 286, 287, 288, 0, 289, 290, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, + 298, 299, 300, 301, 302, 303, 304, 0, 305, 0, + 306, 0, 0, 307, 0, 308, 309, 310, 311, 312, + 313, 314, 0, 315, 0, 316, 0, 0, 317, 318, + 319, 0, 0, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 0, 334, 0, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 0, + 344, 345, 0, 346, 0, 347, 348, 349, 350, 351, + 1498, 0, 352, 0, 1499, 0, 353, 354, 355, 0, + 0, 356, 0, 0, 0, 357, 358, 359, 360, 361, + 362, 363, 0, 364, 365, 366, 367, 368, 369, 370, + 0, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 0, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 0, 392, 393, 0, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 0, 405, + 406, 407, 408, 0, 409, 410, 411, 412, 0, 413, + 414, 0, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 0, 427, 428, 0, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 439, 1500, 440, 441, 442, 443, 444, 445, 0, + 0, 446, 447, 448, 449, 0, 0, 450, 451, 452, + 453, 454, 455, 0, 456, 0, 457, 458, 459, 0, + 0, 460, 0, 0, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 0, 0, 0, 477, 1485, 585, 0, 0, 0, 568, + 0, 0, 0, 0, 0, 569, 1486, 185, 559, 187, + 188, 189, 190, 191, 192, 560, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 561, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 562, 275, 276, 0, 277, 0, 563, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 564, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 565, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 566, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 567, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 0, 0, 0, 0, 0, 568, 0, + 0, 0, 0, 0, 569, 570, 185, 186, 187, 188, + 189, 190, 191, 192, 0, 194, 195, 196, 0, 0, + 0, 0, 0, 0, 0, 197, 198, 0, 199, 0, + 200, 201, 202, 0, 203, 0, 204, 205, 0, 206, + 207, 208, 209, 210, 0, 0, 211, 212, 213, 214, + 215, 0, 216, 217, 218, 219, 220, 0, 0, 221, + 222, 223, 224, 225, 226, 0, 227, 228, 229, 230, + 231, 232, 0, 233, 234, 235, 0, 236, 237, 0, + 0, 0, 0, 0, 0, 0, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 0, 247, 0, 248, 249, + 250, 251, 252, 0, 253, 254, 255, 0, 0, 256, + 257, 258, 259, 260, 0, 261, 262, 263, 0, 264, + 265, 0, 266, 267, 268, 269, 270, 271, 272, 0, + 273, 0, 274, 275, 276, 0, 277, 0, 278, 0, + 0, 0, 279, 280, 0, 281, 282, 0, 283, 0, + 284, 285, 286, 287, 288, 0, 289, 290, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 0, 298, 299, + 300, 301, 302, 303, 304, 0, 305, 0, 306, 0, + 0, 307, 0, 308, 309, 310, 311, 312, 313, 314, + 0, 315, 0, 316, 0, 0, 317, 318, 319, 0, + 0, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 334, 0, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 0, 344, 345, + 0, 346, 0, 347, 348, 349, 350, 351, 0, 0, + 352, 0, 0, 0, 353, 354, 355, 0, 0, 356, + 0, 0, 0, 357, 358, 359, 360, 361, 362, 363, + 0, 364, 365, 366, 367, 368, 369, 370, 0, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 0, 392, 393, 0, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 0, 405, 406, 407, + 408, 0, 409, 410, 411, 412, 0, 413, 414, 0, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 0, 427, 428, 0, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 439, + 0, 440, 441, 442, 443, 444, 445, 0, 0, 446, + 447, 448, 449, 0, 0, 450, 451, 452, 453, 454, + 455, 0, 456, 0, 457, 458, 459, 0, 0, 460, + 0, 0, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 0, 0, + 0, 477, 0, 0, 0, 0, 0, 0, 3165, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 3564, 585, 3565, 3566, 0, + 568, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 1479, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 0, 585, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 0, 585, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 1313, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 0, 585, 185, 186, 187, 188, 189, + 190, 191, 192, 1511, 194, 195, 196, 1512, 1513, 1514, + 1515, 1516, 1517, 1518, 197, 198, 1519, 199, 673, 200, + 201, 202, 674, 203, 675, 204, 205, 1520, 206, 207, + 208, 209, 210, 1521, 1522, 211, 212, 213, 214, 215, + 1523, 216, 217, 218, 219, 220, 1524, 1525, 221, 222, + 223, 224, 225, 226, 1526, 227, 228, 229, 230, 231, + 232, 1527, 233, 234, 235, 676, 236, 237, 1528, 1529, + 1530, 677, 1531, 1532, 1533, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 1534, 247, 1535, 248, 249, 250, + 251, 252, 1536, 253, 254, 255, 1537, 1538, 256, 257, + 258, 259, 260, 1539, 261, 262, 263, 1540, 264, 265, + 1541, 266, 267, 268, 269, 270, 271, 272, 1542, 273, + 1543, 274, 275, 276, 1544, 277, 1545, 278, 678, 1546, + 679, 279, 280, 1547, 281, 282, 1548, 283, 1549, 284, + 285, 286, 287, 288, 680, 289, 290, 291, 1550, 292, + 293, 294, 295, 296, 297, 1551, 681, 298, 299, 300, + 301, 302, 303, 304, 1552, 305, 1553, 306, 682, 683, + 307, 684, 308, 309, 310, 311, 312, 313, 314, 1554, + 315, 685, 316, 686, 1555, 317, 318, 319, 1556, 1557, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 687, 334, 1558, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 1559, 344, 345, 688, + 346, 1560, 347, 348, 349, 350, 351, 1561, 1562, 352, + 1563, 1564, 1565, 353, 354, 355, 1566, 1567, 356, 689, + 690, 691, 357, 358, 359, 360, 361, 362, 363, 1568, + 364, 365, 366, 367, 368, 369, 370, 1569, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 1570, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 1571, 392, 393, 692, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 1572, 405, 406, 407, 408, + 1573, 409, 410, 411, 412, 693, 413, 414, 1574, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 1575, 427, 428, 1576, 429, 430, 431, 432, 433, + 1577, 434, 435, 1578, 1579, 436, 437, 438, 439, 1580, + 440, 441, 442, 443, 444, 445, 1581, 1582, 446, 447, + 448, 449, 1583, 1584, 450, 451, 452, 453, 454, 455, + 1585, 456, 694, 457, 458, 459, 1586, 1587, 460, 1588, + 1589, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 1590, 185, 186, 187, 188, 2272, 190, 191, 192, 1511, + 194, 195, 196, 1512, 1513, 1514, 1515, 1516, 1517, 1518, + 197, 198, 1519, 199, 673, 200, 201, 202, 674, 203, + 675, 204, 205, 1520, 206, 207, 208, 209, 210, 1521, + 1522, 211, 212, 213, 214, 215, 1523, 216, 217, 218, + 219, 220, 1524, 1525, 221, 222, 223, 224, 225, 226, + 1526, 227, 228, 229, 230, 231, 232, 1527, 233, 234, + 235, 676, 236, 237, 1528, 1529, 1530, 677, 1531, 1532, + 1533, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 1534, 247, 1535, 248, 249, 250, 251, 252, 1536, 253, + 254, 255, 1537, 1538, 256, 257, 258, 2273, 260, 1539, + 261, 262, 263, 1540, 264, 265, 1541, 266, 267, 268, + 269, 270, 271, 272, 1542, 273, 1543, 274, 275, 276, + 1544, 277, 1545, 278, 678, 1546, 679, 279, 280, 1547, + 281, 282, 1548, 283, 1549, 284, 285, 286, 287, 288, + 680, 289, 290, 291, 1550, 292, 293, 294, 295, 296, + 297, 1551, 681, 298, 299, 300, 301, 302, 303, 304, + 1552, 305, 1553, 306, 682, 683, 307, 684, 308, 309, + 310, 311, 312, 313, 314, 1554, 315, 685, 316, 686, + 1555, 317, 318, 319, 1556, 1557, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 687, 334, 1558, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 1559, 344, 345, 688, 346, 1560, 347, 348, + 349, 350, 351, 1561, 1562, 352, 1563, 1564, 1565, 353, + 354, 355, 1566, 1567, 356, 689, 690, 691, 357, 358, + 359, 360, 361, 362, 363, 1568, 364, 365, 366, 367, + 368, 369, 370, 1569, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 1570, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 1571, 392, 393, 692, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 1572, 405, 406, 407, 408, 1573, 2274, 410, 411, + 412, 693, 413, 414, 1574, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 1575, 427, 428, + 1576, 429, 430, 431, 432, 433, 1577, 434, 435, 1578, + 1579, 436, 437, 438, 439, 1580, 440, 441, 442, 443, + 444, 445, 1581, 1582, 446, 447, 448, 449, 1583, 1584, + 450, 451, 452, 453, 454, 455, 1585, 456, 694, 457, + 458, 459, 1586, 1587, 460, 1588, 1589, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 1590, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 673, 200, 201, 202, 674, 203, 675, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 676, 236, 237, + 0, 0, 0, 677, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 678, 0, 679, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 680, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 681, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 682, 683, 307, 684, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 685, 316, 686, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 687, 334, 637, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 688, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 638, 0, 0, 353, 354, 355, 0, 0, + 356, 689, 690, 691, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 692, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 693, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 694, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 695, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 673, 200, 201, 202, + 674, 203, 675, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 676, 236, 237, 0, 0, 0, 677, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 678, 0, 679, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 813, 680, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 681, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 682, 683, 307, 684, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 685, + 316, 686, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 687, 334, 637, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 688, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 638, 0, + 0, 353, 354, 355, 0, 0, 356, 689, 690, 691, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 692, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 693, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 694, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 695, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 673, 200, 201, 202, 674, 203, 675, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 676, + 236, 237, 0, 0, 0, 677, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 678, 0, 679, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 821, 680, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 681, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 682, 683, 307, 684, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 685, 316, 686, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 687, 334, + 637, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 688, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 638, 0, 0, 353, 354, 355, + 0, 0, 356, 689, 690, 691, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 692, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 693, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 694, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 695, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 1659, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 1660, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 1661, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 2387, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 1662, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 1663, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 609, 191, 192, 575, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 576, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 610, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 577, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 578, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 575, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 576, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 577, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 578, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 1335, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 1336, 278, 0, 0, 0, 1337, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 1338, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 637, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 638, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 1339, 401, + 402, 403, 404, 0, 1340, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 1341, 1342, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 3, 4, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 637, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 638, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 637, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 638, 0, 639, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 991, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 637, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 638, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 576, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 577, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 578, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 2097, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 2098, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 637, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 638, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 2099, 429, 2100, 431, 2101, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 637, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 638, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 1769, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 1770, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 2209, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 2210, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 2219, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 2220, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 520, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 521, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 603, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 604, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 605, 435, 0, 0, 606, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 631, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 632, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 633, 435, 0, + 0, 634, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 809, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 1004, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 619, 212, 213, 214, 1005, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 622, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 623, 395, 396, 397, 398, 399, 624, 401, + 402, 403, 404, 0, 405, 406, 407, 995, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 626, + 435, 0, 0, 627, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 628, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 673, 200, 201, 202, 674, 1196, 675, 1197, + 1198, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 1199, 1200, 215, 0, 216, 217, 218, 219, 0, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 676, + 236, 237, 0, 0, 0, 677, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 1201, 1202, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 914, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 0, 270, + 271, 0, 0, 273, 0, 274, 1203, 276, 0, 277, + 0, 278, 678, 0, 679, 279, 280, 0, 281, 0, + 0, 283, 0, 284, 285, 286, 287, 288, 680, 289, + 290, 291, 1687, 292, 293, 294, 295, 296, 297, 0, + 681, 1688, 299, 300, 301, 302, 1204, 1205, 0, 1206, + 0, 306, 682, 683, 307, 684, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 685, 316, 686, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 1207, 687, 1208, + 0, 335, 336, 337, 338, 339, 340, 341, 0, 343, + 0, 344, 345, 688, 346, 0, 0, 348, 1209, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 1689, 689, 690, 691, 0, 358, 359, 360, + 361, 362, 363, 0, 364, 0, 366, 0, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 1210, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 692, 394, 395, + 0, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 1690, 411, 412, 693, + 413, 1212, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 0, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 1213, 1214, 0, 0, 436, + 0, 438, 0, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 0, 1215, 1691, 456, 694, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 0, 0, 474, 475, + 476, 0, 0, 0, 1216, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 2423, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 2436, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 2470, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 3091, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 3093, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 3095, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 3433, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 593, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 601, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 619, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 620, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 621, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 622, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 623, 395, 396, 397, 398, 399, + 624, 401, 402, 403, 404, 0, 405, 406, 407, 625, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 626, 435, 0, 0, 627, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 628, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 288, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 654, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 737, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 799, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 818, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 823, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 831, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 833, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 835, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 837, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 840, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 842, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 843, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 846, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 619, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 622, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 623, 395, 396, 397, 398, 399, 624, 401, + 402, 403, 404, 0, 405, 406, 407, 995, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 626, + 435, 0, 0, 627, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 628, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 1025, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 0, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 1266, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 1291, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 1293, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 362, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 0, 200, 201, 202, + 0, 203, 0, 204, 205, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 213, 214, 215, 0, 216, + 217, 218, 219, 220, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 0, 236, 237, 0, 0, 0, 0, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 269, 270, 271, 272, 0, 273, 0, 274, + 275, 276, 0, 277, 0, 278, 0, 0, 0, 279, + 280, 0, 281, 282, 0, 283, 0, 284, 285, 286, + 287, 288, 0, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 0, 298, 299, 300, 301, 302, + 303, 304, 0, 305, 0, 306, 0, 0, 307, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 315, 0, + 316, 0, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 0, 344, 345, 0, 346, 0, + 347, 348, 349, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 356, 0, 0, 0, + 357, 358, 359, 360, 361, 362, 363, 0, 364, 365, + 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 0, 394, 395, 396, 397, 398, 1369, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 410, 411, 412, 0, 413, 414, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 439, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 454, 455, 0, 456, + 0, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 0, 0, 0, 477, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 0, 200, 201, 202, 0, 203, 0, 204, + 205, 0, 206, 207, 208, 209, 210, 0, 0, 619, + 212, 213, 214, 215, 0, 216, 217, 218, 219, 220, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 0, + 236, 237, 0, 0, 0, 0, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 269, 270, + 271, 272, 0, 273, 0, 274, 275, 276, 0, 277, + 0, 278, 0, 0, 0, 279, 280, 0, 281, 282, + 0, 283, 0, 284, 285, 286, 287, 288, 0, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 0, 298, 299, 300, 301, 302, 303, 304, 0, 305, + 0, 306, 0, 0, 307, 0, 308, 309, 310, 311, + 312, 313, 314, 0, 315, 0, 316, 0, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 622, 333, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 344, 345, 0, 346, 0, 347, 348, 349, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 356, 0, 0, 0, 357, 358, 359, 360, + 361, 362, 363, 0, 364, 365, 366, 367, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 0, 623, 395, + 396, 397, 398, 399, 624, 401, 402, 403, 404, 0, + 405, 406, 407, 995, 0, 409, 410, 411, 412, 0, + 413, 414, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 0, 427, 428, 0, 1656, + 430, 431, 432, 433, 0, 626, 435, 0, 0, 627, + 437, 438, 439, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 454, 455, 0, 456, 0, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 628, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 0, 0, 0, 477, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 0, 200, + 201, 202, 0, 203, 0, 204, 205, 0, 206, 207, + 208, 209, 210, 0, 0, 619, 212, 213, 214, 215, + 0, 216, 217, 218, 219, 220, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 258, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 269, 270, 271, 272, 0, 273, + 0, 274, 275, 276, 0, 277, 0, 278, 0, 0, + 0, 279, 280, 0, 281, 282, 0, 283, 0, 284, + 285, 286, 287, 288, 0, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 0, 298, 299, 300, + 301, 302, 303, 304, 0, 305, 0, 306, 0, 0, + 307, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 315, 0, 316, 0, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 622, 333, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 0, 344, 345, 0, + 346, 0, 347, 348, 349, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 356, 0, + 0, 0, 357, 358, 359, 360, 361, 362, 363, 0, + 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 0, 623, 395, 396, 397, 398, 399, + 1683, 401, 402, 403, 404, 0, 405, 406, 407, 995, + 0, 409, 410, 411, 412, 0, 413, 414, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 626, 435, 0, 0, 627, 437, 438, 439, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 454, 455, + 0, 456, 0, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 628, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 0, 0, 0, + 477, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 0, 200, 201, 202, 0, 203, + 0, 204, 205, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 213, 214, 215, 0, 216, 217, 218, + 219, 220, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 0, 236, 237, 0, 0, 0, 0, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 258, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 269, 270, 271, 272, 0, 273, 0, 274, 275, 276, + 0, 277, 0, 278, 0, 0, 0, 279, 280, 0, + 281, 282, 0, 283, 0, 284, 285, 286, 287, 1901, + 0, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 0, 298, 299, 300, 301, 302, 303, 304, + 0, 305, 0, 306, 0, 0, 307, 0, 308, 309, + 310, 311, 312, 313, 314, 0, 315, 0, 316, 0, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 0, 344, 345, 0, 346, 0, 347, 348, + 349, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 356, 0, 0, 0, 357, 358, + 359, 360, 361, 362, 363, 0, 364, 365, 366, 367, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 0, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 410, 411, + 412, 0, 413, 414, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 439, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 454, 455, 0, 456, 0, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 0, 0, 0, 477, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 673, 200, 201, 202, 674, 1196, 675, 1197, 1198, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 1199, + 1200, 215, 0, 216, 217, 218, 219, 0, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 676, 236, 237, + 0, 0, 0, 677, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 1201, 1202, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 914, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 0, 270, 271, 0, + 0, 273, 0, 274, 1203, 276, 0, 277, 0, 278, + 678, 0, 679, 279, 280, 0, 281, 0, 0, 283, + 0, 284, 285, 286, 287, 288, 680, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 681, 0, + 299, 300, 301, 302, 1204, 1205, 0, 1206, 0, 306, + 682, 683, 307, 684, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 685, 316, 686, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 1207, 687, 1208, 0, 335, + 336, 337, 338, 339, 340, 341, 0, 343, 0, 344, + 345, 688, 346, 1679, 0, 348, 1209, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 0, 689, 690, 691, 0, 358, 359, 360, 361, 362, + 363, 0, 364, 0, 366, 0, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 376, 377, 1210, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 692, 394, 395, 0, 397, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 1690, 411, 412, 693, 413, 1212, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 0, 426, 0, 427, 428, 2836, 429, 430, 431, + 432, 433, 0, 1213, 1214, 0, 0, 436, 0, 438, + 0, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 0, 1215, 0, 456, 694, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 0, 0, 474, 475, 476, 0, + 0, 0, 1216, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 673, 200, 201, 202, + 674, 1196, 675, 1197, 1198, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 1199, 1200, 215, 0, 216, + 217, 218, 219, 0, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 676, 236, 237, 0, 0, 0, 677, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 1201, + 1202, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 914, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 0, 270, 271, 0, 0, 273, 0, 274, + 1203, 276, 0, 277, 0, 278, 678, 0, 679, 279, + 280, 0, 281, 0, 0, 283, 0, 284, 285, 286, + 287, 288, 680, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 681, 0, 299, 300, 301, 302, + 1204, 1205, 0, 1206, 0, 306, 682, 683, 307, 684, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 685, + 316, 686, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 1207, 687, 1208, 0, 335, 336, 337, 338, 339, + 340, 341, 1728, 343, 0, 344, 345, 688, 346, 0, + 0, 348, 1209, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 0, 689, 690, 691, + 0, 358, 359, 360, 361, 362, 363, 0, 364, 0, + 366, 0, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 1210, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 692, 394, 395, 0, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 1211, 411, 412, 693, 413, 1212, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 0, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 1213, + 1214, 0, 0, 436, 0, 438, 0, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 0, 1215, 0, 456, + 694, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 0, 0, 474, 475, 476, 0, 0, 0, 1216, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 673, 200, 201, 202, 674, 1196, 675, 1197, + 1198, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 1199, 1200, 215, 0, 216, 217, 218, 219, 0, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 676, + 236, 237, 0, 0, 0, 677, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 1201, 1202, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 914, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 0, 270, + 271, 0, 0, 273, 0, 274, 1203, 276, 0, 277, + 0, 278, 678, 0, 679, 279, 280, 0, 281, 0, + 0, 283, 0, 284, 285, 286, 287, 288, 680, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 681, 0, 299, 300, 301, 302, 1204, 1205, 0, 1206, + 0, 306, 682, 683, 307, 684, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 685, 316, 686, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 1207, 687, 1208, + 0, 335, 336, 337, 338, 339, 340, 341, 2681, 343, + 0, 344, 345, 688, 346, 0, 0, 348, 1209, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 0, 689, 690, 691, 0, 358, 359, 360, + 361, 362, 363, 0, 364, 0, 366, 0, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 1210, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 692, 394, 395, + 0, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 1211, 411, 412, 693, + 413, 1212, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 0, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 1213, 1214, 0, 0, 436, + 0, 438, 0, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 0, 1215, 0, 456, 694, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 0, 0, 474, 475, + 476, 0, 0, 0, 1216, 185, 186, 187, 188, 189, + 190, 191, 192, 0, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 197, 198, 0, 199, 673, 200, + 201, 202, 674, 1196, 675, 1197, 1198, 0, 206, 207, + 208, 209, 210, 0, 0, 211, 212, 1199, 1200, 215, + 0, 216, 217, 218, 219, 0, 0, 0, 221, 222, + 223, 224, 225, 226, 0, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 676, 236, 237, 0, 0, + 0, 677, 0, 0, 0, 238, 239, 240, 241, 242, + 243, 1201, 1202, 246, 0, 247, 0, 248, 249, 250, + 251, 252, 0, 253, 254, 255, 0, 0, 256, 257, + 914, 259, 260, 0, 261, 262, 263, 0, 264, 265, + 0, 266, 267, 268, 0, 270, 271, 0, 0, 273, + 0, 274, 1203, 276, 0, 277, 0, 278, 678, 0, + 679, 279, 280, 0, 281, 0, 0, 283, 0, 284, + 285, 286, 287, 288, 680, 289, 290, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 681, 0, 299, 300, + 301, 302, 1204, 1205, 0, 1206, 0, 306, 682, 683, + 307, 684, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 685, 316, 686, 0, 317, 318, 319, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 1207, 687, 1208, 0, 335, 336, 337, + 338, 339, 340, 341, 0, 343, 0, 344, 345, 688, + 346, 0, 0, 348, 1209, 350, 351, 0, 0, 352, + 0, 0, 0, 353, 354, 355, 0, 0, 0, 689, + 690, 691, 0, 358, 359, 360, 361, 362, 363, 0, + 364, 0, 366, 0, 368, 369, 370, 0, 371, 372, + 373, 374, 375, 376, 377, 1210, 379, 380, 381, 0, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 392, 393, 692, 394, 395, 0, 397, 398, 399, + 400, 401, 402, 403, 404, 0, 405, 406, 407, 408, + 0, 409, 1211, 411, 412, 693, 413, 1212, 0, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, + 426, 0, 427, 428, 0, 429, 430, 431, 432, 433, + 0, 1213, 1214, 0, 0, 436, 0, 438, 0, 0, + 440, 441, 442, 443, 444, 445, 0, 0, 446, 447, + 448, 449, 0, 0, 450, 451, 452, 453, 0, 1215, + 0, 456, 694, 457, 458, 459, 0, 0, 460, 0, + 0, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 0, 0, 474, 475, 476, 0, 0, 0, + 1216, 185, 186, 187, 188, 189, 190, 191, 192, 0, + 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, + 197, 198, 0, 199, 673, 200, 201, 202, 674, 1196, + 675, 1197, 1198, 0, 206, 207, 208, 209, 210, 0, + 0, 211, 212, 1199, 1200, 215, 0, 216, 217, 218, + 219, 0, 0, 0, 221, 222, 223, 224, 225, 226, + 0, 227, 228, 229, 230, 231, 232, 0, 233, 234, + 235, 676, 236, 237, 0, 0, 0, 677, 0, 0, + 0, 238, 239, 240, 241, 242, 243, 1201, 1202, 246, + 0, 247, 0, 248, 249, 250, 251, 252, 0, 253, + 254, 255, 0, 0, 256, 257, 914, 259, 260, 0, + 261, 262, 263, 0, 264, 265, 0, 266, 267, 268, + 0, 270, 271, 0, 0, 273, 0, 274, 1203, 276, + 0, 277, 0, 278, 678, 0, 679, 279, 280, 0, + 281, 0, 0, 283, 0, 284, 285, 286, 287, 288, + 680, 289, 290, 291, 0, 292, 293, 294, 295, 296, + 297, 0, 681, 0, 299, 300, 301, 302, 1204, 1205, + 0, 1206, 0, 306, 682, 683, 307, 684, 308, 309, + 310, 311, 312, 313, 314, 0, 0, 685, 316, 686, + 0, 317, 318, 319, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 1207, + 687, 1208, 0, 335, 336, 337, 338, 339, 340, 341, + 0, 343, 0, 344, 345, 688, 346, 0, 0, 348, + 1209, 350, 351, 0, 0, 352, 0, 0, 0, 353, + 354, 355, 0, 0, 0, 689, 690, 691, 0, 358, + 359, 360, 361, 362, 363, 0, 364, 0, 366, 0, + 368, 369, 370, 0, 371, 372, 373, 374, 375, 376, + 377, 1210, 379, 380, 381, 0, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 0, 392, 393, 692, + 394, 395, 0, 397, 398, 399, 400, 401, 402, 403, + 404, 0, 405, 406, 407, 408, 0, 409, 1690, 411, + 412, 693, 413, 1212, 0, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 0, 426, 0, 427, 428, + 0, 429, 430, 431, 432, 433, 0, 1213, 1214, 0, + 0, 436, 0, 438, 0, 0, 440, 441, 442, 443, + 444, 445, 0, 0, 446, 447, 448, 449, 0, 0, + 450, 451, 452, 453, 0, 1215, 0, 456, 694, 457, + 458, 459, 0, 0, 460, 0, 0, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 0, 0, + 474, 475, 476, 0, 0, 0, 1216, 185, 186, 187, + 188, 189, 190, 191, 192, 0, 194, 195, 196, 0, + 0, 0, 0, 0, 0, 0, 197, 198, 0, 199, + 0, 200, 201, 202, 0, 203, 0, 204, 205, 0, + 206, 207, 208, 209, 210, 0, 0, 211, 212, 213, + 214, 215, 0, 216, 217, 218, 219, 220, 0, 0, + 221, 222, 223, 224, 225, 226, 0, 227, 228, 229, + 230, 231, 232, 0, 233, 234, 235, 0, 236, 237, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 0, 247, 0, 248, + 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, + 256, 257, 258, 259, 260, 0, 261, 262, 263, 0, + 264, 265, 0, 266, 267, 268, 269, 270, 271, 272, + 0, 273, 0, 274, 275, 276, 0, 277, 0, 278, + 0, 0, 0, 279, 280, 0, 281, 282, 0, 283, + 0, 284, 285, 286, 287, 288, 0, 289, 290, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 0, 298, + 299, 300, 301, 302, 303, 304, 0, 305, 0, 306, + 0, 0, 307, 0, 308, 309, 310, 311, 312, 313, + 314, 0, 315, 0, 316, 0, 0, 317, 318, 319, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 0, 344, + 345, 0, 346, 0, 347, 348, 349, 350, 351, 0, + 0, 352, 0, 0, 0, 353, 354, 355, 0, 0, + 356, 0, 0, 0, 357, 358, 359, 360, 361, 0, + 363, 0, 364, 365, 366, 367, 368, 369, 370, 0, + 371, 372, 373, 374, 375, 0, 377, 378, 379, 380, + 381, 0, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 0, 392, 393, 0, 394, 395, 396, 0, + 398, 399, 400, 401, 402, 403, 404, 0, 405, 406, + 407, 408, 0, 409, 410, 411, 412, 0, 413, 414, + 0, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 0, 427, 428, 0, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 439, 0, 440, 441, 442, 443, 444, 445, 0, 0, + 446, 447, 448, 449, 0, 0, 450, 451, 452, 453, + 454, 455, 0, 456, 0, 457, 458, 459, 0, 0, + 460, 0, 0, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 0, + 0, 0, 477, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 194, 195, 196, 0, 0, 0, 0, 0, + 0, 0, 197, 198, 0, 199, 673, 200, 201, 202, + 674, 1196, 675, 1197, 1198, 0, 206, 207, 208, 209, + 210, 0, 0, 211, 212, 1199, 1200, 215, 0, 216, + 217, 218, 219, 0, 0, 0, 221, 222, 223, 224, + 225, 226, 0, 227, 228, 229, 230, 231, 232, 0, + 233, 234, 235, 676, 236, 237, 0, 0, 0, 677, + 0, 0, 0, 238, 239, 240, 241, 242, 243, 1201, + 1202, 246, 0, 247, 0, 248, 249, 250, 251, 252, + 0, 253, 254, 255, 0, 0, 256, 257, 914, 259, + 260, 0, 261, 262, 263, 0, 264, 265, 0, 266, + 267, 268, 0, 270, 271, 0, 0, 273, 0, 274, + 1203, 276, 0, 277, 0, 278, 678, 0, 679, 279, + 280, 0, 281, 0, 0, 283, 0, 284, 285, 286, + 287, 288, 680, 289, 290, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 681, 0, 299, 300, 301, 302, + 1204, 1205, 0, 1206, 0, 306, 682, 683, 307, 684, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 685, + 316, 686, 0, 317, 318, 319, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 1207, 687, 1208, 0, 335, 336, 337, 338, 339, + 340, 341, 0, 343, 0, 344, 345, 688, 346, 0, + 0, 348, 1209, 350, 351, 0, 0, 352, 0, 0, + 0, 353, 354, 355, 0, 0, 0, 689, 690, 691, + 0, 358, 359, 360, 361, 362, 363, 0, 364, 0, + 366, 0, 368, 369, 370, 0, 371, 372, 373, 374, + 375, 376, 377, 1210, 379, 380, 381, 0, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 0, 392, + 393, 692, 394, 395, 0, 397, 398, 399, 400, 401, + 402, 403, 404, 0, 405, 406, 407, 408, 0, 409, + 0, 411, 412, 693, 413, 1212, 0, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 0, 426, 0, + 427, 428, 0, 429, 430, 431, 432, 433, 0, 1213, + 1214, 0, 0, 436, 0, 438, 0, 0, 440, 441, + 442, 443, 444, 445, 0, 0, 446, 447, 448, 449, + 0, 0, 450, 451, 452, 453, 0, 1215, 0, 456, + 694, 457, 458, 459, 0, 0, 460, 0, 0, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 0, 0, 474, 475, 476, 0, 0, 0, 1216, 185, + 186, 187, 188, 189, 190, 191, 192, 0, 194, 195, + 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, + 0, 199, 673, 200, 201, 202, 674, 0, 675, 0, + 0, 0, 206, 207, 208, 209, 210, 0, 0, 211, + 212, 0, 0, 215, 0, 216, 217, 218, 219, 0, + 0, 0, 221, 222, 223, 224, 225, 226, 0, 227, + 228, 229, 230, 231, 232, 0, 233, 234, 235, 676, + 236, 237, 0, 0, 0, 677, 0, 0, 0, 238, + 239, 240, 241, 242, 243, 0, 0, 246, 0, 247, + 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, + 0, 0, 256, 257, 258, 259, 260, 0, 261, 262, + 263, 0, 264, 265, 0, 266, 267, 268, 0, 270, + 271, 0, 0, 273, 0, 274, 0, 276, 0, 277, + 0, 278, 678, 0, 679, 279, 280, 0, 281, 0, + 0, 283, 0, 284, 285, 286, 287, 288, 680, 289, + 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 681, 0, 299, 300, 301, 302, 0, 0, 0, 0, + 0, 306, 682, 683, 307, 684, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 685, 316, 686, 0, 317, + 318, 319, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 0, 687, 0, + 0, 335, 336, 337, 338, 339, 340, 341, 0, 343, + 0, 344, 345, 688, 346, 0, 0, 348, 0, 350, + 351, 0, 0, 352, 0, 0, 0, 353, 354, 355, + 0, 0, 0, 689, 690, 691, 0, 358, 359, 360, + 361, 362, 363, 0, 364, 0, 366, 0, 368, 369, + 370, 0, 371, 372, 373, 374, 375, 376, 377, 0, + 379, 380, 381, 0, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 0, 392, 393, 692, 394, 395, + 0, 397, 398, 399, 400, 401, 402, 403, 404, 0, + 405, 406, 407, 408, 0, 409, 0, 411, 412, 693, + 413, 0, 0, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 0, 426, 0, 427, 428, 0, 429, + 430, 431, 432, 433, 0, 0, 0, 0, 0, 436, + 0, 438, 0, 0, 440, 441, 442, 443, 444, 445, + 0, 0, 446, 447, 448, 449, 0, 0, 450, 451, + 452, 453, 0, 0, 0, 456, 694, 457, 458, 459, + 0, 0, 460, 0, 0, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 0, 0, 474, 475, + 476, 0, 0, 0, 1216 }; static const short int yycheck[] = { - 0, 46, 157, 41, 0, 631, 777, 1299, 561, 699, - 1314, 11, 1253, 21, 1205, 12, 478, 823, 884, 27, - 659, 801, 597, 150, 702, 594, 0, 154, 1284, 836, - 1816, 34, 22, 0, 0, 702, 653, 1489, 591, 684, - 734, 1998, 1265, 1584, 34, 1237, 46, 1739, 693, 1413, - 472, 1232, 514, 1349, 607, 667, 43, 7, 8, 1237, - 1237, 1790, 2216, 13, 14, 747, 1237, 1237, 1237, 19, - 2187, 21, 22, 755, 24, 1750, 770, 27, 28, 29, - 705, 704, 32, 33, 34, 0, 36, 509, 38, 39, - 1744, 1745, 42, 738, 0, 155, 994, 742, 2416, 159, - 2562, 17, 0, 948, 749, 38, 0, 167, 1498, 855, - 856, 756, 0, 11, 532, 0, 0, 11, 0, 847, - 848, 20, 1495, 25, 1570, 1571, 663, 907, 874, 32, - 512, 2336, 25, 45, 516, 45, 87, 762, 2166, 2167, - 2168, 2169, 870, 525, 45, 5, 87, 39, 87, 87, - 82, 131, 1693, 131, 131, 136, 14, 47, 11, 106, - 47, 8, 1382, 92, 1009, 18, 111, 39, 57, 156, - 1015, 11, 11, 25, 161, 162, 47, 171, 18, 24, - 131, 168, 39, 54, 227, 39, 47, 30, 71, 24, - 61, 11, 3006, 7, 207, 225, 43, 87, 18, 7, - 61, 151, 152, 153, 131, 155, 134, 157, 87, 159, - 160, 143, 19, 163, 228, 165, 166, 167, 82, 1760, - 225, 1762, 1442, 2621, 231, 2623, 241, 149, 797, 2857, - 32, 7, 161, 261, 1415, 54, 133, 171, 25, 279, - 67, 128, 195, 94, 92, 3145, 3028, 62, 258, 132, - 2960, 266, 115, 306, 307, 115, 718, 128, 186, 949, - 126, 87, 62, 195, 258, 241, 198, 128, 91, 21, - 116, 359, 360, 88, 157, 2313, 39, 79, 266, 143, - 386, 279, 230, 289, 2746, 295, 381, 393, 88, 172, - 104, 386, 15, 16, 270, 90, 104, 180, 393, 2337, - 59, 3011, 145, 150, 382, 293, 149, 154, 135, 156, - 316, 1382, 929, 401, 161, 162, 994, 293, 167, 25, - 203, 168, 3222, 478, 258, 215, 1171, 994, 104, 382, - 220, 195, 342, 286, 198, 232, 215, 96, 153, 182, - 3122, 468, 1208, 95, 342, 168, 3246, 230, 354, 288, - 1032, 146, 59, 153, 286, 362, 1360, 1361, 160, 514, - 373, 401, 252, 406, 1368, 252, 989, 131, 1372, 1373, - 115, 401, 262, 401, 325, 1566, 945, 3087, 505, 2841, - 272, 252, 169, 1387, 511, 1389, 401, 401, 1078, 96, - 318, 252, 320, 276, 220, 3023, 401, 1653, 325, 1170, - 272, 2429, 268, 785, 283, 207, 1410, 246, 1412, 356, - 349, 269, 406, 342, 2876, 272, 476, 39, 272, 279, - 480, 1794, 286, 281, 104, 406, 406, 241, 406, 406, - 490, 382, 295, 241, 816, 295, 220, 388, 3252, 351, - 372, 382, 288, 825, 382, 386, 335, 300, 338, 1195, - 1196, 338, 266, 404, 297, 837, 401, 1203, 2663, 25, - 300, 344, 401, 169, 170, 1193, 1194, 338, 313, 401, - 382, 329, 382, 1167, 1202, 2432, 2433, 338, 313, 318, - 300, 320, 284, 242, 406, 293, 1023, 1258, 386, 401, - 266, 401, 386, 344, 342, 393, 2894, 2959, 401, 393, - 401, 403, 401, 349, 397, 1187, 325, 405, 372, 272, - 403, 405, 218, 500, 406, 1888, 1739, 405, 2546, 469, - 405, 405, 472, 405, 474, 533, 476, 535, 478, 537, - 480, 481, 482, 541, 406, 242, 486, 2229, 488, 1184, - 490, 2233, 394, 395, 396, 397, 462, 497, 966, 406, - 295, 403, 406, 220, 1232, 401, 506, 406, 81, 509, - 319, 325, 512, 718, 514, 1232, 516, 517, 1348, 1349, - 2016, 521, 2018, 523, 1964, 525, 492, 1039, 528, 1359, - 133, 708, 1362, 92, 1223, 207, 2127, 2128, 715, 51, - 1370, 1371, 399, 1957, 401, 402, 82, 404, 382, 406, - 138, 131, 1662, 1383, 1384, 392, 393, 394, 395, 396, - 397, 3045, 319, 293, 1394, 132, 403, 89, 568, 466, - 570, 468, 622, 573, 388, 92, 622, 1071, 89, 152, - 59, 1256, 169, 1531, 1854, 1855, 763, 104, 327, 1859, - 404, 99, 592, 101, 594, 595, 1374, 1375, 622, 12, - 272, 1003, 161, 500, 334, 622, 622, 143, 505, 592, - 400, 611, 595, 121, 511, 60, 406, 96, 1448, 359, - 360, 293, 361, 92, 266, 281, 133, 3139, 1898, 1899, - 1684, 87, 268, 23, 156, 1254, 392, 393, 394, 395, - 396, 397, 67, 230, 61, 113, 1048, 403, 1879, 59, - 143, 293, 2148, 1884, 7, 92, 87, 622, 555, 195, - 13, 86, 198, 108, 561, 382, 622, 92, 668, 669, - 87, 92, 2876, 329, 1947, 572, 243, 3189, 281, 99, - 2176, 101, 2849, 91, 325, 2410, 96, 1415, 11, 277, - 167, 116, 161, 215, 591, 695, 87, 165, 1415, 316, - 1595, 121, 195, 1598, 1599, 705, 3190, 215, 317, 220, - 607, 711, 220, 610, 1317, 1318, 228, 225, 718, 2215, - 720, 240, 89, 359, 161, 232, 726, 624, 1401, 288, - 730, 298, 249, 1854, 1855, 1229, 161, 737, 1859, 80, - 161, 1235, 315, 316, 189, 745, 746, 216, 217, 162, - 286, 104, 394, 803, 151, 1249, 153, 803, 148, 215, - 168, 761, 762, 242, 764, 406, 90, 235, 818, 166, - 406, 1283, 818, 283, 1447, 166, 99, 1898, 1899, 803, - 217, 781, 782, 342, 215, 785, 803, 803, 359, 251, - 349, 841, 401, 286, 114, 186, 241, 797, 215, 2806, - 220, 308, 1274, 1531, 11, 225, 327, 317, 858, 169, - 707, 708, 907, 813, 1531, 37, 816, 817, 715, 288, - 325, 821, 146, 331, 134, 825, 3194, 3195, 288, 90, - 150, 339, 242, 833, 1039, 406, 372, 837, 888, 839, - 319, 99, 401, 101, 380, 1277, 382, 463, 215, 305, - 360, 288, 308, 194, 1286, 196, 295, 907, 80, 401, - 757, 758, 759, 288, 1296, 327, 763, 288, 1380, 337, - 2612, 2650, 317, 342, 319, 2617, 186, 25, 2620, 3247, - 349, 1313, 30, 1315, 1316, 146, 2177, 1319, 241, 349, - 1686, 401, 99, 183, 251, 241, 1628, 38, 131, 361, - 47, 406, 1956, 342, 2608, 342, 2408, 1602, 1603, 319, - 2264, 331, 349, 266, 61, 2148, 149, 342, 815, 339, - 1582, 342, 3143, 3144, 349, 66, 359, 977, 978, 151, - 980, 132, 401, 215, 1755, 26, 2178, 227, 289, 836, - 87, 401, 89, 2176, 2175, 945, 2292, 293, 2254, 565, - 2178, 2178, 952, 953, 61, 46, 2229, 2178, 2178, 2178, - 2233, 961, 241, 963, 401, 316, 99, 225, 101, 585, - 327, 113, 194, 406, 196, 257, 401, 593, 119, 1711, - 1712, 1713, 1714, 281, 126, 207, 2993, 266, 63, 380, - 381, 382, 399, 169, 1824, 386, 0, 404, 998, 2053, - 3221, 149, 393, 354, 361, 2596, 147, 1751, 318, 156, - 320, 281, 2122, 400, 293, 2125, 2126, 1017, 240, 406, - 396, 169, 170, 165, 405, 401, 101, 134, 404, 2139, - 1067, 329, 392, 393, 394, 395, 396, 397, 2629, 1039, - 2631, 183, 1872, 403, 354, 152, 126, 2317, 359, 271, - 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 329, - 2330, 1533, 959, 1063, 1064, 1065, 1066, 1499, 215, 317, - 218, 1901, 266, 220, 352, 2911, 270, 474, 1283, 186, - 1747, 303, 215, 126, 232, 227, 359, 360, 1265, 3130, - 1267, 488, 225, 235, 318, 406, 320, 241, 1275, 293, - 241, 2155, 2156, 183, 406, 252, 241, 1937, 660, 2379, - 2380, 351, 360, 359, 360, 262, 318, 733, 320, 1949, - 1950, 2352, 266, 132, 386, 266, 1236, 234, 401, 270, - 2544, 266, 684, 274, 258, 270, 382, 1314, 400, 280, - 183, 693, 382, 267, 1576, 3186, 287, 227, 157, 2891, - 3191, 1879, 293, 401, 1773, 401, 1884, 1054, 293, 285, - 301, 401, 1879, 172, 241, 359, 290, 1884, 309, 2064, - 1067, 180, 1172, 1173, 382, 1380, 2071, 2072, 1178, 3220, - 1180, 54, 175, 266, 227, 381, 397, 270, 61, 266, - 386, 338, 403, 401, 126, 337, 2317, 325, 279, 2320, - 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 241, 2330, - 293, 318, 144, 320, 355, 1265, 392, 393, 394, 395, - 396, 397, 329, 304, 359, 2021, 241, 403, 2513, 2514, - 1325, 338, 2517, 266, 2519, 344, 1236, 385, 1238, 241, - 1240, 1241, 1242, 1243, 392, 393, 394, 395, 396, 397, - 382, 266, 230, 2148, 1254, 403, 1256, 1304, 2379, 2380, - 402, 399, 7, 401, 266, 230, 404, 276, 13, 401, - 71, 668, 669, 329, 1274, 1325, 359, 1277, 1278, 9, - 32, 2176, 241, 1283, 1334, 2555, 1286, 1287, 1334, 1289, - 1343, 2705, 1965, 909, 1294, 33, 1296, 401, 28, 1299, - 1300, 39, 1342, 919, 382, 268, 51, 266, 382, 382, - 1334, 270, 285, 1313, 930, 1315, 1316, 1334, 1334, 1319, - 72, 399, 255, 401, 2013, 1325, 404, 401, 401, 1954, - 64, 132, 948, 730, 293, 359, 360, 977, 978, 2612, - 980, 93, 1342, 1343, 2617, 152, 1346, 2620, 745, 746, - 375, 376, 97, 382, 382, 382, 157, 17, 382, 104, - 112, 402, 107, 382, 761, 406, 44, 45, 1265, 1419, - 1267, 172, 401, 401, 401, 127, 144, 401, 1275, 180, - 1380, 399, 401, 401, 781, 782, 2496, 359, 360, 141, - 113, 1288, 2502, 2503, 2504, 2505, 2506, 2507, 1295, 5, - 396, 36, 203, 126, 10, 401, 1918, 402, 404, 154, - 402, 406, 18, 2243, 406, 285, 1049, 1314, 1528, 1052, - 1317, 1318, 1532, 1056, 3015, 2341, 2342, 402, 2285, 35, - 401, 406, 1329, 404, 2555, 402, 1546, 2707, 2708, 406, - 402, 113, 165, 1553, 406, 827, 828, 2175, 394, 395, - 396, 397, 402, 175, 126, 402, 406, 403, 2175, 406, - 183, 2702, 207, 1977, 1978, 1575, 402, 1577, 220, 386, - 406, 977, 978, 2205, 980, 276, 228, 401, 2532, 1589, - 402, 1591, 402, 402, 406, 254, 406, 406, 402, 1489, - 230, 402, 406, 165, 2548, 406, 241, 402, 402, 1499, - 401, 406, 406, 402, 227, 257, 402, 406, 36, 169, - 406, 183, 235, 402, 26, 1625, 402, 406, 2348, 402, - 406, 2377, 1632, 406, 1634, 270, 402, 402, 1528, 1529, - 406, 406, 1532, 1533, 402, 402, 374, 1537, 406, 406, - 2954, 402, 171, 1543, 1976, 406, 1546, 1444, 293, 1549, - 404, 2842, 402, 1553, 1554, 227, 406, 402, 233, 1559, - 402, 406, 1739, 235, 406, 230, 402, 402, 799, 2242, - 406, 406, 232, 359, 360, 1575, 1576, 1577, 1578, 401, - 1580, 402, 404, 1583, 1584, 406, 2707, 2708, 626, 1589, - 628, 1591, 1592, 1593, 1594, 2214, 1979, 1980, 169, 1496, - 2273, 2874, 17, 2035, 377, 378, 379, 1607, 1608, 1609, - 1610, 1611, 1612, 1613, 337, 233, 1616, 1617, 2891, 2051, - 1620, 1621, 1622, 2055, 2352, 1625, 1626, 402, 2234, 232, - 2236, 406, 1632, 1633, 1634, 2352, 1636, 402, 318, 402, - 320, 406, 2438, 406, 1739, 230, 2916, 402, 1648, 3003, - 318, 406, 320, 1700, 325, 1655, 1656, 1657, 1658, 1659, - 1660, 232, 26, 2403, 233, 337, 1063, 1064, 1065, 1066, - 2940, 2941, 374, 402, 1724, 402, 402, 406, 1724, 406, - 406, 2791, 2792, 2793, 402, 374, 2359, 402, 406, 1739, - 402, 406, 402, 1693, 406, 171, 406, 402, 2752, 2753, - 405, 1701, 402, 2757, 2758, 402, 406, 402, 394, 406, - 402, 406, 402, 1918, 406, 402, 406, 402, 293, 406, - 405, 1721, 1619, 130, 17, 385, 1726, 958, 388, 389, - 390, 36, 392, 393, 394, 395, 396, 397, 402, 402, - 1740, 402, 406, 403, 1744, 1745, 402, 402, 402, 402, - 406, 406, 406, 406, 169, 3097, 401, 3099, 404, 1759, - 1760, 1761, 1762, 7, 359, 360, 404, 3040, 1973, 13, - 1947, 401, 230, 1773, 402, 1172, 1173, 1871, 406, 1873, - 1874, 1178, 385, 266, 401, 388, 389, 390, 1788, 392, - 393, 394, 395, 396, 397, 2916, 3066, 181, 1397, 401, - 1697, 1400, 224, 285, 175, 401, 1901, 51, 401, 47, - 359, 20, 1812, 401, 385, 26, 1816, 232, 26, 2940, - 2941, 392, 393, 394, 395, 396, 397, 241, 1725, 175, - 344, 117, 403, 117, 401, 1732, 117, 117, 117, 117, - 406, 401, 1739, 1240, 1241, 1242, 1243, 117, 117, 230, - 1466, 1901, 2284, 97, 1942, 1943, 3162, 2713, 117, 117, - 104, 230, 2692, 107, 117, 1915, 3157, 3140, 117, 20, - 127, 2603, 181, 382, 1984, 2985, 169, 401, 126, 126, - 382, 401, 401, 401, 20, 1935, 401, 248, 401, 382, - 1890, 401, 382, 401, 401, 401, 401, 1947, 401, 238, - 401, 401, 38, 1300, 2593, 401, 401, 382, 382, 401, - 154, 20, 401, 401, 20, 7, 401, 401, 1918, 406, - 401, 13, 14, 401, 401, 73, 181, 19, 401, 21, - 66, 401, 38, 401, 126, 27, 126, 29, 325, 232, - 325, 404, 325, 2148, 287, 3066, 325, 325, 230, 325, - 325, 325, 220, 343, 406, 325, 344, 325, 1958, 325, - 66, 283, 1962, 207, 344, 325, 325, 325, 54, 230, - 385, 2176, 154, 388, 389, 390, 1976, 392, 393, 394, - 395, 396, 397, 119, 1984, 1985, 1986, 406, 403, 325, - 325, 325, 283, 325, 325, 230, 401, 241, 1998, 230, - 169, 401, 359, 351, 401, 401, 2116, 17, 20, 9, - 19, 147, 87, 119, 344, 189, 354, 20, 126, 20, - 230, 284, 266, 117, 2456, 2457, 270, 344, 357, 117, - 344, 325, 117, 349, 273, 2035, 219, 1268, 1654, 175, - 131, 147, 736, 356, 1941, 1276, 1662, 401, 323, 293, - 1947, 2051, 2229, 386, 1285, 2055, 2233, 323, 200, 200, - 293, 2737, 403, 323, 2920, 131, 406, 1298, 160, 175, - 2070, 163, 165, 165, 401, 401, 327, 402, 406, 325, - 388, 231, 406, 2083, 2084, 2085, 2086, 2264, 225, 325, - 402, 325, 385, 183, 1710, 388, 389, 390, 283, 392, - 393, 394, 395, 396, 397, 60, 2801, 220, 173, 401, - 403, 173, 401, 220, 1730, 220, 2116, 2117, 230, 236, - 36, 2951, 36, 406, 325, 402, 266, 2127, 2128, 325, - 406, 266, 266, 258, 270, 169, 20, 169, 274, 169, - 344, 344, 2142, 169, 280, 228, 388, 19, 325, 399, - 325, 287, 325, 325, 399, 2265, 126, 293, 2208, 169, - 388, 230, 2208, 234, 270, 301, 20, 139, 274, 401, - 230, 142, 2222, 309, 280, 142, 2222, 2287, 126, 2229, - 406, 287, 401, 2233, 20, 401, 230, 293, 402, 230, - 316, 406, 2192, 8, 136, 301, 36, 230, 197, 406, - 402, 131, 402, 309, 402, 402, 374, 402, 402, 2209, - 374, 3067, 131, 402, 2214, 402, 402, 374, 406, 355, - 401, 2271, 232, 2223, 402, 2271, 2226, 325, 2740, 357, - 183, 402, 402, 3089, 159, 402, 402, 3093, 3094, 2239, - 402, 3071, 401, 220, 402, 401, 401, 241, 183, 355, - 402, 1648, 244, 359, 244, 325, 192, 341, 1655, 1656, - 1657, 1658, 1659, 1660, 192, 2265, 192, 325, 325, 3090, - 325, 325, 2272, 325, 325, 325, 169, 169, 169, 169, - 169, 169, 169, 380, 2284, 399, 402, 2287, 286, 2186, - 198, 402, 2387, 230, 334, 268, 406, 183, 2195, 388, - 401, 2389, 2390, 2391, 2392, 228, 402, 325, 230, 344, - 230, 172, 172, 237, 2211, 402, 225, 344, 233, 401, - 401, 344, 25, 115, 115, 399, 406, 30, 110, 131, - 1024, 403, 2229, 126, 402, 402, 2233, 2387, 402, 353, - 45, 131, 401, 138, 1038, 2777, 2778, 159, 2780, 402, - 388, 334, 126, 402, 401, 169, 325, 325, 169, 2256, - 325, 2258, 1759, 325, 1761, 325, 2263, 2264, 169, 173, - 359, 402, 400, 20, 2484, 385, 2486, 469, 388, 389, - 390, 400, 392, 393, 394, 395, 396, 397, 2285, 126, - 482, 234, 155, 403, 486, 401, 2454, 56, 347, 317, - 172, 406, 20, 8, 401, 497, 3227, 402, 2408, 402, - 401, 135, 131, 401, 506, 401, 131, 402, 402, 401, - 358, 402, 36, 140, 3027, 517, 358, 406, 334, 521, - 406, 523, 2432, 2433, 2050, 2612, 220, 220, 117, 344, - 2617, 169, 145, 2620, 94, 406, 149, 220, 89, 1854, - 1855, 133, 2884, 2965, 1859, 156, 2456, 2457, 133, 400, - 131, 344, 2894, 149, 344, 105, 169, 170, 116, 402, - 401, 47, 47, 233, 1168, 174, 568, 131, 570, 182, - 2480, 325, 116, 169, 2484, 2485, 2486, 2487, 2488, 2489, - 2490, 401, 233, 1898, 1899, 131, 348, 2394, 2395, 401, - 401, 401, 302, 402, 402, 402, 2122, 262, 359, 2125, - 2126, 169, 215, 126, 20, 218, 401, 193, 220, 401, - 152, 256, 280, 2139, 280, 406, 233, 233, 126, 232, - 2146, 317, 2148, 230, 1228, 2740, 122, 1768, 348, 406, - 1771, 359, 105, 20, 1775, 230, 232, 230, 20, 100, - 2550, 2551, 2552, 401, 2554, 402, 161, 279, 92, 116, - 2176, 38, 2612, 342, 6, 261, 256, 2617, 401, 1699, - 2620, 953, 2188, 1958, 232, 1624, 622, 2577, 2075, 1273, - 2580, 2146, 2989, 2583, 2580, 2585, 1607, 1818, 2469, 66, - 1284, 2583, 2835, 1995, 297, 2142, 2596, 2213, 3202, 3226, - 3181, 3180, 3210, 695, 2263, 2585, 1250, 2773, 2608, 2868, - 2610, 3283, 1688, 3260, 2814, 2813, 2176, 2175, 2150, 711, - 3052, 2621, 3217, 2623, 2967, 2625, 1230, 3228, 720, 2629, - 2970, 2631, 27, 562, 726, 2643, 2595, 817, 3140, 3040, - 2750, 2015, 119, 2643, 1571, 737, 2601, 1570, 2545, 3106, - 3282, 2761, 3251, 2763, 606, 3016, 1496, 20, 803, 2579, - 2272, 1962, 1970, 1981, 2561, 803, 985, 1511, 986, 3101, - 147, 1490, 764, 2070, 2571, 1947, 1739, 984, 2235, 2892, - 500, 2362, 385, 1963, 2742, 388, 389, 390, 1674, 392, - 393, 394, 395, 396, 397, 2577, 3069, 2874, 175, 385, - 403, 2354, 388, 389, 390, 1973, 392, 393, 394, 395, - 396, 397, 1915, 38, 2891, 2612, 1826, 403, 1913, -1, - 2617, 813, -1, 2620, 1795, 1445, -1, 385, -1, 821, - 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, - 2740, 66, -1, -1, 1438, 403, -1, 2363, -1, -1, - 2750, 2751, -1, -1, -1, -1, -1, -1, -1, -1, - 2965, 2761, 2762, 2763, 2822, -1, -1, -1, 1999, -1, - -1, -1, -1, -1, 2774, -1, -1, 2777, 2778, 2779, - 2780, -1, -1, -1, -1, -1, 2402, 2964, -1, -1, - -1, -1, -1, 270, 119, 2845, -1, 274, -1, 2845, - -1, 150, -1, 280, -1, 154, 2806, -1, -1, -1, - 287, -1, -1, -1, -1, -1, 293, -1, -1, -1, - -1, -1, 147, -1, 301, -1, 3003, 2724, 2725, 2726, - 2727, -1, 309, -1, -1, -1, -1, -1, -1, 2455, - -1, 2891, -1, -1, -1, -1, 2462, -1, 2464, -1, - 2081, 2082, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 466, 2862, 3040, -1, -1, -1, -1, 2868, -1, - -1, -1, -1, -1, 2874, -1, 1570, 1571, 355, -1, - 2496, -1, -1, -1, 2884, -1, 2502, 2503, 2504, 2505, - 2506, 2507, -1, -1, 2894, -1, -1, -1, -1, -1, - -1, 169, -1, -1, -1, -1, -1, 2907, -1, -1, - -1, 2911, 2317, -1, -1, 2320, 2321, 2322, 2323, 2324, - 2325, 2326, 2327, 2328, -1, 2330, -1, -1, -1, -1, - 0, -1, 2548, 2549, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3121, 270, -1, 272, -1, 274, - 555, -1, -1, -1, -1, 280, 561, -1, -1, 1653, - -1, -1, 287, 3140, 232, 2965, -1, 572, 293, -1, - -1, -1, -1, -1, 2379, 2380, 301, 2874, 2594, -1, - -1, 1675, -1, -1, 309, -1, 591, -1, -1, -1, - -1, -1, -1, 2993, 2891, -1, -1, 67, -1, -1, - -1, -1, 607, -1, -1, 610, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3015, 2247, 3017, 2249, 624, - 2251, -1, 2253, -1, 2255, -1, 3203, -1, -1, 2260, - 355, -1, -1, -1, -1, -1, -1, -1, -1, 3039, - 3040, -1, -1, 113, 3044, 3045, -1, -1, -1, -1, - -1, -1, 3052, -1, -1, 2286, 126, -1, -1, -1, - -1, 131, -1, -1, -1, 135, -1, 2964, 138, -1, - 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 48, 501, 670, 577, 578, 822, 162, 670, 582, + 829, 11, 167, 42, 0, 672, 1315, 21, 865, 620, + 170, 1111, 798, 27, 878, 744, 1337, 12, 1695, 891, + 1211, 912, 913, 22, 728, 623, 1436, 941, 702, 1973, + 539, 34, 1144, 627, 738, 34, 2111, 1258, 48, 1372, + 931, 1727, 1022, 1276, 0, 7, 1244, 1051, 0, 1885, + 696, 13, 14, 2272, 1244, 2274, 0, 19, 494, 21, + 22, 1020, 24, 1695, 1696, 27, 28, 29, 1244, 1095, + 32, 33, 34, 849, 36, 779, 38, 39, 1020, 1059, + 784, 43, 775, 1244, 1244, 47, 1244, 791, 2142, 1603, + 1311, 1947, 2413, 2366, 1890, 1891, 800, 533, 2333, 157, + 1138, 142, 2624, 157, 1896, 1064, 0, 0, 1064, 1612, + 41, 2837, 38, 44, 17, 2788, 2808, 1609, 806, 1007, + 667, 814, 1064, 1011, 1012, 20, 25, 25, 0, 902, + 903, 2366, 46, 0, 0, 39, 667, 25, 2541, 0, + 58, 32, 65, 707, 30, 92, 1832, 157, 116, 5, + 39, 14, 92, 69, 927, 39, 92, 92, 3279, 0, + 142, 99, 92, 97, 92, 11, 111, 92, 85, 11, + 11, 11, 137, 48, 234, 91, 18, 156, 18, 120, + 0, 97, 137, 7, 236, 97, 237, 963, 11, 75, + 773, 2857, 1080, 2859, 267, 18, 0, 24, 1086, 24, + 139, 163, 164, 165, 109, 121, 168, 52, 170, 137, + 172, 173, 234, 175, 275, 177, 75, 179, 180, 181, + 0, 140, 1908, 30, 1910, 60, 216, 204, 1802, 48, + 32, 2352, 2353, 2354, 2355, 2356, 2357, 229, 1126, 139, + 55, 1129, 1130, 62, 0, 176, 97, 845, 46, 69, + 759, 94, 168, 240, 139, 11, 168, 25, 109, 134, + 243, 144, 39, 60, 120, 69, 101, 248, 1405, 252, + 19, 3304, 178, 92, 128, 94, 195, 176, 177, 1008, + 1239, 83, 11, 294, 281, 109, 370, 3546, 285, 69, + 1178, 7, 168, 64, 341, 341, 172, 1239, 296, 137, + 1214, 137, 241, 369, 101, 181, 311, 139, 296, 95, + 1201, 1202, 309, 225, 226, 703, 404, 1102, 1209, 420, + 1105, 141, 2995, 424, 301, 490, 174, 46, 227, 1466, + 418, 239, 87, 165, 400, 106, 25, 141, 192, 985, + 728, 501, 3601, 92, 163, 152, 419, 345, 359, 156, + 738, 1177, 1181, 419, 359, 48, 241, 345, 419, 419, + 1145, 141, 55, 286, 529, 167, 272, 153, 419, 62, + 311, 536, 424, 303, 364, 104, 341, 424, 424, 539, + 3413, 378, 236, 287, 191, 324, 229, 303, 371, 306, + 265, 303, 237, 109, 149, 382, 296, 419, 287, 2672, + 137, 1405, 332, 287, 309, 224, 1004, 1193, 400, 292, + 229, 262, 258, 341, 216, 334, 332, 336, 253, 400, + 332, 284, 163, 361, 165, 359, 1199, 1200, 252, 374, + 1134, 3104, 1136, 296, 352, 1208, 366, 2672, 294, 180, + 1169, 134, 424, 359, 1424, 424, 265, 359, 378, 204, + 366, 419, 207, 400, 366, 311, 253, 404, 277, 1951, + 400, 3582, 378, 537, 400, 351, 378, 541, 288, 424, + 3143, 406, 400, 1330, 316, 400, 316, 551, 406, 1438, + 355, 1174, 345, 1171, 288, 309, 1190, 176, 334, 419, + 336, 1471, 351, 316, 422, 3161, 1438, 299, 2901, 1690, + 335, 424, 329, 419, 329, 419, 313, 419, 288, 1056, + 287, 410, 411, 412, 413, 414, 415, 558, 424, 2640, + 424, 483, 421, 421, 419, 1056, 341, 415, 419, 491, + 1094, 2606, 494, 421, 496, 424, 355, 499, 335, 501, + 424, 503, 504, 505, 506, 559, 301, 561, 510, 563, + 512, 423, 514, 567, 2046, 1229, 423, 423, 378, 521, + 3233, 1673, 423, 404, 2196, 281, 2198, 39, 530, 410, + 411, 533, 265, 87, 378, 537, 424, 539, 1266, 541, + 542, 484, 423, 545, 749, 547, 424, 549, 424, 551, + 2426, 756, 554, 524, 2430, 1371, 1372, 48, 378, 759, + 420, 3293, 400, 423, 341, 229, 1382, 120, 3124, 1385, + 1119, 62, 137, 516, 92, 138, 420, 1393, 1394, 423, + 3277, 419, 132, 499, 1397, 1398, 2129, 503, 2314, 2315, + 1406, 1407, 229, 216, 596, 149, 598, 392, 514, 601, + 420, 1417, 807, 423, 412, 413, 414, 415, 404, 2770, + 369, 661, 1885, 421, 410, 411, 121, 406, 589, 621, + 140, 623, 355, 625, 419, 661, 1264, 423, 417, 406, + 419, 420, 149, 422, 118, 424, 97, 12, 7, 264, + 1263, 400, 3320, 134, 13, 422, 648, 92, 294, 62, + 204, 7, 654, 207, 1653, 621, 1472, 1653, 97, 625, + 419, 2333, 86, 343, 252, 661, 104, 2117, 106, 661, + 21, 1653, 3438, 174, 645, 195, 27, 661, 94, 92, + 92, 410, 411, 412, 413, 414, 415, 204, 172, 1340, + 1341, 254, 421, 281, 2366, 2309, 3393, 7, 2312, 2313, + 380, 23, 2316, 13, 216, 131, 224, 168, 60, 87, + 712, 713, 2326, 85, 38, 496, 830, 40, 343, 104, + 1719, 106, 119, 60, 97, 48, 84, 661, 661, 168, + 95, 512, 400, 283, 96, 159, 400, 1719, 740, 2411, + 109, 216, 52, 3299, 68, 48, 1295, 301, 137, 101, + 752, 314, 1751, 109, 332, 380, 870, 759, 311, 761, + 157, 245, 251, 400, 101, 767, 880, 156, 243, 771, + 393, 149, 92, 419, 265, 287, 778, 252, 892, 224, + 298, 94, 3143, 3440, 301, 787, 788, 2619, 153, 92, + 1868, 3504, 102, 283, 169, 168, 234, 309, 303, 109, + 124, 851, 112, 805, 806, 85, 808, 343, 224, 1285, + 1738, 224, 92, 175, 334, 851, 336, 229, 1746, 3497, + 1748, 264, 138, 873, 826, 827, 204, 332, 830, 207, + 154, 419, 2105, 155, 260, 2012, 2013, 873, 392, 224, + 2017, 3234, 303, 845, 216, 203, 896, 205, 3107, 234, + 163, 161, 372, 173, 1403, 851, 2971, 2972, 2973, 851, + 862, 366, 864, 865, 355, 915, 963, 851, 870, 871, + 354, 332, 195, 378, 876, 195, 96, 55, 880, 2056, + 2057, 128, 3539, 252, 62, 132, 888, 178, 378, 364, + 892, 3284, 894, 1824, 63, 945, 252, 21, 359, 1020, + 343, 253, 3435, 3436, 419, 366, 216, 331, 332, 348, + 11, 224, 281, 963, 419, 3572, 253, 378, 378, 1119, + 359, 224, 1036, 301, 93, 281, 229, 252, 3241, 0, + 303, 712, 713, 129, 424, 298, 1762, 380, 406, 62, + 3502, 3503, 252, 1064, 224, 192, 1044, 1045, 1029, 1047, + 1044, 1045, 423, 1047, 422, 175, 281, 63, 419, 424, + 285, 285, 265, 287, 424, 289, 3241, 69, 2012, 2013, + 333, 295, 2848, 2017, 277, 285, 100, 2853, 302, 3372, + 2856, 272, 95, 335, 309, 309, 359, 93, 1160, 236, + 771, 160, 2888, 317, 1044, 1045, 176, 1047, 335, 309, + 2672, 325, 1004, 104, 3537, 3421, 787, 788, 2844, 1011, + 1012, 3573, 2056, 2057, 392, 378, 379, 140, 303, 215, + 398, 85, 400, 1025, 805, 1027, 84, 1853, 1854, 1855, + 1856, 2183, 419, 1035, 1036, 422, 159, 1903, 2037, 141, + 153, 321, 1911, 2042, 324, 826, 827, 332, 61, 373, + 296, 138, 355, 378, 160, 2037, 419, 272, 224, 239, + 2042, 322, 323, 2617, 1236, 303, 1068, 104, 252, 106, + 1242, 1276, 195, 1278, 298, 3491, 1078, 164, 398, 399, + 400, 366, 1287, 3499, 404, 378, 1088, 1259, 400, 126, + 410, 411, 179, 378, 332, 1295, 311, 281, 252, 345, + 113, 2827, 189, 161, 270, 2719, 17, 419, 2469, 333, + 2130, 2725, 2726, 2727, 2728, 2729, 2730, 1119, 1239, 1121, + 3536, 244, 128, 300, 2497, 298, 132, 281, 366, 2195, + 2368, 424, 1337, 304, 419, 271, 3230, 281, 2368, 400, + 2866, 285, 2868, 3504, 359, 203, 3405, 205, 1150, 1151, + 1152, 1153, 2368, 2426, 378, 379, 1158, 2430, 5, 295, + 333, 332, 379, 10, 1897, 309, 1982, 2368, 2368, 1171, + 2368, 18, 185, 186, 304, 1289, 418, 1179, 1180, 1655, + 397, 419, 424, 1185, 1298, 198, 192, 224, 35, 378, + 2118, 333, 229, 176, 3178, 419, 1310, 234, 252, 2460, + 252, 372, 332, 1403, 291, 378, 379, 1893, 559, 252, + 561, 334, 563, 336, 2030, 414, 567, 17, 569, 570, + 419, 1335, 345, 422, 1338, 1339, 1276, 281, 1342, 281, + 236, 252, 355, 1235, 378, 424, 378, 379, 281, 252, + 252, 1243, 372, 2059, 1073, 1247, 419, 1249, 1250, 1251, + 1252, 1348, 3367, 418, 182, 309, 1258, 2397, 241, 424, + 281, 25, 1264, 379, 1266, 176, 309, 15, 16, 281, + 2201, 379, 1101, 2272, 2273, 2274, 2173, 419, 104, 2095, + 106, 397, 3158, 1285, 1286, 1320, 1924, 1289, 1290, 397, + 417, 2107, 2108, 1295, 73, 422, 1298, 1299, 1348, 1301, + 126, 1303, 38, 419, 26, 272, 1308, 1357, 1310, 1311, + 347, 419, 400, 1315, 1316, 282, 294, 1438, 2768, 356, + 333, 1357, 335, 1366, 400, 47, 1365, 1243, 1330, 417, + 241, 419, 68, 1335, 422, 415, 1338, 1339, 305, 379, + 1342, 421, 320, 419, 2518, 2522, 1348, 341, 2525, 2526, + 2527, 2528, 2529, 2530, 2531, 2532, 2533, 397, 2535, 138, + 400, 1357, 419, 1365, 1366, 1357, 2365, 1369, 2542, 1150, + 1151, 1152, 1153, 1357, 419, 379, 176, 422, 9, 419, + 118, 1352, 417, 2365, 419, 164, 132, 422, 124, 345, + 128, 378, 1442, 397, 132, 400, 400, 28, 1179, 1180, + 179, 1403, 400, 229, 1185, 151, 2583, 2584, 234, 420, + 189, 85, 399, 424, 419, 419, 400, 404, 154, 2439, + 403, 419, 283, 410, 411, 3142, 400, 410, 411, 412, + 413, 414, 415, 212, 172, 419, 3050, 3051, 421, 268, + 400, 241, 730, 400, 732, 419, 400, 132, 414, 176, + 399, 739, 836, 419, 192, 404, 422, 300, 2478, 419, + 239, 73, 419, 847, 66, 419, 151, 404, 1249, 1250, + 1251, 1252, 239, 410, 411, 45, 46, 244, 2522, 2193, + 2114, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, + 159, 2535, 403, 2943, 2145, 406, 407, 408, 236, 410, + 411, 412, 413, 414, 415, 420, 399, 245, 404, 424, + 421, 404, 291, 33, 410, 411, 252, 410, 411, 39, + 239, 347, 334, 419, 336, 244, 138, 2076, 420, 420, + 356, 423, 1653, 424, 777, 1316, 182, 420, 420, 2583, + 2584, 424, 424, 2563, 420, 281, 420, 420, 424, 285, + 424, 424, 164, 289, 32, 420, 420, 2556, 423, 295, + 424, 17, 2714, 151, 3290, 1615, 302, 179, 2029, 3241, + 2031, 2032, 1626, 309, 2556, 2848, 85, 189, 2490, 36, + 2853, 317, 361, 2856, 2735, 2736, 300, 1701, 2739, 325, + 2741, 2545, 2546, 378, 379, 420, 74, 25, 1719, 424, + 212, 1603, 30, 403, 2781, 420, 406, 407, 408, 424, + 410, 411, 412, 413, 414, 415, 354, 239, 420, 420, + 98, 421, 424, 424, 2440, 412, 413, 414, 415, 420, + 1751, 404, 420, 424, 421, 878, 424, 373, 420, 117, + 294, 295, 424, 420, 3258, 294, 295, 424, 1650, 1651, + 3322, 419, 1654, 1655, 1656, 133, 1007, 419, 1660, 420, + 1011, 1012, 777, 424, 1666, 1420, 37, 1669, 1423, 147, + 1672, 334, 2671, 336, 2673, 1677, 1678, 2581, 419, 291, + 1885, 1683, 420, 410, 411, 412, 413, 414, 415, 2671, + 36, 2673, 420, 417, 421, 419, 424, 26, 1700, 1701, + 394, 2700, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 2940, + 420, 1713, 1714, 84, 424, 1717, 1718, 378, 379, 1721, + 176, 485, 3439, 2654, 1726, 1727, 422, 420, 156, 1080, + 1732, 424, 1734, 1735, 1650, 1086, 2552, 2781, 1654, 2342, + 2343, 2344, 1744, 1745, 2367, 1747, 2643, 2644, 176, 177, + 1752, 229, 178, 1669, 1756, 1757, 1758, 1759, 1760, 237, + 334, 1677, 336, 878, 1766, 1767, 1768, 242, 2945, 2946, + 242, 1773, 2410, 1775, 1776, 1126, 420, 3227, 1129, 1130, + 424, 334, 341, 336, 1700, 241, 1788, 158, 1885, 664, + 239, 666, 270, 1795, 1796, 1797, 1798, 1799, 1800, 227, + 239, 1717, 17, 420, 1839, 420, 420, 424, 394, 424, + 424, 420, 2431, 241, 2433, 424, 1732, 1060, 1734, 1869, + 420, 2012, 2013, 1937, 424, 242, 2017, 1178, 26, 593, + 1832, 176, 203, 1869, 205, 1885, 1752, 420, 1840, 394, + 420, 424, 2611, 1759, 424, 216, 178, 420, 412, 613, + 1766, 424, 176, 378, 379, 619, 309, 1773, 622, 623, + 624, 136, 1864, 424, 3137, 2056, 2057, 97, 420, 1871, + 420, 420, 424, 420, 1117, 424, 2076, 424, 420, 420, + 251, 419, 424, 424, 1886, 3158, 420, 420, 1890, 1891, + 424, 424, 420, 420, 420, 1279, 241, 424, 424, 420, + 2105, 2945, 2946, 424, 1288, 1907, 1908, 1909, 1910, 395, + 396, 36, 1296, 1297, 3275, 286, 2037, 882, 883, 420, + 420, 2042, 1924, 424, 424, 420, 2146, 2147, 419, 424, + 1314, 1933, 1175, 420, 422, 1937, 2650, 424, 168, 2139, + 420, 2148, 2149, 1945, 424, 1060, 381, 403, 319, 1192, + 406, 407, 408, 419, 410, 411, 412, 413, 414, 415, + 420, 176, 2059, 1744, 424, 421, 420, 1969, 420, 420, + 424, 1973, 424, 424, 420, 403, 20, 420, 424, 419, + 1095, 424, 410, 411, 412, 413, 414, 415, 420, 422, + 239, 1234, 424, 421, 38, 420, 226, 420, 132, 424, + 420, 424, 1117, 190, 424, 361, 3183, 1788, 239, 2059, + 774, 239, 241, 2839, 1795, 1796, 1797, 1798, 1799, 1800, + 419, 2100, 2101, 2073, 68, 233, 241, 300, 182, 1945, + 3207, 3208, 1383, 1384, 420, 3384, 419, 3386, 424, 48, + 1391, 1284, 3315, 2093, 1395, 1396, 2048, 2951, 420, 20, + 420, 378, 424, 381, 424, 2105, 419, 1973, 403, 1410, + 1175, 1412, 407, 408, 26, 410, 411, 412, 413, 414, + 415, 420, 26, 303, 2076, 424, 421, 1192, 350, 420, + 124, 845, 1433, 424, 1435, 252, 410, 411, 412, 413, + 414, 415, 132, 182, 420, 420, 1211, 421, 424, 424, + 361, 122, 332, 122, 419, 122, 122, 381, 3107, 122, + 154, 424, 122, 239, 2930, 122, 2118, 122, 122, 1234, + 122, 122, 239, 122, 122, 2127, 1907, 2241, 1909, 359, + 419, 20, 190, 2333, 419, 1486, 366, 133, 182, 3183, + 132, 25, 132, 2257, 400, 400, 30, 2261, 378, 419, + 419, 2272, 2273, 2274, 419, 419, 2158, 2159, 2160, 3432, + 261, 419, 419, 3207, 3208, 419, 2366, 3064, 3345, 1284, + 249, 2173, 419, 400, 403, 400, 419, 406, 407, 408, + 2182, 410, 411, 412, 413, 414, 415, 20, 403, 419, + 424, 406, 407, 408, 400, 410, 411, 412, 413, 414, + 415, 965, 419, 419, 400, 38, 421, 419, 419, 419, + 419, 975, 2214, 2215, 2216, 2217, 419, 1601, 419, 1462, + 419, 2426, 986, 20, 419, 2430, 419, 419, 419, 419, + 419, 419, 75, 190, 20, 68, 132, 2239, 132, 2241, + 1004, 285, 2158, 1007, 2365, 289, 341, 1011, 1012, 341, + 422, 295, 239, 341, 341, 2257, 341, 302, 302, 2261, + 341, 341, 229, 341, 2469, 309, 360, 55, 152, 239, + 161, 341, 156, 317, 341, 1626, 2983, 419, 424, 361, + 252, 325, 341, 3187, 361, 341, 341, 36, 36, 341, + 419, 124, 176, 177, 341, 243, 239, 239, 2300, 341, + 341, 3345, 2304, 2305, 341, 341, 156, 191, 341, 298, + 341, 176, 2314, 2315, 378, 3059, 419, 419, 369, 419, + 20, 154, 19, 2239, 9, 92, 176, 361, 371, 373, + 198, 2522, 20, 377, 2525, 2526, 2527, 2528, 2529, 2530, + 2531, 2532, 2533, 227, 2535, 372, 239, 1462, 132, 182, + 2400, 419, 20, 2467, 299, 375, 122, 241, 3498, 7, + 122, 361, 176, 122, 2400, 13, 361, 122, 3265, 2419, + 41, 288, 341, 44, 228, 2489, 2426, 137, 1142, 339, + 2430, 2383, 2384, 2419, 366, 209, 374, 1738, 2304, 419, + 209, 241, 2583, 2584, 309, 1746, 421, 1748, 424, 2401, + 394, 339, 3218, 137, 52, 419, 3405, 419, 2410, 341, + 343, 150, 420, 424, 150, 406, 172, 240, 2420, 234, + 192, 2423, 341, 420, 298, 341, 2476, 241, 61, 313, + 180, 424, 239, 419, 2436, 2556, 180, 2986, 419, 229, + 2476, 246, 3346, 237, 2446, 424, 229, 229, 306, 341, + 281, 281, 285, 281, 102, 341, 289, 2459, 2460, 341, + 272, 109, 295, 176, 112, 2467, 20, 176, 2470, 302, + 1821, 176, 2672, 3377, 361, 2477, 309, 3381, 3382, 237, + 361, 1245, 3105, 176, 317, 176, 406, 2489, 19, 417, + 2492, 162, 325, 417, 2591, 341, 167, 341, 169, 341, + 1264, 419, 341, 174, 132, 176, 406, 134, 419, 20, + 3379, 182, 3378, 161, 2593, 2594, 2595, 2596, 1902, 403, + 145, 306, 406, 407, 408, 239, 410, 411, 412, 413, + 414, 415, 1916, 1917, 3350, 148, 1920, 421, 148, 132, + 373, 2591, 1926, 419, 377, 378, 424, 20, 122, 239, + 2671, 132, 2673, 403, 2470, 239, 406, 407, 408, 306, + 410, 411, 412, 413, 414, 415, 8, 332, 216, 1812, + 381, 421, 424, 2687, 2688, 1690, 2492, 142, 239, 2700, + 1695, 1696, 206, 424, 36, 420, 420, 137, 420, 403, + 2781, 1975, 406, 407, 408, 420, 410, 411, 412, 413, + 414, 415, 420, 420, 252, 2607, 419, 421, 424, 137, + 420, 420, 420, 394, 420, 2617, 420, 420, 420, 10, + 420, 420, 341, 394, 419, 248, 1390, 420, 128, 375, + 192, 2685, 419, 281, 364, 341, 166, 285, 229, 3455, + 419, 2643, 2644, 2848, 192, 256, 2648, 256, 2853, 3366, + 358, 2856, 3303, 176, 3366, 341, 201, 201, 201, 341, + 341, 309, 341, 341, 341, 341, 341, 176, 176, 176, + 176, 176, 176, 398, 417, 66, 192, 406, 7, 420, + 301, 207, 420, 243, 13, 2687, 2688, 350, 3554, 283, + 85, 378, 419, 424, 420, 86, 3245, 1812, 237, 239, + 341, 2703, 361, 239, 420, 2707, 2708, 2709, 2710, 2711, + 2712, 2713, 419, 179, 247, 179, 107, 419, 361, 234, + 1963, 361, 242, 52, 120, 1489, 424, 120, 417, 115, + 137, 132, 2648, 371, 46, 137, 144, 240, 421, 406, + 420, 166, 350, 134, 350, 341, 420, 420, 139, 419, + 132, 420, 341, 144, 2945, 2946, 420, 419, 341, 341, + 420, 176, 420, 1878, 420, 2116, 420, 2118, 159, 418, + 176, 418, 20, 102, 2776, 2777, 2778, 419, 2780, 378, + 109, 420, 180, 112, 419, 132, 2986, 162, 57, 381, + 2174, 2707, 333, 2709, 378, 424, 179, 419, 2848, 419, + 419, 419, 419, 2853, 2806, 420, 2856, 306, 141, 137, + 2812, 137, 483, 2815, 419, 2817, 420, 488, 420, 490, + 376, 376, 420, 424, 36, 2827, 146, 406, 2212, 2213, + 229, 350, 161, 122, 424, 229, 424, 3460, 176, 99, + 229, 94, 2844, 418, 2846, 163, 139, 137, 1963, 361, + 241, 20, 110, 524, 121, 2857, 85, 2859, 529, 2861, + 361, 420, 419, 137, 2866, 536, 2868, 181, 419, 38, + 341, 242, 419, 137, 365, 318, 7, 268, 420, 2881, + 377, 419, 13, 14, 419, 255, 420, 216, 19, 277, + 21, 420, 361, 378, 419, 419, 27, 132, 29, 68, + 20, 292, 424, 202, 229, 159, 269, 298, 2259, 48, + 295, 295, 583, 304, 48, 306, 47, 36, 589, 1683, + 242, 3035, 3036, 252, 3038, 240, 245, 132, 239, 600, + 333, 127, 3137, 242, 242, 365, 2990, 2991, 378, 20, + 424, 332, 333, 275, 424, 378, 337, 110, 239, 620, + 20, 3005, 281, 3158, 345, 124, 285, 239, 419, 350, + 105, 419, 2205, 420, 294, 2881, 121, 97, 639, 360, + 294, 6, 359, 2975, 645, 17, 1838, 269, 419, 2118, + 309, 372, 2333, 1012, 2986, 154, 3107, 2206, 1725, 2340, + 2341, 662, 3183, 2236, 2345, 2238, 661, 3496, 2671, 2331, + 3261, 2815, 2812, 1704, 3006, 2659, 2170, 1933, 3098, 3011, + 3012, 3518, 3553, 182, 3485, 2366, 3207, 3208, 3484, 2817, + 3022, 3023, 3526, 1260, 851, 2401, 1673, 3081, 2700, 2273, + 1794, 2824, 1246, 3035, 3036, 3037, 3038, 3151, 1802, 3244, + 1826, 3241, 173, 2378, 175, 3245, 177, 3161, 179, 3614, + 3589, 2365, 3072, 3071, 2335, 3533, 1237, 3247, 3467, 3109, + 2444, 3250, 3064, 27, 2448, 2881, 2450, 2310, 2452, 2453, + 3275, 3315, 590, 3109, 2826, 871, 3432, 2461, 749, 2830, + 2195, 2196, 3439, 2198, 3577, 756, 1696, 3613, 1852, 3291, + 2205, 1610, 20, 2809, 1041, 3011, 2477, 851, 2127, 636, + 851, 654, 2136, 2150, 1035, 1644, 3022, 2491, 3158, 3111, + 3315, 1875, 2636, 2990, 1643, 1054, 285, 1629, 3159, 1604, + 289, 2236, 1885, 2238, 2105, 2432, 295, 3129, 645, 2128, + 801, 802, 803, 302, 524, 3137, 807, 2806, 1811, 2382, + 309, 2566, 3348, 2558, 3512, 3516, 3513, 2139, 317, 3151, + 2073, 1984, 2071, 2396, 3345, 1952, 325, 1469, -1, 3161, + 1924, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3173, 3174, -1, -1, -1, 3178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 165, 3273, 3097, 3098, 3099, - 3100, 3101, 707, -1, -1, -1, 3003, -1, 3005, -1, - -1, -1, 1806, 183, -1, -1, -1, 385, -1, 468, - 2736, 389, 390, -1, 392, 393, 394, 395, 396, 397, - 3027, -1, -1, -1, -1, 403, -1, -1, -1, -1, - 3140, 3141, -1, 3040, -1, -1, 1238, -1, -1, -1, - 2555, 3048, 757, 758, 759, -1, 505, 227, -1, -1, - -1, -1, 511, -1, -1, 235, -1, -1, -1, 3264, - -1, -1, -1, -1, -1, 2791, 2792, 2793, -1, -1, - -1, -1, 3182, 3183, -1, -1, 1278, 2803, 2804, 3086, - 3190, 2807, 2808, -1, -1, 1287, -1, 1289, -1, -1, - -1, 3251, 1294, 273, -1, -1, -1, 3207, -1, -1, - 815, -1, -1, -1, 3264, -1, -1, -1, 3218, -1, - -1, -1, -1, -1, 3121, -1, -1, -1, -1, -1, - -1, 836, 3282, -1, -1, 2851, -1, -1, -1, -1, - -1, 590, -1, 3140, -1, -1, 316, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2875, - 3260, -1, -1, -1, -1, -1, -1, 337, 617, -1, + -1, -1, -1, -1, -1, 2310, -1, -1, 869, -1, + -1, -1, 2445, 7, 373, -1, -1, 3412, 377, 13, + -1, -1, -1, -1, -1, -1, -1, 3331, 2333, -1, + 891, -1, -1, -1, -1, -1, -1, 3432, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3283, -1, -1, -1, 357, -1, -1, - -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, - -1, -1, 2707, 2708, -1, -1, 3203, 377, 378, 379, + -1, -1, -1, 3245, -1, -1, -1, -1, 52, -1, + -1, 2366, -1, -1, -1, -1, 3037, -1, -1, -1, + 2503, -1, 3178, 3265, -1, -1, -1, 2382, -1, -1, + -1, -1, -1, -1, 3388, -1, -1, -1, -1, -1, + -1, 2396, -1, -1, 3405, -1, -1, -1, 3290, -1, + 3292, 2534, -1, -1, -1, -1, 2411, -1, 102, -1, + -1, -1, -1, -1, 2547, 109, -1, -1, 112, -1, + -1, -1, 3314, 3315, 3519, -1, -1, 3319, 3320, -1, + -1, 2672, -1, -1, -1, -1, -1, -1, -1, 3331, + 2445, -1, -1, -1, 2685, -1, -1, -1, 2581, -1, + -1, -1, -1, -1, -1, -1, 1017, -1, -1, -1, + -1, -1, -1, -1, 2118, -1, -1, 161, -1, -1, + 491, 3363, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, 505, 506, -1, -1, -1, 510, + -1, -1, 3384, 3385, 3386, 3387, 3388, -1, 2503, -1, + 521, -1, -1, 2744, 2745, -1, -1, -1, 3603, 530, + 169, -1, -1, -1, 2755, 174, 10, -1, -1, -1, + -1, 542, 216, 182, 545, -1, 547, -1, 549, 2534, + -1, 2772, -1, -1, -1, -1, -1, -1, -1, -1, + 3432, 3433, 2547, -1, -1, -1, 1107, -1, 42, -1, + -1, 69, -1, -1, -1, -1, -1, -1, 252, -1, + -1, 55, -1, -1, -1, -1, -1, -1, 62, -1, + -1, -1, 66, -1, -1, 596, 2581, 598, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 281, -1, -1, + 2864, 285, 86, 1154, 3486, -1, 3488, 2871, 2872, -1, + 118, -1, 2256, -1, 10, 3497, 3593, -1, -1, -1, + 128, -1, 1173, 107, 132, 309, 22, -1, -1, 137, + 3512, -1, -1, 141, 2278, -1, 144, -1, 146, -1, + -1, 3523, -1, 654, -1, -1, 42, 3577, -1, -1, + -1, -1, 3534, 3314, -1, 139, -1, -1, 3319, 3320, + -1, -1, -1, 3593, 172, 2309, -1, -1, 2312, 2313, + 66, 2794, 2316, -1, -1, 159, -1, 2672, -1, -1, + -1, -1, 2326, 3613, 192, 0, -1, 2331, -1, 2333, + 86, -1, -1, -1, -1, -1, -1, -1, -1, 183, + -1, -1, -1, -1, -1, -1, -1, 3589, -1, -1, + -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2366, -1, 3385, 1276, 3387, 1278, 236, 740, + -1, -1, 3614, -1, -1, 2379, 1287, 245, 134, -1, + -1, 752, -1, 139, -1, -1, -1, -1, 144, 1300, + 761, -1, -1, -1, 69, -1, 767, 241, 1309, 2990, + 2991, -1, -1, 159, -1, 2409, 2410, 778, -1, -1, + -1, -1, 3433, -1, 3005, -1, -1, -1, -1, -1, + 288, -1, 3013, 3014, 268, -1, 1337, 3018, 3019, 1340, + 1341, -1, -1, -1, -1, -1, -1, 808, -1, 2794, + -1, 1352, -1, 118, -1, -1, -1, -1, 292, -1, + -1, -1, 296, 128, 298, -1, -1, 132, -1, -1, + 304, -1, 137, -1, 332, -1, 141, 3488, 2951, 144, + -1, 146, -1, -1, 483, 2830, 3497, -1, -1, 488, + -1, -1, -1, -1, -1, 241, 354, -1, 332, 333, + 3081, 862, -1, 337, -1, 251, -1, 172, -1, -1, + -1, 345, 3523, -1, -1, 876, 350, 375, -1, 377, + 378, -1, 268, -1, -1, -1, -1, 192, -1, -1, + -1, -1, -1, -1, 3007, -1, -1, -1, 372, -1, + -1, -1, 3015, -1, -1, -1, 292, -1, -1, -1, + 296, 7, 298, 3167, -1, 3169, 3170, 13, 304, 417, + 306, -1, 420, 3177, 422, 423, -1, 1468, -1, -1, + -1, 236, -1, 2567, -1, -1, 1477, -1, -1, -1, + 245, 37, -1, -1, 583, -1, 332, 333, -1, -1, + -1, 337, -1, -1, -1, 2940, 52, -1, -1, 345, + -1, 600, -1, -1, 350, -1, 2951, -1, -1, 17, + -1, -1, -1, -1, 360, 2609, -1, 25, -1, -1, + -1, 620, 30, 288, -1, -1, 372, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2015, 2016, -1, 2018, -1, 42, -1, -1, 399, - -1, -1, 402, -1, 404, 405, -1, 2031, 54, 2033, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, -1, 701, 702, 959, -1, -1, -1, -1, 708, - -1, -1, -1, -1, -1, 81, 715, -1, -1, 2985, - -1, -1, -1, -1, 2990, -1, 3273, -1, -1, -1, - 2074, -1, 2779, -1, -1, -1, 102, 736, -1, -1, + 639, -1, -1, -1, -1, -1, 102, -1, -1, -1, + -1, -1, -1, 109, -1, -1, 112, -1, -1, -1, + 3241, -1, 3007, 662, -1, -1, -1, 332, -1, -1, + 3015, -1, -1, -1, 1035, -1, -1, -1, 2672, -1, + -1, -1, -1, -1, -1, -1, -1, 17, -1, 354, + 3163, 21, 2686, -1, -1, 25, -1, -1, -1, 2693, + 30, 2695, 158, -1, -1, 161, -1, -1, -1, 1610, + 375, -1, 377, 378, 3187, -1, -1, 1078, -1, -1, + -1, -1, -1, -1, -1, 2719, -1, -1, -1, 3343, + -1, 2725, 2726, 2727, 2728, 2729, 2730, -1, -1, -1, + -1, -1, -1, -1, 152, -1, -1, 203, 156, 205, + -1, -1, 417, -1, -1, 420, -1, 422, 423, -1, + 216, -1, -1, -1, -1, -1, -1, -1, 176, 177, + 100, -1, -1, -1, -1, -1, -1, -1, 2772, 2773, + 2774, 2775, -1, 191, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 251, 252, 3142, -1, -1, + -1, -1, 801, 802, 803, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1716, 224, -1, 3163, 227, + -1, -1, 152, -1, -1, 281, 156, -1, -1, 285, + 286, 2825, -1, 241, -1, -1, 244, -1, -1, -1, + -1, -1, 3187, -1, -1, -1, 176, 177, -1, -1, + -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, + -1, 191, 777, 319, 162, -1, -1, -1, -1, 167, + 869, -1, -1, 3346, 1235, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1247, -1, -1, -1, + 17, -1, 891, -1, 224, -1, 3241, 227, 25, -1, + -1, -1, -1, 30, 3377, 313, -1, -1, 3381, 3382, + -1, 241, -1, -1, 244, -1, -1, 8, -1, -1, + -1, -1, -1, -1, -1, 1286, -1, -1, -1, 1290, + -1, -1, -1, -1, -1, 1836, -1, -1, 1299, -1, + 1301, -1, 1303, -1, -1, -1, -1, 1308, -1, -1, + -1, -1, -1, 3534, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 878, -1, -1, -1, -1, -1, 1870, + 61, -1, -1, -1, -1, -1, 1877, 3322, -1, 70, + 71, 72, -1, 313, 1885, -1, -1, 2981, -1, -1, + -1, -1, -1, -1, -1, 403, -1, -1, 406, 407, + 408, 3346, 410, 411, 412, 413, 414, 415, 3589, -1, + 418, -1, -1, 421, -1, -1, -1, 425, 1017, -1, + -1, -1, -1, 114, -1, 152, -1, -1, -1, 156, + -1, 361, 3377, 3614, -1, -1, 3381, 3382, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 176, + 177, -1, -1, -1, -1, -1, 3050, 3051, -1, -1, + -1, -1, -1, -1, 191, 156, -1, 3061, 3062, -1, + 161, 3065, 3066, 403, -1, -1, 406, 407, 408, -1, + 410, 411, 412, 413, 414, 415, -1, -1, -1, -1, + -1, 421, 1007, -1, 3439, -1, -1, 224, -1, -1, + 227, -1, -1, -1, -1, -1, -1, -1, 1107, 200, + -1, -1, -1, -1, 241, -1, -1, 244, -1, -1, + -1, 3115, -1, -1, -1, -1, 217, 218, 219, 220, + 221, -1, 223, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1060, -1, 3141, -1, -1, + -1, -1, -1, -1, -1, 1154, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, + -1, -1, -1, -1, 1173, -1, -1, -1, -1, -1, + 1095, -1, -1, -1, -1, -1, 313, -1, -1, -1, + -1, -1, 490, -1, -1, -1, -1, -1, 2099, -1, + -1, 292, 1117, -1, 2105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2635, 2636, -1, -1, -1, -1, - -1, -1, -1, -1, 763, -1, -1, 133, -1, -1, - -1, 3037, -1, -1, -1, -1, -1, -1, -1, 2123, - -1, -1, -1, -1, -1, -1, 152, 1529, -1, -1, - -1, -1, -1, -1, -1, 1537, 0, -1, -1, 1054, - -1, 1543, 801, -1, 2148, -1, -1, 1549, -1, -1, - 176, -1, 1554, -1, -1, -1, -1, 1559, -1, -1, - -1, -1, -1, -1, 823, -1, -1, -1, -1, -1, - -1, -1, 2176, -1, -1, -1, 1578, -1, 1580, -1, - -1, -1, -1, -1, -1, -1, 845, 2191, -1, -1, - 1592, 1593, 1594, -1, -1, -1, -1, -1, -1, -1, - 2204, 2916, -1, 67, -1, -1, 232, 1609, 1610, 1611, - 1612, 2215, 871, -1, 1616, 1617, -1, -1, 1620, 1621, - 1622, -1, -1, -1, 1626, 2940, 2941, -1, -1, 255, - -1, 1633, -1, -1, 1636, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2248, 904, 905, -1, 907, 113, - 2254, 277, -1, -1, -1, 281, -1, 283, -1, -1, - -1, -1, 126, 289, -1, 924, -1, 131, -1, -1, - -1, 135, -1, 17, 138, -1, 140, -1, -1, -1, - -1, 25, -1, -1, -1, -1, 30, -1, -1, -1, - 316, 317, 3218, -1, 2298, 321, -1, -1, -1, -1, - -1, 165, -1, 329, -1, -1, -1, -1, 334, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 183, - 979, -1, -1, 982, 983, 2329, -1, -1, 354, -1, - -1, 990, 3039, -1, 3260, 994, -1, 3044, 3045, 2343, + -1, -1, -1, -1, -1, -1, -1, -1, 17, -1, + -1, 529, -1, -1, -1, -1, 25, 328, 536, 330, + -1, 30, -1, -1, 2145, -1, -1, 3241, -1, -1, + 17, -1, -1, 20, -1, -1, -1, -1, 25, -1, + 1175, -1, 353, 30, 3258, -1, -1, -1, 3262, 360, + -1, -1, 363, -1, -1, -1, 403, 1192, -1, 406, + 407, 408, -1, 410, 411, 412, 413, 414, 415, -1, + 1651, -1, -1, -1, 421, 1656, 1211, 424, 25, 1660, + -1, 1300, -1, 30, -1, 1666, -1, -1, -1, -1, + 1309, 1672, -1, -1, -1, -1, -1, 1678, 3312, 1234, + 618, -1, 1683, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3066, -1, -1, -1, -1, -1, 3283, -1, 2900, - 2901, 2902, 2903, 227, -1, 1024, -1, -1, -1, 2910, - -1, 235, -1, 1288, -1, -1, -1, -1, -1, 1038, - 1295, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3098, -1, 3100, -1, -1, -1, -1, -1, -1, - -1, 145, 1317, 1318, -1, 149, -1, -1, -1, 273, - 1812, -1, -1, -1, 1329, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 169, 170, -1, -1, -1, - -1, -1, -1, -1, 3141, -1, -1, -1, 182, -1, + -1, 1340, 1341, -1, -1, 1706, 1707, 1708, 1709, -1, + -1, -1, 1713, 1714, 652, -1, -1, 1718, -1, -1, + 1721, -1, -1, 152, -1, -1, -1, 156, -1, 1284, + -1, -1, -1, -1, 1735, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1745, 152, 1747, 176, 177, 156, + -1, -1, -1, -1, -1, 1756, 1757, 1758, -1, 1760, + -1, -1, 191, -1, -1, -1, 1767, 1768, -1, 176, + 177, -1, -1, -1, 1775, 1776, -1, -1, -1, -1, + -1, -1, -1, -1, 191, 152, -1, -1, -1, 156, + -1, -1, -1, -1, -1, 224, -1, -1, 227, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 176, + 177, 749, 241, -1, -1, 244, -1, 224, 756, -1, + 227, -1, -1, -1, 191, -1, -1, -1, -1, 1468, + -1, -1, -1, -1, 241, -1, 2377, 244, 1477, 777, + -1, -1, -1, -1, -1, -1, 2387, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, + 227, -1, 2403, -1, -1, -1, -1, -1, -1, 807, + -1, -1, -1, -1, 241, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 313, 2426, -1, -1, -1, 2430, + -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, + 3534, -1, -1, -1, 25, -1, 313, 1462, -1, 30, + -1, 849, -1, 2454, -1, -1, 2457, -1, -1, -1, + -1, -1, -1, 2464, -1, -1, -1, -1, 2469, -1, + -1, -1, 25, -1, -1, -1, -1, 30, -1, -1, + 878, -1, -1, -1, -1, -1, 313, -1, -1, 2490, + -1, -1, -1, -1, -1, 3589, -1, -1, -1, -1, + -1, -1, 900, -1, -1, -1, -1, -1, 1969, -1, + -1, 1610, -1, -1, 403, -1, -1, 406, 407, 408, + 3614, 410, 411, 412, 413, 414, 415, -1, -1, -1, + 928, 398, 421, -1, -1, 424, 403, -1, -1, 406, + 407, 408, -1, 410, 411, 412, 413, 414, 415, -1, + -1, 132, -1, -1, 421, -1, 137, -1, -1, -1, + -1, -1, 960, 961, 117, 963, -1, -1, -1, -1, + -1, 152, -1, -1, -1, 156, 403, -1, -1, 406, + 407, 408, 980, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, -1, 421, 176, 177, 2598, 2599, 152, + -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, + 191, -1, -1, -1, -1, -1, -1, 1716, -1, -1, + -1, 1019, 1020, 176, 177, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 191, -1, + -1, -1, -1, 224, -1, -1, 227, -1, 1046, -1, + -1, -1, 1050, 1051, -1, -1, -1, -1, -1, -1, + 241, -1, 1060, 244, -1, -1, 1064, -1, -1, -1, + -1, -1, -1, -1, 227, 1690, -1, -1, -1, -1, + 1695, 1696, -1, -1, -1, -1, -1, -1, 241, -1, + -1, -1, -1, -1, -1, -1, -1, 1095, 2159, 2160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2472, -1, - -1, 215, -1, 337, 218, -1, 3183, -1, -1, -1, - -1, -1, -1, 3190, -1, -1, -1, -1, 232, -1, - 234, -1, -1, 357, -1, -1, -1, -1, -1, -1, - 3207, -1, -1, -1, -1, -1, -1, -1, -1, 1168, - -1, -1, -1, 377, 378, 379, -1, -1, -1, -1, - -1, -1, -1, 3064, -1, -1, -1, 1186, -1, 1444, - -1, -1, -1, -1, -1, 399, -1, -1, 402, -1, - 404, 405, -1, -1, -1, -1, 1205, -1, -1, -1, - -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, - -1, -1, 2566, -1, -1, -1, -1, -1, -1, 1228, - -1, -1, -1, 1232, -1, -1, -1, -1, -1, -1, - -1, 1496, -1, 1985, 1986, -1, 17, -1, -1, -1, + -1, -1, -1, -1, 17, -1, -1, -1, -1, 1117, + -1, 2182, 25, -1, -1, -1, -1, 30, -1, -1, + -1, -1, 313, -1, -1, -1, 17, 1836, -1, -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, 30, - -1, -1, -1, -1, -1, -1, 1265, -1, 1267, -1, - -1, -1, -1, -1, 1273, -1, 1275, -1, -1, -1, - -1, -1, -1, -1, -1, 1284, -1, -1, -1, -1, + -1, -1, -1, 2214, 2215, 2216, 2217, -1, -1, -1, + 313, -1, -1, -1, -1, -1, -1, -1, 2769, -1, + -1, 1870, -1, -1, -1, -1, -1, 1175, 1877, -1, + -1, -1, -1, -1, -1, -1, 2787, -1, -1, -1, + -1, -1, -1, -1, 1192, -1, -1, 1812, 2799, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 385, -1, 736, 388, 389, 390, -1, 392, 393, - 394, 395, 396, 397, -1, 1314, 400, -1, -1, 403, - -1, -1, -1, 407, -1, -1, 17, -1, -1, -1, - -1, -1, -1, -1, 25, -1, -1, -1, -1, 30, - -1, 2083, 2084, 2085, 2086, -1, -1, -1, 17, 1348, - 1349, -1, 21, -1, -1, -1, 25, 1356, -1, -1, - 1359, 30, -1, 1362, 1619, -1, -1, -1, -1, -1, - -1, 1370, 1371, -1, 145, 2117, -1, -1, 149, 1378, - -1, -1, 1381, 1382, 1383, 1384, -1, -1, -1, -1, - 823, -1, 1391, 1392, -1, 1394, -1, 1396, 169, 170, - 1399, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2754, 182, -1, -1, -1, 1414, 1415, -1, -1, 1418, - -1, -1, -1, 1422, -1, -1, 95, 1426, -1, -1, - 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, - -1, 1440, 1697, -1, 215, -1, 1445, 218, -1, 1448, - 2192, -1, -1, -1, 145, -1, -1, -1, 149, -1, - -1, 232, -1, 234, -1, -1, -1, 2209, -1, -1, - 1725, -1, -1, -1, -1, -1, 145, 1732, 169, 170, - 149, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 182, -1, -1, -1, -1, -1, -1, -1, 1498, - 169, 170, -1, -1, -1, -1, -1, -1, -1, -1, - 10, -1, -1, 182, -1, 948, -1, -1, -1, -1, - -1, -1, -1, -1, 215, -1, 297, 218, -1, -1, - -1, -1, 1531, -1, -1, -1, -1, -1, -1, -1, - -1, 232, -1, 234, -1, -1, 215, -1, 1547, 218, - -1, -1, 2896, -1, -1, -1, -1, 990, -1, -1, - -1, -1, -1, 232, 64, 234, -1, 1566, -1, -1, - -1, 1570, 1571, -1, -1, -1, -1, -1, -1, -1, - -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1024, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 102, -1, -1, 1038, 297, -1, -1, -1, - -1, -1, -1, -1, 385, -1, -1, 388, 389, 390, - -1, 392, 393, 394, 395, 396, 397, -1, 297, -1, - -1, -1, 403, 133, -1, 406, -1, -1, 138, -1, - -1, -1, -1, -1, -1, -1, 1645, -1, -1, -1, - -1, -1, 152, -1, 1653, -1, -1, -1, -1, -1, + -1, -1, -1, 1211, -1, -1, -1, -1, -1, -1, + -1, -1, 403, -1, -1, 406, 407, 408, -1, 410, + 411, 412, 413, 414, 415, -1, 1234, -1, -1, 2300, + 421, 1239, -1, -1, 2305, -1, -1, 2848, -1, 152, + 403, -1, 2853, 156, -1, 2856, -1, 410, 411, 412, + 413, 414, 415, 1878, -1, -1, -1, -1, 421, -1, + -1, 152, -1, 176, 177, 156, -1, -1, 1276, -1, + 1278, -1, -1, -1, -1, -1, 1284, -1, 191, 1287, + -1, -1, -1, -1, -1, 176, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 590, 1673, 344, 1675, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1941, -1, -1, -1, - -1, -1, -1, -1, 385, -1, -1, 388, 389, 390, - 617, 392, 393, 394, 395, 396, 397, -1, -1, -1, - -1, -1, 403, -1, -1, 406, 385, -1, -1, 388, - 389, 390, -1, 392, 393, 394, 395, 396, 397, -1, - -1, -1, 232, -1, 403, 1168, -1, -1, 2480, -1, - 1739, -1, -1, 2485, -1, 2487, 2488, 2489, 2490, -1, - 1749, -1, -1, 1186, -1, 255, -1, -1, -1, -1, + 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 224, 2383, 2384, 227, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 241, 1337, + 2401, 244, 17, 224, -1, -1, 227, -1, 1963, -1, + 25, -1, -1, -1, -1, 30, -1, -1, -1, 262, + 241, 2962, 2963, 2964, 2965, -1, -1, -1, -1, -1, + -1, -1, -1, 1371, 1372, -1, -1, -1, -1, -1, + -1, 1379, -1, -1, 1382, 2446, -1, 1385, -1, -1, + -1, -1, -1, -1, -1, 1393, 1394, -1, 2459, -1, + 2099, -1, -1, 1401, -1, -1, 1404, 1405, 1406, 1407, + 313, -1, 17, -1, -1, 20, 1414, 1415, -1, 1417, + 25, 1419, -1, 326, 1422, 30, -1, -1, -1, -1, + -1, -1, 313, -1, -1, -1, -1, -1, -1, 1437, + 1438, -1, -1, 1441, -1, -1, 2145, 1445, -1, -1, + -1, 1449, -1, -1, -1, 1453, 1454, 1455, 1456, 1457, + 1458, 1459, 1460, 1461, 1462, -1, 1464, -1, -1, -1, + -1, 1469, 17, -1, 1472, -1, -1, 152, -1, -1, + 25, 156, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1205, -1, -1, -1, -1, 277, -1, 1778, - -1, -1, -1, 283, 701, -1, -1, -1, -1, 289, - 10, -1, 25, -1, -1, 1228, 1795, 30, -1, -1, - -1, -1, 22, -1, -1, -1, -1, 1806, 2550, 2551, - 2552, -1, 2554, -1, -1, -1, 316, 317, 3162, -1, - -1, 321, 42, -1, -1, 1824, 1825, -1, -1, 329, - -1, -1, -1, -1, 334, -1, -1, -1, -1, -1, - 1273, 61, -1, 343, 64, -1, -1, -1, -1, -1, - -1, 1284, -1, -1, 354, 1854, 1855, -1, -1, -1, - 1859, 81, -1, -1, -1, -1, -1, 87, -1, -1, - -1, -1, 1871, 1872, 1873, 1874, -1, -1, -1, -1, - 1879, -1, 102, 2625, 1883, 1884, -1, 1886, -1, -1, - 1889, -1, -1, -1, -1, -1, -1, -1, -1, 1898, - 1899, -1, 1901, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 145, 133, 134, 1914, 149, 1916, 138, -1, - -1, 1920, -1, -1, -1, -1, -1, -1, 845, -1, - -1, 2186, 152, -1, -1, -1, 169, 170, 1937, -1, - 2195, -1, -1, -1, -1, -1, -1, -1, 1947, 182, - 1949, 1950, -1, -1, 871, 175, 2211, -1, -1, -1, - -1, -1, -1, -1, -1, 1964, 186, -1, -1, -1, - -1, 1970, -1, -1, -1, -1, -1, -1, -1, -1, - 1979, 1980, 1981, -1, -1, 218, -1, 904, 905, -1, - 907, -1, -1, -1, -1, 1994, -1, -1, -1, 232, - -1, 2256, -1, 2258, -1, 1438, -1, 924, 2263, 2751, - -1, -1, 232, -1, 234, -1, 2015, 2016, -1, 2018, - 2762, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2285, -1, 2031, -1, 2033, 255, -1, 17, -1, -1, - -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, - 30, -1, -1, -1, -1, -1, -1, 277, -1, -1, - -1, 281, 979, 283, 297, 982, 983, -1, -1, -1, - -1, -1, -1, -1, -1, 2074, 17, -1, -1, -1, - -1, -1, -1, -1, 25, -1, -1, -1, -1, 30, - -1, -1, -1, -1, -1, -1, -1, 317, 318, -1, - 320, 321, -1, -1, -1, -1, -1, -1, -1, 329, - -1, -1, -1, 333, 334, -1, -1, -1, 338, -1, - 2862, -1, -1, 343, 2123, -1, 2868, -1, -1, -1, - -1, -1, -1, 1566, -1, -1, -1, 1570, 1571, 2394, - 2395, -1, -1, -1, -1, -1, 126, -1, -1, 2148, - -1, 131, 385, -1, -1, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 145, -1, -1, -1, 149, - 403, -1, -1, -1, -1, -1, 2175, 2176, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 169, - 170, -1, 2191, -1, -1, -1, 736, -1, -1, -1, - -1, -1, 182, -1, 145, 2204, -1, -1, 149, -1, - -1, -1, -1, -1, -1, -1, 2215, -1, -1, -1, - 1653, -1, -1, -1, -1, -1, -1, -1, 169, 170, - 2229, -1, -1, -1, 2233, 215, -1, -1, 218, -1, - -1, 182, 1675, -1, 2243, -1, -1, -1, -1, 2248, - -1, -1, 232, -1, 234, 2254, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2264, -1, -1, -1, -1, - -1, -1, 736, -1, 215, -1, -1, 218, -1, -1, - -1, -1, -1, 823, -1, -1, -1, -1, -1, -1, - 2545, 232, -1, 234, -1, -1, 2295, -1, -1, 2298, - -1, -1, -1, -1, -1, 2304, 2561, -1, 249, -1, - -1, 2310, -1, 2312, -1, -1, 2571, 297, 2317, -1, - -1, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, - 2329, 2330, -1, -1, -1, 2334, 2335, -1, -1, -1, - -1, -1, -1, -1, 2343, -1, -1, -1, -1, 2348, - -1, -1, -1, 2352, -1, 2354, 297, -1, -1, 823, - -1, -1, -1, -1, -1, 2364, -1, -1, 2367, 310, - 2369, -1, -1, 1806, -1, -1, -1, -1, 2377, 2378, - 2379, 2380, -1, -1, -1, 2384, -1, -1, 2387, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2397, -1, - -1, -1, -1, -1, -1, 385, -1, -1, 388, 389, - 390, -1, 392, 393, 394, 395, 396, 397, -1, -1, - -1, -1, -1, 403, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1356, - 3182, -1, -1, -1, 385, -1, -1, 388, 389, 390, - 990, 392, 393, 394, 395, 396, 397, -1, -1, -1, - -1, 1378, 403, -1, 1381, -1, -1, 1384, -1, 2724, - 2725, 2726, 2727, 2472, 1391, 1392, -1, -1, -1, 1396, - -1, -1, 1399, -1, 1024, -1, -1, -1, 25, -1, - -1, -1, -1, 30, -1, -1, -1, 1414, 1038, -1, - -1, 1418, -1, -1, -1, 1422, -1, -1, -1, 1426, - -1, -1, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, - 1437, -1, -1, 1440, -1, -1, 990, -1, 1445, -1, - -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, + 403, 176, 177, 406, 407, 408, -1, 410, 411, 412, + 413, 414, 415, -1, -1, -1, 191, -1, 421, -1, + -1, -1, 403, -1, -1, 406, 407, 408, -1, 410, + 411, 412, 413, 414, 415, -1, 3137, -1, -1, -1, + 421, -1, -1, -1, -1, -1, -1, 152, -1, 224, + -1, 156, 227, -1, -1, -1, -1, 3158, -1, -1, + -1, -1, -1, -1, -1, -1, 241, -1, -1, 244, + -1, 176, 177, -1, -1, -1, -1, -1, -1, -1, + 2195, 2196, -1, 2198, -1, -1, 191, -1, -1, -1, + 2205, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, + -1, 156, -1, -1, 1612, -1, -1, -1, -1, 224, + -1, 2236, 227, 2238, -1, -1, -1, -1, -1, -1, + -1, 176, 177, -1, -1, -1, 241, -1, 313, 244, + -1, -1, 2703, 3244, -1, -1, 191, 2708, -1, 2710, + 2711, 2712, 2713, -1, -1, 1653, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 736, -1, -1, -1, -1, 2555, -1, -1, -1, - 1024, -1, -1, -1, -1, -1, -1, 2566, -1, -1, - -1, -1, -1, -1, 1038, 112, -1, -1, -1, -1, - -1, 1498, 2015, 2016, -1, 2018, 60, -1, -1, -1, - -1, -1, -1, -1, 68, 69, 70, -1, 2031, -1, - 2033, -1, -1, -1, -1, -1, -1, -1, 145, -1, - -1, -1, 149, 2612, -1, -1, -1, -1, 2617, -1, - -1, 2620, -1, -1, -1, -1, -1, -1, 1168, -1, - 1547, -1, 169, 170, -1, 109, -1, -1, 823, -1, - -1, 2074, -1, -1, -1, 182, 1186, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2656, -1, -1, - -1, -1, -1, -1, -1, 1205, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 149, -1, -1, -1, -1, - 154, 218, -1, -1, -1, -1, -1, -1, 1228, -1, - 2123, -1, -1, 2692, -1, 232, -1, -1, -1, -1, - 2699, 2700, -1, 2702, 1168, -1, -1, -1, 2707, 2708, - 736, -1, -1, 2712, 2713, 2148, -1, 191, -1, 2718, - 2719, -1, 1186, 2722, -1, -1, -1, -1, 1645, -1, - -1, -1, -1, 1273, 208, 209, 210, 211, 212, -1, - 214, 1205, -1, 2176, 1284, -1, -1, -1, -1, -1, - 3005, -1, -1, -1, -1, 2754, 1673, -1, 2191, -1, - 297, -1, -1, -1, 1228, -1, -1, -1, -1, -1, - 244, 2204, 3027, -1, -1, 17, -1, -1, 20, -1, - -1, -1, 2215, 25, -1, -1, -1, -1, 30, -1, - -1, -1, -1, 3048, -1, -1, 736, 823, -1, -1, - -1, -1, 25, 277, -1, 990, -1, 30, -1, 1273, - -1, -1, -1, -1, -1, 2248, -1, -1, -1, -1, - 1284, 2254, -1, -1, -1, -1, -1, -1, 736, -1, - -1, 3086, 1749, -1, -1, 2834, -1, -1, 312, 1024, - 314, -1, -1, -1, -1, -1, -1, -1, 385, -1, - -1, -1, -1, 1038, -1, 392, 393, 394, 395, 396, - 397, 1778, 336, -1, -1, 2298, 403, -1, -1, 343, - -1, -1, 346, -1, -1, 2874, -1, -1, 1795, -1, - -1, -1, -1, 823, -1, -1, -1, -1, 2887, -1, - -1, -1, 2891, -1, -1, -1, 2329, 2896, 1438, -1, - -1, -1, -1, 145, -1, -1, -1, 149, 1825, -1, - 2343, -1, -1, -1, -1, 823, -1, 2916, -1, -1, - -1, 2920, 145, -1, -1, -1, 149, 169, 170, -1, + -1, -1, 1670, -1, 3275, -1, -1, 3278, 2377, 224, + -1, -1, 227, -1, -1, -1, -1, -1, 2387, -1, + -1, -1, 1690, -1, -1, 2310, 241, 1695, 1696, 244, + -1, -1, 3303, -1, 2403, -1, -1, -1, 313, -1, + -1, -1, 257, -1, 3315, 2776, 2777, 2778, 2333, 2780, + -1, 1719, -1, -1, -1, -1, 3327, -1, 403, -1, + -1, 406, 407, 408, -1, 410, 411, 412, 413, 414, + 415, -1, -1, -1, -1, 420, 421, -1, -1, -1, + -1, 2366, -1, 1751, -1, 2454, -1, -1, 2457, -1, + -1, -1, -1, -1, -1, 2464, -1, 2382, 313, 17, + 3371, -1, 20, -1, -1, -1, -1, 25, -1, -1, + -1, 2396, 30, -1, -1, -1, -1, -1, -1, -1, + -1, 2490, -1, -1, -1, -1, 2411, -1, 403, -1, + 2861, 406, 407, 408, -1, 410, 411, 412, 413, 414, + 415, 3412, 1810, -1, 1812, -1, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 182, 2940, 2941, -1, 2377, 2944, 169, 170, -1, -1, - -1, -1, 2951, 2952, 1871, -1, 1873, 1874, -1, 182, - -1, -1, -1, -1, 990, 2964, 1883, -1, -1, 1886, - -1, -1, 1889, 215, 1438, -1, 218, -1, -1, 2978, - -1, -1, -1, 1168, -1, -1, -1, -1, -1, -1, - 232, -1, 234, -1, -1, 218, -1, 1914, 1024, 1916, - -1, 1186, -1, 1920, 3003, -1, -1, -1, -1, 232, - -1, -1, 1038, -1, -1, -1, -1, -1, -1, -1, - 1205, -1, -1, -1, -1, -1, 1566, -1, -1, -1, - 1570, 1571, -1, -1, -1, -1, -1, -1, -1, 2472, - -1, 3040, 3041, 1228, -1, -1, -1, 1964, -1, -1, - 990, -1, -1, 1970, -1, 297, -1, -1, -1, -1, - -1, -1, 1979, 1980, 1981, -1, -1, 3066, 3067, -1, - 3069, -1, 3071, -1, 297, -1, -1, 1994, -1, -1, - -1, -1, 990, -1, 1024, -1, -1, -1, 1273, -1, - 3089, -1, -1, -1, 3093, 3094, -1, -1, 1038, 1284, - -1, -1, 1566, -1, -1, -1, 1570, 1571, -1, -1, - -1, -1, -1, 1653, -1, -1, 1024, -1, -1, -1, - -1, -1, 3121, -1, -1, -1, -1, -1, -1, -1, - 1038, -1, -1, 2566, -1, 1675, -1, -1, -1, -1, - -1, 3140, 1168, 385, -1, -1, 388, 389, 390, -1, - 392, 393, 394, 395, 396, 397, -1, -1, -1, -1, - 1186, 403, 385, 3162, -1, -1, 389, 390, -1, 392, - 393, 394, 395, 396, 397, -1, -1, -1, -1, 1205, - 403, -1, -1, -1, -1, -1, -1, -1, -1, 1653, - 25, -1, -1, -1, -1, 30, -1, -1, -1, -1, - -1, -1, 1228, -1, 3203, -1, -1, -1, -1, -1, - -1, 1675, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1168, -1, + 2445, 3432, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, -1, -1, -1, 1186, 1273, -1, -1, - -1, 736, 13, 1438, 15, 16, -1, -1, 1284, -1, - 1168, -1, -1, -1, -1, 1205, 1806, -1, 29, 2702, - -1, -1, -1, -1, 3273, -1, -1, 112, 1186, -1, - 2713, -1, -1, -1, -1, -1, -1, 48, 1228, 50, - 51, -1, -1, -1, 55, 56, -1, 1205, -1, -1, - -1, -1, -1, -1, 65, -1, 67, -1, -1, -1, - 145, -1, -1, -1, 149, -1, -1, -1, -1, -1, - 1228, 2754, 83, -1, -1, 86, -1, -1, -1, -1, - -1, 92, -1, 1273, 169, 170, -1, 98, 823, -1, - -1, -1, 1806, 104, 1284, -1, -1, 182, -1, 110, - -1, -1, -1, -1, -1, 116, -1, 118, -1, -1, - -1, -1, 123, -1, -1, 1273, -1, -1, -1, -1, - -1, -1, -1, -1, 135, -1, 1284, -1, 2295, -1, - -1, 1566, -1, 218, -1, 1570, 1571, 2304, -1, -1, - -1, -1, -1, 2310, -1, 2312, -1, 232, -1, -1, - 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1438, -1, -1, -1, -1, 2334, 2335, -1, - -1, -1, -1, 184, 185, -1, -1, -1, -1, 190, - -1, -1, -1, -1, -1, -1, -1, 2354, 199, -1, - -1, -1, -1, -1, -1, -1, -1, 2364, -1, -1, - 2367, -1, 2369, -1, -1, -1, 217, -1, -1, -1, - -1, 2378, 297, 2896, -1, -1, -1, 2384, 1653, -1, - 2387, -1, -1, -1, -1, 2015, 2016, -1, 2018, -1, - 2397, -1, -1, -1, -1, -1, -1, 2920, -1, 250, - 1675, 2031, -1, 2033, -1, -1, -1, -1, 1438, 260, - -1, -1, 263, -1, 265, 990, -1, -1, -1, 270, - -1, -1, -1, -1, 275, -1, -1, 278, -1, -1, - -1, 282, -1, -1, 25, -1, -1, 288, -1, 30, - 1438, -1, 293, -1, 2074, 296, -1, -1, -1, 1024, - 1566, -1, 303, -1, 1570, 1571, -1, -1, -1, -1, - 385, 2015, 2016, 1038, 2018, -1, -1, 392, 393, 394, - 395, 396, 397, -1, -1, -1, -1, 2031, 403, 2033, - -1, 332, -1, -1, -1, -1, -1, -1, -1, 340, - -1, 342, -1, 2123, 345, -1, -1, -1, 349, -1, - -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, - -1, -1, -1, -1, 25, -1, -1, -1, 2148, 30, - 2074, 112, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1806, -1, -1, -1, -1, 1566, 1653, -1, -1, - 1570, 1571, -1, -1, 3067, -1, 2176, -1, -1, -1, - 401, -1, -1, -1, 145, -1, -1, -1, 149, 1675, - -1, 2191, -1, -1, -1, -1, 3089, -1, 1566, 2123, - 3093, 3094, 1570, 1571, 2204, -1, -1, -1, 169, 170, - -1, -1, -1, -1, -1, 2215, -1, -1, -1, -1, - -1, 182, -1, 1168, 2148, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 403, -1, + -1, 406, 407, 408, -1, 410, 411, 412, 413, 414, + 415, -1, -1, -1, -1, -1, 421, -1, -1, -1, + 1878, -1, -1, -1, -1, -1, -1, 1885, 2503, -1, + -1, -1, -1, -1, -1, -1, -1, 1895, -1, 2598, + 2599, -1, -1, -1, 152, -1, -1, -1, 156, 777, + -1, -1, -1, -1, -1, -1, -1, -1, 3519, 2534, + -1, -1, -1, -1, -1, -1, -1, -1, 176, 177, + -1, 1929, 2547, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 191, -1, -1, -1, -1, -1, 618, + -1, 3012, -1, -1, 1952, -1, -1, -1, -1, -1, + -1, -1, 3023, -1, -1, 1963, 2581, -1, 25, -1, + -1, -1, -1, 30, -1, -1, 224, -1, -1, 227, + -1, -1, -1, 652, 1982, 1983, -1, -1, -1, -1, + -1, -1, -1, 241, -1, -1, 244, -1, -1, -1, + -1, -1, 3603, -1, -1, -1, -1, -1, -1, -1, + 878, -1, -1, -1, 2012, 2013, -1, -1, -1, 2017, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1186, -1, -1, -1, -1, -1, -1, 2248, -1, - -1, -1, 2176, 1653, 2254, -1, -1, 218, -1, -1, - 1205, -1, -1, -1, 145, -1, -1, 2191, 149, 3162, - -1, 232, -1, -1, -1, 1675, -1, -1, -1, 2656, - 2204, -1, -1, 1228, -1, 1653, -1, -1, 169, 170, - -1, 2215, -1, -1, -1, -1, -1, -1, 2298, -1, - -1, 182, -1, -1, -1, -1, -1, 1675, -1, -1, + -1, 2029, 2030, 2031, 2032, -1, -1, -1, -1, 2037, + -1, -1, -1, 2041, 2042, -1, 2044, -1, -1, 2047, + 3111, -1, -1, -1, -1, -1, -1, 2672, 2056, 2057, + 117, 2059, -1, -1, -1, 313, -1, -1, 3129, -1, + 2769, -1, -1, -1, 2072, -1, 2074, -1, -1, -1, + 2078, -1, -1, -1, -1, -1, -1, -1, 2787, -1, + -1, -1, -1, -1, -1, 152, -1, 2095, -1, 156, + 2799, -1, -1, -1, -1, -1, -1, 2105, -1, 2107, + 2108, 2109, 3173, -1, -1, -1, -1, -1, -1, 176, + 177, -1, -1, 2121, -1, -1, -1, -1, -1, -1, + -1, 2129, -1, -1, 191, -1, -1, -1, 2136, -1, + -1, -1, -1, 2141, -1, -1, -1, -1, -1, -1, + 2148, 2149, 2150, -1, -1, 403, -1, -1, 406, 407, + 408, -1, 410, 411, 412, 413, 414, 415, -1, -1, + 227, 2169, -1, 421, -1, -1, -1, -1, -1, 2794, + -1, -1, -1, -1, 241, -1, -1, -1, -1, -1, + -1, -1, 1060, -1, -1, -1, -1, 2195, 2196, -1, + 2198, -1, -1, -1, 777, -1, -1, 2205, -1, -1, + -1, -1, -1, -1, -1, 2830, -1, -1, -1, -1, + -1, 25, -1, -1, -1, -1, 30, 1095, -1, -1, + -1, 900, -1, -1, -1, -1, -1, -1, 2236, -1, + 2238, -1, -1, -1, -1, -1, -1, -1, -1, 1117, + -1, -1, -1, -1, -1, -1, 313, -1, -1, 928, + -1, -1, -1, 2962, 2963, 2964, 2965, -1, -1, -1, + -1, -1, -1, -1, 2272, 2273, 2274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1806, -1, 2699, 2700, 2248, -1, -1, -1, 1273, 2329, - 2254, -1, -1, -1, 215, 2712, 297, 218, -1, 1284, - -1, 2718, 2719, 2343, -1, 2722, -1, -1, -1, -1, - -1, 232, -1, 234, -1, -1, -1, -1, -1, -1, + -1, 960, 961, -1, 963, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 878, -1, 1175, -1, -1, + -1, 980, 2310, 117, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1192, 2940, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2333, 2951, -1, -1, -1, + -1, -1, -1, 1211, -1, -1, 403, -1, 152, -1, + 1019, -1, 156, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, -1, 421, -1, 1234, 2365, 2366, -1, + -1, -1, 176, 177, -1, -1, -1, 1046, -1, -1, + -1, 1050, 1051, -1, 2382, -1, -1, 191, -1, -1, + -1, -1, 3007, -1, -1, -1, -1, -1, 2396, -1, + 3015, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2411, -1, -1, 1284, -1, -1, -1, + -1, -1, 17, 227, -1, 3486, -1, -1, 2426, -1, + 25, -1, 2430, -1, -1, 30, -1, 241, -1, -1, + -1, -1, 2440, -1, -1, -1, -1, 2445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2015, 2016, -1, 2018, 2298, -1, -1, 2377, -1, -1, - -1, -1, -1, -1, -1, -1, 2031, -1, 2033, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2329, 1806, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 297, -1, -1, 2343, - -1, -1, -1, -1, 385, -1, -1, -1, -1, 2074, - -1, 392, 393, 394, 395, 396, 397, -1, 1806, -1, - -1, -1, 403, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2377, -1, -1, -1, 2834, -1, -1, + -1, 2469, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 17, -1, -1, -1, -1, -1, 1060, -1, 25, + -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, + -1, -1, 2500, -1, -1, 2503, -1, -1, -1, 313, + -1, 2509, -1, -1, -1, -1, -1, 2515, -1, 2517, + -1, -1, 1095, -1, 2522, -1, 777, 2525, 2526, 2527, + 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, -1, -1, + -1, 2539, 2540, -1, 1117, -1, -1, -1, 3163, 2547, + -1, -1, -1, -1, 2552, -1, -1, 152, 2556, -1, + 2558, 156, -1, -1, -1, -1, -1, -1, -1, -1, + 2568, -1, 3187, 2571, -1, 2573, -1, 777, -1, 3278, + -1, 176, 177, 2581, 2582, 2583, 2584, -1, -1, -1, + 2588, -1, -1, 2591, 1462, -1, 191, -1, -1, 403, + -1, 137, 1175, 2601, 3303, -1, 410, 411, 412, 413, + 414, 415, 2610, -1, -1, -1, 152, 421, -1, 1192, + 156, -1, -1, -1, -1, -1, 3241, 878, 3327, 224, + -1, -1, 227, -1, -1, -1, -1, -1, 1211, -1, + 176, 177, -1, -1, -1, -1, 241, -1, -1, 244, + -1, -1, -1, -1, -1, 191, -1, -1, -1, -1, + -1, 1234, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3371, 2671, 2672, 2673, -1, -1, 878, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 224, -1, + -1, 227, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2700, -1, -1, 241, -1, 3322, 244, -1, + 1379, 1284, -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2472, -1, -1, -1, -1, -1, 2123, -1, + -1, 3346, 1401, -1, -1, 1404, -1, -1, 1407, -1, + -1, -1, -1, -1, -1, 1414, 1415, -1, -1, -1, + 1419, -1, -1, 1422, -1, -1, -1, -1, -1, -1, + -1, -1, 3377, -1, -1, -1, 3381, 3382, 1437, -1, + -1, -1, 1441, -1, -1, -1, 1445, 313, -1, -1, + 1449, -1, -1, 2781, 1453, 1454, 1455, 1456, 1457, 1458, + 1459, 1460, 1461, -1, -1, 1464, 2794, -1, -1, -1, + 1469, -1, -1, -1, -1, -1, -1, -1, 403, 1060, + -1, 406, 407, 408, -1, 410, 411, 412, 413, 414, + 415, -1, 1690, -1, -1, 420, 421, 1695, 1696, -1, + -1, -1, 2830, 2831, 2832, -1, -1, -1, 17, -1, + -1, 20, -1, -1, 1095, -1, 25, -1, -1, -1, + 2848, 30, -1, -1, -1, 2853, -1, -1, 2856, -1, + 1060, -1, -1, -1, -1, -1, 1117, 403, -1, -1, + 406, 407, 408, -1, 410, 411, 412, 413, 414, 415, + -1, -1, -1, -1, -1, 421, -1, -1, -1, 1462, + -1, -1, -1, -1, -1, 1095, 2894, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, + -1, -1, -1, 30, -1, -1, -1, 1117, -1, -1, + -1, -1, -1, -1, 1175, -1, -1, -1, -1, -1, + -1, -1, 2930, -1, -1, -1, -1, -1, -1, 2937, + 2938, 1192, 2940, 1612, 1812, -1, -1, 2945, 2946, -1, + -1, -1, 2950, 2951, -1, -1, -1, -1, 2956, 2957, + 1211, -1, 2960, -1, -1, -1, 777, -1, -1, -1, + -1, -1, -1, 152, -1, 1175, -1, 156, -1, -1, + -1, -1, 2980, 1234, -1, -1, -1, -1, -1, -1, + -1, -1, 1192, -1, -1, -1, -1, 176, 177, -1, + -1, 1670, -1, -1, -1, -1, -1, -1, -1, 3007, + 1878, 1211, 191, -1, -1, -1, -1, 3015, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1438, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2148, 385, -1, -1, 388, 389, 390, - 2887, 392, 393, 394, 395, 396, 397, -1, -1, -1, - -1, 402, 403, -1, -1, -1, -1, -1, -1, 2015, - 2016, 2176, 2018, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2031, 2191, 2033, 2472, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2204, - -1, -1, -1, -1, -1, -1, 2566, 2944, -1, 17, - 2215, -1, 20, -1, -1, 2952, -1, 25, -1, -1, - -1, -1, 30, -1, -1, -1, -1, -1, 2074, -1, + -1, -1, -1, 1284, 1234, 152, -1, -1, -1, 156, + -1, -1, -1, -1, -1, 224, -1, -1, 227, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 176, + 177, -1, 241, -1, -1, 244, -1, 878, -1, -1, + -1, -1, -1, -1, 191, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1284, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1963, -1, -1, -1, 3097, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3107, + 227, -1, -1, -1, -1, -1, -1, 1690, -1, -1, + -1, -1, 1695, 1696, 241, -1, -1, -1, -1, 17, + -1, -1, -1, -1, 313, -1, -1, 25, -1, 3137, + -1, 1810, 30, -1, 3142, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3154, -1, -1, -1, + 3158, -1, -1, -1, -1, 3163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2978, -1, 2248, -1, -1, -1, -1, -1, 2254, - -1, -1, -1, -1, -1, 2015, 2016, -1, 2018, -1, - -1, 1566, -1, -1, -1, 1570, 1571, -1, -1, -1, - -1, 2031, -1, 2033, -1, -1, -1, 2123, -1, -1, - -1, -1, 2566, -1, -1, -1, -1, 2015, 2016, -1, - 2018, -1, -1, 2298, -1, -1, -1, -1, -1, -1, - -1, -1, 2148, 2031, 3041, 2033, -1, -1, -1, -1, - -1, -1, -1, 17, 2074, -1, -1, -1, -1, -1, - -1, 25, -1, -1, 2329, -1, 30, -1, -1, -1, - 2176, -1, 3069, -1, -1, -1, -1, 145, 2343, -1, - -1, 149, 2702, -1, -1, 2191, 2074, -1, 1653, -1, - -1, -1, -1, 2713, -1, -1, -1, -1, 2204, -1, - -1, 169, 170, 2123, -1, -1, -1, -1, -1, 2215, - 1675, -1, 2377, -1, 182, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2148, -1, - -1, -1, -1, -1, 2754, 2123, -1, -1, -1, -1, - -1, -1, 2248, -1, -1, -1, -1, 215, 2254, -1, - 218, -1, -1, -1, -1, -1, 2176, -1, 2702, -1, - 2148, -1, -1, -1, 232, -1, 234, -1, -1, 2713, - -1, 2191, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 145, -1, -1, 2204, 149, -1, -1, 2176, -1, - -1, -1, 2298, -1, -1, 2215, -1, -1, -1, -1, - -1, -1, -1, 2191, -1, 169, 170, 2472, -1, -1, - 2754, -1, -1, -1, -1, -1, 2204, 920, 182, -1, - -1, -1, -1, 2329, -1, -1, -1, 2215, 2248, 297, - -1, -1, -1, -1, 2254, -1, -1, 2343, -1, -1, - -1, 1806, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 215, -1, -1, 218, -1, -1, -1, -1, -1, - 2248, -1, -1, -1, -1, 968, 2254, -1, 232, -1, - 234, 2377, -1, -1, -1, -1, 2896, -1, 2298, -1, - -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, - 17, -1, -1, 20, -1, -1, -1, -1, 25, -1, - 2920, 2566, -1, 30, -1, -1, -1, -1, -1, 2329, - 2298, -1, -1, -1, -1, -1, -1, 385, -1, -1, - 388, 389, 390, 2343, 392, 393, 394, 395, 396, 397, - -1, -1, -1, 297, -1, 403, -1, -1, -1, -1, - -1, 2329, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2896, -1, -1, 2343, -1, 2377, -1, -1, - -1, -1, -1, -1, -1, -1, 2472, -1, -1, -1, - -1, -1, -1, -1, 17, -1, 2920, 1080, -1, -1, - -1, -1, 25, -1, -1, -1, -1, 30, -1, 2377, + -1, -1, -1, -1, -1, 3183, -1, -1, -1, 3187, + -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 17, -1, -1, 3207, + 3208, 1462, -1, 3211, 25, -1, -1, -1, -1, 30, + 3218, 3219, -1, -1, 403, -1, 1895, 406, 407, 408, + -1, 410, 411, 412, 413, 414, 415, -1, -1, 1812, + -1, -1, 421, 3241, -1, -1, 3244, -1, -1, 1060, + -1, -1, -1, -1, 777, -1, -1, -1, -1, -1, + 1929, -1, 1462, -1, 152, -1, -1, -1, 156, -1, + -1, -1, -1, -1, -1, -1, -1, 3275, -1, -1, + -1, -1, -1, 1952, 1095, -1, 403, -1, 176, 177, + 407, 408, -1, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, 191, 421, 1878, 1117, -1, -1, -1, + -1, -1, -1, -1, 1983, -1, -1, 3315, 3316, -1, + -1, -1, -1, -1, 3322, -1, -1, 2195, 2196, -1, + 2198, -1, -1, -1, -1, -1, 224, 2205, -1, 227, + -1, 152, -1, -1, -1, 156, -1, 3345, 3346, -1, + 3348, -1, 3350, 241, -1, 878, 244, -1, -1, -1, + 2029, -1, 2031, 2032, 1175, 176, 177, -1, 2236, -1, + 2238, -1, 2041, -1, -1, 2044, 3374, -1, 2047, 3377, + 191, 1192, -1, 3381, 3382, -1, -1, -1, -1, -1, + 1963, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1211, -1, -1, 2072, -1, 2074, -1, 3405, -1, 2078, + -1, -1, -1, 224, 3412, -1, 227, -1, -1, -1, + -1, -1, -1, 1234, -1, 313, -1, -1, -1, -1, + 241, -1, -1, 244, 3432, -1, -1, -1, -1, 1690, + 2109, 3439, 2310, -1, 1695, 1696, -1, -1, -1, -1, + 338, -1, 2121, -1, -1, -1, -1, 3455, -1, -1, + 2129, -1, -1, -1, -1, 2333, -1, 2136, -1, -1, + -1, -1, 2141, 1284, -1, -1, -1, -1, -1, 2148, + 2149, 2150, -1, -1, -1, -1, -1, -1, -1, -1, + 1690, -1, -1, -1, -1, 1695, 1696, -1, 2366, -1, + 2169, -1, 313, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2382, 403, -1, -1, 406, 407, + 408, 3519, 410, 411, 412, 413, 414, 415, 2396, -1, + -1, -1, -1, 421, -1, -1, -1, 1060, -1, -1, + -1, -1, -1, 2411, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1812, 17, -1, -1, 20, -1, -1, -1, -1, + 25, -1, 1095, -1, -1, 30, -1, 2445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 145, -1, - -1, 385, 149, -1, 388, 389, 390, -1, 392, 393, - 394, 395, 396, 397, -1, -1, -1, 2702, -1, 403, - -1, -1, 169, 170, -1, -1, -1, 3067, 2713, -1, - 2015, 2016, 2472, 2018, -1, 182, -1, -1, -1, -1, - 2566, -1, -1, -1, -1, -1, 2031, -1, 2033, 3089, - -1, -1, -1, 3093, 3094, -1, -1, 17, -1, -1, - -1, -1, -1, -1, 2472, 25, -1, -1, 215, 2754, - 30, 218, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 145, -1, -1, 232, 149, 234, -1, 2074, + -1, -1, 403, -1, 1117, 406, 407, 408, -1, 410, + 411, 412, 413, 414, 415, 3603, -1, -1, -1, 420, + 421, -1, 1812, -1, -1, -1, -1, -1, -1, -1, + 17, -1, 2195, 2196, -1, 2198, -1, 1878, 25, -1, + -1, -1, 2205, 30, -1, 2503, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3067, -1, -1, 169, 170, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 182, - -1, -1, 3162, -1, -1, 3089, 2566, -1, -1, 3093, - 3094, -1, -1, -1, -1, -1, -1, -1, 2123, -1, + -1, 1462, 1175, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2236, -1, 2238, 2534, -1, -1, 1192, + -1, -1, -1, -1, -1, -1, -1, -1, 1878, 2547, + -1, -1, -1, -1, -1, -1, -1, -1, 1211, -1, + -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, + -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1234, 1963, 2581, -1, -1, -1, -1, -1, -1, + -1, 176, 177, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 191, 2310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 297, -1, 215, -1, -1, 218, -1, -1, 2566, 17, - -1, -1, 20, 2148, -1, -1, -1, 25, -1, 232, - -1, 131, 30, -1, -1, -1, 2702, -1, -1, 1302, - -1, -1, -1, -1, -1, 145, -1, 2713, -1, 149, - -1, 2176, -1, -1, -1, -1, -1, -1, 3162, -1, - -1, -1, -1, -1, -1, -1, 2191, -1, -1, 169, - 170, 2896, -1, -1, -1, -1, -1, -1, -1, 2204, - -1, -1, 182, -1, -1, -1, -1, -1, 2754, -1, - 2215, 1354, -1, -1, 297, 2920, -1, -1, 385, -1, - -1, 388, 389, 390, -1, 392, 393, 394, 395, 396, - 397, -1, -1, -1, 1377, 215, 403, -1, 218, 1382, - -1, -1, 2702, 2248, -1, -1, -1, -1, -1, 2254, - -1, -1, 232, 2713, 234, -1, -1, -1, -1, 1402, - 1403, -1, -1, 1406, -1, -1, -1, 145, -1, -1, - -1, 149, -1, -1, 2702, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2713, -1, -1, -1, -1, - -1, 169, 170, 2298, 2754, -1, -1, -1, -1, -1, - 1443, -1, 385, -1, 182, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, -1, -1, 297, -1, -1, - 403, -1, -1, -1, 2329, -1, 2754, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 215, 2343, -1, - 218, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2896, -1, -1, -1, 232, -1, 234, -1, -1, -1, - -1, -1, 3067, -1, 1507, -1, -1, -1, -1, -1, - -1, 1514, 2377, 1516, 2920, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3089, -1, -1, -1, 3093, 3094, + -1, -1, -1, -1, -1, 152, -1, -1, -1, 156, + 2333, 1284, -1, 1963, -1, -1, -1, -1, -1, 224, + -1, -1, 227, -1, -1, -1, -1, -1, -1, 176, + 177, -1, -1, -1, -1, -1, 241, -1, -1, 244, + -1, -1, -1, 2366, 191, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2672, -1, -1, -1, -1, 2382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 385, -1, -1, 388, 389, - 390, -1, 392, 393, 394, 395, 396, 397, -1, 297, - -1, 17, -1, 403, -1, -1, -1, -1, -1, 25, - -1, -1, -1, -1, 30, -1, 2896, -1, -1, -1, - -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, - -1, 25, -1, -1, -1, -1, 30, 3162, -1, -1, - 2920, -1, -1, -1, -1, -1, -1, 2472, 2896, -1, - -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, - 25, -1, -1, -1, -1, 30, -1, -1, -1, -1, - -1, -1, 2920, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 385, -1, -1, - 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, - -1, 3067, -1, -1, -1, 403, -1, -1, -1, -1, + -1, -1, -1, 2396, -1, -1, -1, 224, -1, -1, + 227, 2500, -1, -1, -1, -1, -1, -1, 2411, -1, + 2509, -1, -1, -1, 241, -1, 2515, 244, 2517, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3089, -1, -1, -1, 3093, 3094, 145, - -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, - 25, 2566, -1, -1, -1, 30, -1, -1, -1, -1, - -1, 145, -1, 169, 170, 149, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 182, -1, -1, -1, - -1, -1, -1, -1, -1, 169, 170, -1, -1, -1, - 145, -1, -1, -1, 149, -1, -1, 3067, 182, -1, - -1, -1, -1, -1, -1, -1, 3162, -1, -1, 215, - -1, -1, 218, -1, 169, 170, -1, -1, -1, 3089, - -1, -1, -1, 3093, 3094, -1, 232, 182, 234, 3067, - -1, 215, -1, -1, 218, -1, -1, 112, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 232, -1, - 234, 3089, -1, -1, -1, 3093, 3094, -1, -1, -1, - 215, -1, -1, 218, -1, -1, -1, -1, -1, -1, - 145, -1, -1, -1, 149, 1828, -1, 232, -1, 234, - -1, -1, -1, -1, -1, -1, -1, 2702, -1, -1, - -1, 297, 3162, -1, 169, 170, -1, 1850, 2713, 1852, - -1, 1854, 1855, 1856, -1, -1, 1859, 182, -1, -1, - 1863, -1, -1, 297, -1, -1, -1, 1870, -1, -1, - -1, -1, 1875, -1, 3162, 17, -1, 1880, 20, -1, - -1, -1, 1885, 25, -1, -1, -1, -1, 30, 2754, - -1, 1894, 297, 218, -1, 1898, 1899, 1900, 17, -1, - -1, -1, -1, -1, -1, -1, 25, 232, -1, 1912, - -1, 30, -1, -1, -1, -1, 1919, 322, 1921, 1922, - 1923, 1924, 1925, 1926, 1927, 1928, 1929, -1, 1931, 385, - -1, -1, 388, 389, 390, -1, 392, 393, 394, 395, - 396, 397, -1, -1, 400, -1, -1, 403, -1, -1, - -1, 385, -1, -1, 388, 389, 390, -1, 392, 393, - 394, 395, 396, 397, -1, -1, -1, -1, 402, 403, - -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, - 385, -1, -1, 388, 389, 390, -1, 392, 393, 394, - 395, 396, 397, -1, -1, -1, -1, -1, 403, 2002, - -1, -1, -1, 145, -1, -1, -1, 149, -1, -1, + 2539, 2540, 2445, -1, -1, -1, -1, -1, -1, 1690, + -1, -1, -1, -1, 1695, 1696, -1, -1, -1, 2558, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2568, + -1, -1, 2571, -1, 2573, -1, -1, -1, -1, -1, + -1, -1, -1, 2582, -1, -1, 313, -1, -1, 2588, + -1, -1, 2591, -1, -1, -1, 2794, 17, -1, -1, + 2503, -1, 2601, -1, -1, 25, -1, -1, -1, 1462, + 30, 2610, -1, -1, 2195, 2196, -1, 2198, 403, -1, + -1, 406, 407, 408, 2205, 410, 411, 412, 413, 414, + 415, 2534, 2830, -1, -1, -1, 421, -1, 17, -1, + -1, -1, -1, -1, 2547, -1, 25, -1, -1, -1, + -1, 30, -1, -1, -1, 2236, -1, 2238, -1, -1, + -1, -1, -1, -1, -1, 2195, 2196, -1, 2198, -1, + -1, 1812, 976, -1, -1, 2205, 403, -1, 2581, 406, + 407, 408, -1, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, 420, 421, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2236, -1, 2238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 17, -1, -1, -1, -1, 145, 169, 170, 25, - 149, 2896, -1, -1, 30, -1, -1, -1, -1, -1, - 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 169, 170, -1, -1, -1, 2920, -1, -1, -1, -1, - 385, -1, -1, 182, -1, -1, -1, 392, 393, 394, - 395, 396, 397, 215, -1, -1, 218, -1, 403, -1, + -1, -1, -1, -1, -1, -1, -1, 1031, -1, 2310, + -1, -1, 152, -1, -1, -1, 156, 1878, -1, -1, + -1, -1, 2940, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2333, 2951, -1, -1, 176, 177, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2672, + -1, 191, -1, 152, -1, -1, -1, 156, -1, -1, + 2310, -1, -1, -1, -1, 2366, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 176, 177, -1, + -1, 2382, -1, 2333, 224, -1, -1, 227, -1, 3007, + -1, -1, 191, -1, -1, 2396, -1, 3015, -1, -1, + -1, 241, 1963, -1, 244, -1, -1, -1, -1, -1, + 2411, -1, 2831, 2832, -1, -1, 2366, 1690, -1, -1, + -1, -1, 1695, 1696, -1, 224, -1, -1, 227, -1, + -1, -1, 2382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 241, -1, 2445, 244, 2396, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 232, -1, 234, -1, -1, -1, 215, -1, -1, 218, + -1, 2411, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2794, -1, 313, -1, 2894, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 232, -1, 234, -1, -1, 2121, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 17, -1, - -1, -1, -1, -1, -1, -1, 25, -1, -1, -1, - -1, 30, -1, -1, -1, -1, -1, -1, 2151, 145, - -1, -1, -1, 149, -1, 297, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2445, -1, -1, -1, -1, + -1, -1, 2503, -1, -1, -1, -1, 2830, -1, -1, + -1, -1, -1, -1, 313, -1, -1, -1, 2937, 2938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 169, 170, -1, -1, -1, 297, -1, - -1, -1, -1, -1, -1, -1, 182, -1, -1, -1, + -1, 2950, -1, 2534, -1, -1, -1, 2956, 2957, 1812, + -1, 2960, -1, -1, -1, 3163, 2547, -1, -1, -1, + -1, -1, -1, 2503, -1, -1, -1, -1, -1, -1, + -1, 2980, -1, 403, -1, -1, 406, 407, 408, 3187, + 410, 411, 412, 413, 414, 415, -1, -1, 418, -1, + 2581, 421, -1, -1, 2534, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1318, -1, -1, 2547, -1, -1, + -1, -1, -1, -1, 403, 1878, -1, 406, 407, 408, + -1, 410, 411, 412, 413, 414, 415, 2940, -1, -1, + -1, 420, 421, 3241, -1, -1, -1, -1, 2951, -1, + -1, 2581, -1, -1, 2195, 2196, -1, 2198, -1, -1, + -1, -1, -1, -1, 2205, -1, -1, -1, -1, -1, + -1, -1, -1, 1377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3067, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, - -1, -1, 218, -1, 3089, -1, -1, -1, 3093, 3094, - -1, -1, -1, -1, -1, -1, 232, -1, 234, -1, - -1, -1, 2245, 385, -1, -1, 388, 389, 390, -1, - 392, 393, 394, 395, 396, 397, 145, -1, -1, 2262, - 149, 403, -1, -1, -1, -1, 385, -1, -1, 388, - 389, 390, -1, 392, 393, 394, 395, 396, 397, -1, - 169, 170, -1, 402, 403, -1, -1, -1, -1, -1, - -1, 2294, -1, 182, -1, -1, -1, 3162, -1, -1, - -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2315, 2316, 2317, -1, -1, 2320, 2321, 2322, - 2323, 2324, 2325, 2326, 2327, 2328, 215, 2330, 2331, 218, + -1, 2672, -1, -1, -1, 2236, 1400, 2238, 3097, -1, + -1, 1405, -1, -1, 3007, -1, -1, -1, -1, -1, + 1963, -1, 3015, -1, -1, -1, -1, -1, -1, -1, + -1, 1425, 1426, -1, 3322, 1429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 232, -1, 234, -1, -1, -1, -1, - -1, -1, 2355, -1, -1, 2358, -1, 2360, 17, -1, - -1, -1, 2365, 2366, -1, -1, 25, -1, -1, -1, - -1, 30, -1, -1, -1, -1, 2379, 2380, 2381, -1, - 2383, -1, -1, 2386, -1, -1, -1, -1, -1, 385, - -1, -1, 388, 389, 390, -1, 392, 393, 394, 395, - 396, 397, 17, -1, -1, -1, 402, 403, 297, -1, + -1, -1, 2672, -1, -1, -1, -1, -1, 3346, -1, + -1, -1, -1, -1, -1, 3154, -1, -1, -1, -1, + -1, -1, -1, 1467, -1, -1, -1, -1, -1, 2310, + -1, -1, -1, -1, 17, -1, -1, -1, -1, 3377, + -1, 3, 25, 3381, 3382, -1, -1, 30, -1, -1, + -1, 13, 2333, 15, 16, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1510, 29, -1, -1, + -1, -1, 3211, 2794, -1, -1, -1, -1, -1, -1, + 3219, -1, -1, -1, -1, 2366, -1, 49, -1, 51, + 52, -1, -1, -1, 56, 57, -1, -1, -1, -1, + -1, 2382, -1, -1, -1, 67, -1, 69, -1, 2830, + -1, -1, -1, -1, -1, 2396, -1, -1, -1, -1, + 3163, -1, -1, -1, 2794, -1, 88, -1, -1, 91, + 2411, -1, -1, -1, -1, 97, -1, -1, -1, -1, + -1, 103, -1, -1, 3187, -1, -1, 109, -1, -1, + -1, -1, -1, 115, -1, -1, -1, -1, -1, 121, + 2830, 123, -1, -1, 2445, -1, 128, -1, -1, 152, + -1, -1, -1, 156, -1, -1, -1, 3316, 1622, 141, + -1, -1, -1, -1, -1, -1, -1, -1, 1632, -1, + -1, 1635, -1, 176, 177, -1, -1, -1, 3241, -1, + -1, -1, 2195, 2196, -1, 2198, 168, -1, 191, 3348, + -1, -1, 2205, -1, -1, -1, -1, -1, -1, 2940, + -1, -1, 2503, -1, -1, -1, -1, -1, -1, -1, + 2951, 193, 194, -1, -1, 3374, -1, 199, -1, -1, + -1, 224, -1, 2236, 227, 2238, 208, -1, -1, -1, + -1, -1, -1, 2534, -1, -1, -1, -1, 241, -1, + -1, 244, -1, -1, 226, -1, 2547, -1, -1, -1, + 2940, -1, -1, -1, -1, -1, -1, -1, -1, 3322, + -1, 2951, -1, -1, -1, -1, 3007, -1, -1, -1, + -1, -1, -1, -1, 3015, -1, -1, -1, -1, -1, + 2581, 263, -1, 3346, -1, -1, -1, -1, -1, -1, + -1, -1, 274, -1, -1, -1, 278, 2310, 280, -1, + -1, -1, -1, 285, -1, -1, -1, -1, 290, -1, + 313, 293, -1, -1, 3377, 297, -1, 3007, 3381, 3382, + 2333, 303, -1, -1, -1, 3015, -1, 309, -1, -1, + 312, -1, 17, -1, -1, -1, -1, 319, -1, -1, 25, -1, -1, -1, -1, 30, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2430, -1, 17, - -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, - -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, + 332, -1, -1, 2366, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 348, -1, -1, 2382, + -1, 2672, -1, 17, -1, 357, -1, 359, -1, -1, + 362, 25, -1, 2396, 366, -1, 30, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 378, -1, 2411, -1, + 403, -1, -1, 406, 407, 408, -1, 410, 411, 412, + 413, 414, 415, -1, -1, -1, -1, 420, 421, -1, + -1, -1, 3163, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2445, -1, -1, -1, 17, 419, -1, -1, + -1, -1, -1, -1, 25, -1, 3187, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 25, -1, -1, -1, -1, 30, -1, 152, -1, -1, + -1, 156, -1, 3163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2503, 176, 177, 2794, -1, -1, -1, 3187, -1, -1, + 3241, -1, -1, -1, -1, -1, 191, -1, 152, -1, + -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, + -1, 2534, 1986, -1, -1, -1, -1, -1, -1, 2830, + -1, -1, 176, 177, 2547, -1, -1, -1, -1, 224, + -1, -1, 227, -1, 2008, -1, 2010, 191, 2012, 2013, + 2014, 3241, 117, 2017, -1, -1, 241, 2021, -1, 244, + -1, -1, -1, -1, 2028, -1, -1, -1, 2581, 2033, + -1, 152, -1, -1, 2038, 156, -1, -1, -1, 2043, + 224, 3322, -1, 227, -1, -1, -1, 152, 2052, -1, + -1, 156, 2056, 2057, 2058, 176, 177, 241, -1, -1, + 244, -1, -1, -1, -1, 3346, 2070, -1, -1, -1, + 191, 176, 177, 2077, -1, 2079, 2080, 2081, 2082, 2083, + 2084, 2085, 2086, 2087, -1, 2089, 191, -1, 313, -1, + -1, -1, 3322, -1, -1, -1, 3377, -1, -1, 2940, + 3381, 3382, -1, 224, -1, -1, 227, -1, -1, -1, + 2951, -1, -1, 25, -1, -1, 3346, -1, 30, 2672, + 241, -1, 227, 244, -1, -1, -1, -1, -1, 313, + -1, -1, -1, -1, -1, -1, 241, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3377, -1, -1, + -1, 3381, 3382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3007, -1, -1, -1, + -1, -1, -1, 2177, 3015, -1, -1, -1, 403, -1, + -1, 406, 407, 408, -1, 410, 411, 412, 413, 414, + 415, -1, 313, -1, -1, 420, 421, -1, -1, -1, + -1, 17, -1, -1, -1, 117, -1, -1, 313, 25, + -1, -1, -1, -1, 30, -1, -1, -1, -1, 403, + -1, -1, 406, 407, 408, -1, 410, 411, 412, 413, + 414, 415, -1, -1, -1, -1, 420, 421, -1, -1, + 152, 2794, -1, -1, 156, -1, -1, -1, -1, -1, + 17, -1, -1, -1, -1, -1, -1, -1, 25, -1, + -1, -1, -1, 30, 176, 177, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2830, -1, 191, + -1, -1, 403, -1, -1, 406, 407, 408, -1, 410, + 411, 412, 413, 414, 415, -1, -1, -1, 403, 420, + 421, -1, -1, -1, -1, 410, 411, 412, 413, 414, + 415, -1, -1, -1, -1, 227, 421, -1, -1, -1, + -1, -1, 3163, -1, -1, -1, -1, -1, -1, 241, + -1, -1, 2336, -1, -1, -1, 152, -1, -1, -1, + 156, -1, -1, -1, -1, -1, 3187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 145, -1, -1, -1, - 149, -1, 25, -1, -1, -1, 385, 30, -1, 388, - 389, 390, -1, 392, 393, 394, 395, 396, 397, -1, - 169, 170, -1, 402, 403, -1, -1, -1, -1, -1, - -1, -1, -1, 182, -1, -1, -1, -1, -1, -1, - 145, -1, -1, -1, 149, -1, -1, -1, -1, -1, + 176, 177, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 191, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 152, -1, 2940, -1, 156, + -1, -1, -1, -1, -1, -1, -1, -1, 2951, -1, + 3241, 313, -1, -1, -1, -1, -1, -1, 224, 176, + 177, 227, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 191, 241, -1, -1, 244, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2442, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2555, -1, 169, 170, 215, 145, -1, 218, - -1, 149, -1, -1, -1, -1, -1, 182, -1, -1, - -1, -1, -1, 232, -1, 234, -1, -1, -1, 112, - -1, 169, 170, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 182, -1, -1, -1, -1, -1, - 215, -1, -1, 218, -1, -1, -1, -1, -1, -1, - -1, -1, 145, -1, -1, -1, 149, 232, -1, 234, - -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, - 218, -1, -1, -1, -1, -1, 169, 170, 297, -1, - -1, -1, -1, -1, 232, -1, 234, -1, -1, 182, - -1, -1, -1, -1, 2657, -1, -1, 2660, 2661, 2662, - -1, 2664, -1, -1, -1, -1, 2669, 2670, 2671, 2672, - 2673, 2674, 2675, 2676, 2677, 25, 2679, 2680, 2681, -1, - 30, -1, 297, -1, -1, 218, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 232, - -1, -1, -1, 2706, 2707, 2708, 2709, -1, 2711, 297, - -1, -1, 2715, 2716, 2717, -1, -1, 2720, -1, -1, - 2723, -1, -1, -1, -1, -1, 385, 2730, -1, 388, - 389, 390, -1, 392, 393, 394, 395, 396, 397, -1, - -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3007, -1, -1, 224, -1, 2463, + 227, -1, 3015, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 241, -1, -1, 244, -1, -1, + -1, 3322, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 403, -1, -1, -1, 2499, -1, 313, 410, 411, + 412, 413, 414, 415, -1, 3346, -1, -1, -1, 421, + -1, -1, -1, -1, -1, -1, 2520, 2521, 2522, -1, + -1, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, + 17, 2535, 2536, -1, -1, -1, 3377, -1, 25, -1, + 3381, 3382, -1, 30, -1, -1, 313, -1, -1, -1, + -1, -1, -1, -1, -1, 2559, -1, -1, 2562, -1, + 2564, -1, -1, -1, -1, 2569, 2570, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 17, -1, -1, 2583, + 2584, 2585, -1, 2587, 25, -1, 2590, 403, -1, 30, + 406, 407, 408, -1, 410, 411, 412, 413, 414, 415, + -1, 2605, -1, -1, 420, 421, -1, -1, -1, -1, + 3163, 2615, -1, -1, 25, -1, -1, -1, -1, 30, + -1, -1, -1, -1, 2628, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3187, -1, 403, 2641, -1, 406, + 407, 408, -1, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, 420, 421, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 152, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 112, -1, 297, -1, -1, -1, -1, -1, - 385, -1, -1, 388, 389, 390, -1, 392, 393, 394, - 395, 396, 397, -1, -1, -1, -1, 402, 403, -1, - -1, -1, -1, -1, -1, 145, -1, 385, -1, 149, - 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, - -1, -1, -1, -1, 402, 403, -1, -1, -1, 169, - 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 182, 2836, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3241, 176, + 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 191, -1, 117, -1, -1, -1, + -1, 152, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 385, -1, -1, -1, -1, -1, -1, 392, - 393, 394, 395, 396, 397, -1, -1, -1, 218, -1, - 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 232, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 176, 177, 224, -1, -1, + 227, 152, -1, -1, -1, 156, -1, -1, -1, -1, + 191, -1, -1, -1, 241, -1, -1, 244, -1, -1, + -1, -1, -1, 10, -1, 176, 177, -1, -1, 3322, + -1, -1, -1, -1, -1, 22, -1, 2781, -1, -1, + 191, -1, -1, 224, -1, -1, 227, -1, -1, -1, + -1, -1, -1, 3346, -1, 42, -1, -1, -1, -1, + 241, -1, -1, 244, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 62, 227, -1, -1, 66, + -1, -1, -1, -1, 3377, -1, 313, -1, 3381, 3382, + 241, -1, -1, -1, -1, -1, -1, -1, -1, 86, + -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2912, - -1, -1, -1, 2916, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2928, -1, 2930, -1, -1, - -1, -1, 2935, 2936, 2937, -1, -1, 2940, 2941, 2942, - 2943, -1, 2945, -1, -1, -1, -1, 297, -1, -1, + 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, + -1, 2895, 139, 140, 2898, 2899, 2900, 144, 2902, -1, + -1, -1, 313, 2907, 2908, 2909, 2910, 2911, 2912, 2913, + 2914, 2915, 159, 2917, 2918, 2919, 403, -1, -1, 406, + 407, 408, -1, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, 420, 421, 182, -1, -1, -1, -1, + 2944, 2945, 2946, 2947, -1, 2949, -1, -1, 195, 2953, + 2954, 2955, -1, -1, 2958, -1, -1, 2961, -1, -1, + -1, -1, 403, -1, 2968, 406, 407, 408, -1, 410, + 411, 412, 413, 414, 415, -1, -1, -1, -1, -1, + 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 403, -1, 241, -1, -1, 244, -1, 410, + 411, 412, 413, 414, 415, -1, -1, -1, -1, -1, + 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 292, -1, -1, -1, 296, + -1, 298, -1, -1, -1, -1, -1, -1, -1, 306, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 333, 334, -1, 336, + 337, -1, -1, -1, -1, 3099, -1, -1, 345, -1, + -1, -1, 349, 350, -1, -1, -1, -1, 355, -1, + -1, -1, -1, 360, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3139, 3140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3008, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 385, -1, -1, -1, -1, - -1, -1, 392, 393, 394, 395, 396, 397, 3051, -1, - -1, -1, -1, 403, -1, -1, -1, -1, -1, -1, - -1, -1, 3065, 3066, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3079, 3080, 3081, -1, - 3083, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3096, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, - -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, - 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, - 37, 38, 39, 40, -1, 3138, 43, 44, 45, 46, - -1, 48, 49, 50, 51, 52, -1, 3150, 55, 56, - 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, -1, 72, 73, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - -1, 88, -1, 90, 91, 92, 93, 94, -1, 96, - 97, 98, -1, -1, 101, 102, 103, 104, 105, -1, - 107, 108, 109, -1, 111, 112, -1, 114, 115, 116, - 117, 118, 119, 120, -1, 122, 123, 124, 125, -1, - 127, -1, 129, -1, -1, -1, 133, 134, -1, 136, - 137, -1, 139, -1, 141, 142, 143, 144, -1, 146, - 147, 148, -1, 150, 151, 152, 153, 154, 155, -1, - -1, 158, 159, 160, 161, 162, 163, 164, -1, 166, - -1, 168, -1, -1, 171, -1, 173, 174, 175, 176, - 177, -1, 179, -1, 181, -1, -1, 184, 185, 186, - -1, -1, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, -1, 204, -1, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, -1, - -1, 228, -1, -1, -1, 232, 233, -1, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, 251, -1, 253, 254, 255, 256, - 257, 258, 259, 260, 261, -1, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, -1, 293, 294, 295, 296, - -1, 298, 299, -1, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, -1, - 317, 318, 319, 320, 321, -1, 323, 324, -1, -1, - 327, 328, 329, 330, -1, 332, 333, 334, 335, 336, - -1, -1, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, -1, 353, 354, 355, -1, - -1, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, -1, -1, - -1, -1, -1, 380, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, -1, 399, -1, -1, 19, -1, 404, 22, 23, - -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, 99, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, 127, -1, 129, 130, -1, 132, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, 157, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, -1, 179, 180, 181, 182, -1, - 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, -1, -1, 228, 229, -1, -1, 232, 233, - -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 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, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 381, 382, 383, - 384, 385, 386, 387, -1, -1, -1, -1, 392, 393, - 394, -1, -1, -1, -1, -1, -1, 401, 402, 3, - 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, - 14, -1, -1, -1, -1, 19, -1, -1, 22, 23, - -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, 127, -1, 129, 130, -1, 132, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, 157, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, -1, 179, 180, 181, 182, -1, - 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, -1, -1, 228, 229, -1, -1, 232, 233, - -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 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, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 381, 382, 383, - 384, 385, 386, 387, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 3, - 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, - 14, -1, -1, -1, -1, -1, 20, -1, 22, 23, - -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, - 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, 132, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, 157, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, 172, 173, - 174, 175, 176, 177, -1, 179, 180, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, + -1, -1, -1, -1, -1, 3179, -1, -1, -1, 3183, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3195, -1, 3197, -1, -1, -1, -1, 3202, 3203, + 3204, -1, -1, 3207, 3208, 3209, 3210, -1, 3212, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3226, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3281, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -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, + 3344, 3345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3358, 3359, 3360, -1, 3362, -1, + -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, - -1, -1, -1, -1, -1, -1, 22, 23, 402, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, -1, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, -1, 118, 119, -1, -1, 122, 123, 124, 125, - -1, 127, -1, 129, 130, -1, 132, 133, 134, -1, - 136, -1, -1, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - -1, 157, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, -1, -1, 180, 181, 182, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - 216, 217, 218, 219, -1, -1, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, 237, 238, -1, 240, 241, 242, 243, 244, -1, - 246, -1, -1, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - 276, 277, 278, -1, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, 297, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, -1, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, -1, 329, -1, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, -1, 350, 351, 352, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, 19, -1, -1, 22, 23, 402, 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, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, - -1, 129, 130, 131, 132, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, 157, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, -1, 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, -1, -1, - 228, 229, -1, -1, 232, 233, -1, -1, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 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, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 381, 382, 383, 384, 385, 386, 387, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, -1, 401, 3, 4, 5, 6, 7, 8, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, 3430, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, 3445, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, 3462, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + -1, 417, -1, -1, 19, -1, 422, 22, 23, -1, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, + -1, 56, 57, 58, 59, 60, 61, -1, 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, -1, 93, -1, + 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, + -1, 106, 107, 108, 109, 110, -1, 112, 113, 114, + -1, 116, 117, -1, 119, 120, 121, 122, 123, 124, + 125, 126, 127, -1, 129, 130, 131, -1, 133, -1, + 135, 136, -1, 138, 139, 140, -1, 142, 143, -1, + 145, -1, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, 158, 159, 160, 161, 162, -1, 164, + 165, 166, 167, 168, 169, 170, 171, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 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, + -1, -1, 237, 238, -1, -1, 241, 242, 243, -1, + -1, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, -1, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 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, -1, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, -1, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, -1, 330, 331, -1, 333, 334, + 335, 336, 337, -1, 339, 340, -1, -1, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, -1, + 355, 356, 357, 358, 359, 360, -1, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + -1, 376, -1, -1, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + -1, -1, -1, 398, 399, 400, 401, 402, 403, 404, + 405, -1, -1, -1, -1, 410, 411, 412, -1, -1, + -1, -1, -1, -1, 419, 420, 3, 4, 5, 6, + 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, + -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, -1, 49, 50, 51, 52, 53, -1, -1, 56, + 57, 58, 59, 60, 61, -1, 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, -1, 93, -1, 95, 96, + 97, 98, 99, -1, 101, 102, 103, -1, -1, 106, + 107, 108, 109, 110, -1, 112, 113, 114, -1, 116, + 117, -1, 119, 120, 121, 122, 123, 124, 125, 126, + 127, -1, 129, 130, 131, -1, 133, -1, 135, 136, + -1, 138, 139, 140, -1, 142, 143, -1, 145, -1, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, 168, 169, 170, 171, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 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, -1, -1, + 237, 238, -1, -1, 241, 242, 243, -1, -1, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + -1, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 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, -1, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, -1, 330, 331, -1, 333, 334, 335, 336, + 337, -1, 339, 340, -1, -1, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, -1, 355, 356, + 357, 358, 359, 360, -1, 362, 363, 364, 365, 366, + 367, -1, 369, 370, 371, 372, 373, -1, -1, 376, + -1, -1, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, -1, -1, + -1, 398, 399, 400, 401, 402, 403, 404, 405, -1, + -1, -1, -1, 410, 411, -1, -1, -1, -1, -1, + -1, -1, 419, 420, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, - 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, 52, -1, -1, 55, 56, 57, 58, - 59, 60, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, -1, 88, - -1, 90, 91, 92, 93, 94, -1, 96, 97, 98, - -1, -1, 101, 102, 103, 104, 105, -1, 107, 108, - 109, -1, 111, 112, -1, 114, 115, 116, 117, 118, + -1, 20, -1, 22, 23, -1, 25, -1, 27, 28, + 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, + 39, 40, -1, -1, 43, 44, 45, 46, 47, -1, + 49, 50, 51, 52, 53, -1, -1, 56, 57, 58, + 59, 60, 61, -1, 63, 64, 65, 66, 67, 68, + -1, 70, 71, 72, 73, 74, 75, -1, -1, -1, + -1, -1, -1, -1, 83, 84, 85, 86, 87, 88, + 89, 90, 91, -1, 93, -1, 95, 96, 97, 98, + 99, -1, 101, 102, 103, -1, -1, 106, 107, 108, + 109, 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, -1, - 129, 130, -1, 132, 133, 134, -1, 136, 137, -1, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - -1, 150, 151, 152, 153, 154, 155, -1, 157, 158, - 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, -1, - 179, 180, 181, 182, -1, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 129, 130, 131, -1, 133, -1, 135, -1, -1, 138, + 139, 140, -1, 142, 143, -1, 145, -1, 147, 148, + 149, 150, 151, -1, 153, 154, 155, -1, 157, 158, + 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, + 169, 170, 171, -1, 173, -1, 175, -1, -1, 178, + 179, 180, 181, 182, 183, 184, 185, 186, -1, 188, + 189, 190, -1, -1, 193, 194, 195, -1, -1, 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, -1, -1, 228, - 229, -1, -1, 232, 233, -1, -1, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, 251, -1, 253, 254, 255, 256, 257, 258, - 259, 260, 261, -1, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, -1, 274, 275, 276, 277, 278, + 209, 210, 211, 212, 213, -1, 215, 216, 217, 218, + 219, 220, 221, 222, 223, -1, 225, 226, -1, 228, + -1, 230, 231, 232, 233, 234, -1, -1, 237, -1, + -1, -1, 241, 242, 243, -1, -1, 246, -1, -1, + -1, 250, 251, 252, 253, 254, 255, 256, -1, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, + 299, 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, - 319, 320, 321, -1, 323, 324, -1, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, -1, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, -1, -1, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, -1, -1, -1, -1, - -1, 380, 381, 382, 383, 384, 385, 386, 387, -1, - -1, -1, -1, 392, 393, 394, -1, -1, -1, -1, - -1, -1, 401, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, 19, - -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, - 130, -1, 132, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, -1, 179, - 180, 181, 182, -1, 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, -1, -1, 228, 229, - -1, -1, 232, 233, -1, -1, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 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, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 381, 382, 383, 384, 385, 386, 387, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - -1, 401, 3, 4, 5, 6, 7, 8, 9, 10, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + -1, 330, 331, -1, 333, 334, 335, 336, 337, -1, + 339, 340, -1, -1, 343, 344, 345, 346, -1, 348, + 349, 350, 351, 352, 353, -1, -1, 356, 357, 358, + 359, -1, -1, 362, 363, 364, 365, 366, 367, -1, + 369, -1, 371, 372, 373, -1, -1, 376, -1, -1, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, -1, -1, -1, 398, + 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, + 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 420, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, + 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, + -1, -1, -1, 56, 57, 58, 59, 60, 61, -1, + 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, + 73, 74, 75, -1, -1, -1, 79, -1, -1, -1, + 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, + 93, -1, 95, 96, 97, 98, 99, -1, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, -1, 112, + 113, 114, -1, 116, 117, -1, 119, 120, 121, -1, + 123, 124, -1, -1, 127, -1, 129, 130, 131, -1, + 133, -1, 135, 136, -1, 138, 139, 140, -1, 142, + -1, -1, 145, -1, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, 168, 169, 170, 171, -1, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, -1, -1, 189, 190, 191, -1, + 193, 194, 195, -1, -1, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, + 223, -1, 225, 226, 227, 228, -1, -1, 231, 232, + 233, 234, -1, -1, 237, -1, -1, -1, 241, 242, + 243, -1, -1, 246, 247, 248, 249, -1, 251, 252, + 253, 254, 255, 256, -1, 258, -1, 260, -1, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, + 293, -1, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, + 313, 314, 315, -1, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, -1, 328, -1, 330, 331, -1, + 333, 334, 335, 336, 337, -1, 339, 340, -1, -1, + 343, -1, 345, -1, -1, 348, 349, 350, 351, 352, + 353, -1, -1, 356, 357, 358, 359, -1, -1, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, + 373, -1, -1, 376, -1, -1, 379, 380, 381, 382, + 383, -1, -1, -1, -1, -1, -1, -1, -1, 392, + 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, + 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 420, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, + 37, 38, 39, 40, -1, -1, 43, 44, 45, 46, + 47, -1, 49, 50, 51, 52, -1, -1, -1, 56, + 57, 58, 59, 60, 61, -1, 63, 64, 65, 66, + 67, 68, -1, 70, 71, 72, 73, 74, 75, -1, + -1, -1, 79, -1, -1, -1, 83, 84, 85, 86, + 87, 88, 89, 90, 91, -1, 93, -1, 95, 96, + 97, 98, 99, -1, 101, 102, 103, -1, -1, 106, + 107, 108, 109, 110, -1, 112, 113, 114, -1, 116, + 117, -1, 119, 120, 121, -1, 123, 124, -1, -1, + 127, -1, 129, 130, 131, -1, 133, -1, 135, 136, + -1, 138, 139, 140, -1, 142, -1, -1, 145, -1, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, 168, 169, 170, 171, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + -1, -1, 189, 190, 191, -1, 193, 194, 195, -1, + -1, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, -1, 215, 216, + 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, + 227, 228, -1, -1, 231, 232, 233, 234, -1, -1, + 237, -1, -1, -1, 241, 242, 243, -1, -1, 246, + 247, 248, 249, -1, 251, 252, 253, 254, 255, 256, + -1, 258, -1, 260, -1, 262, 263, 264, -1, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, 289, 290, 291, 292, 293, -1, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, -1, 309, 310, 311, 312, 313, 314, 315, -1, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + -1, 328, -1, 330, 331, -1, 333, 334, 335, 336, + 337, -1, 339, 340, -1, -1, 343, -1, 345, -1, + -1, 348, 349, 350, 351, 352, 353, -1, -1, 356, + 357, 358, 359, -1, -1, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, 372, 373, -1, -1, 376, + -1, -1, 379, 380, 381, 382, 383, -1, -1, -1, + -1, -1, -1, -1, -1, 392, 393, 394, -1, -1, + -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, 19, -1, - -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, 52, -1, -1, 55, 56, 57, 58, 59, 60, - -1, 62, 63, 64, 65, 66, -1, 68, 69, 70, + -1, 22, 23, 420, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, + 51, 52, 53, -1, -1, 56, 57, 58, 59, 60, + 61, -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, -1, 88, -1, 90, - 91, 92, 93, 94, -1, 96, 97, 98, -1, -1, - 101, 102, 103, 104, 105, -1, 107, 108, 109, -1, - 111, 112, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, 127, -1, 129, 130, - -1, 132, 133, 134, -1, 136, 137, -1, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, -1, 150, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, -1, 93, -1, 95, 96, 97, 98, 99, -1, + 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, + -1, 112, 113, 114, -1, 116, 117, -1, 119, 120, + 121, 122, 123, 124, 125, 126, 127, -1, 129, 130, + 131, -1, 133, -1, 135, 136, 137, 138, 139, 140, + -1, 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, 160, - 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, -1, 179, 180, - 181, 182, -1, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 161, 162, -1, 164, 165, 166, 167, 168, 169, 170, + 171, -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, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, -1, -1, 228, 229, -1, - -1, 232, 233, -1, -1, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, -1, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, -1, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, - 321, -1, 323, 324, -1, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, -1, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, -1, -1, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, -1, -1, -1, -1, -1, 380, - 381, 382, 383, 384, 385, 386, 387, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, - 401, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, -1, -1, -1, -1, 19, -1, -1, - 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, 127, -1, 129, 130, -1, - 132, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, 179, 180, 181, - 182, -1, 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, -1, -1, 228, 229, -1, -1, - 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 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, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, - 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 381, - 382, 383, 384, 385, 386, 387, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, -1, 401, - 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, - 13, 14, -1, -1, -1, -1, 19, -1, -1, 22, - 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, - -1, -1, 55, 56, 57, 58, 59, 60, -1, 62, - 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, -1, 88, -1, 90, 91, 92, - 93, 94, -1, 96, 97, 98, -1, -1, 101, 102, - 103, 104, 105, -1, 107, 108, 109, -1, 111, 112, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, 127, -1, 129, 130, -1, 132, - 133, 134, -1, 136, 137, -1, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, -1, 150, 151, 152, - 153, 154, 155, -1, 157, 158, 159, 160, 161, 162, - 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, - -1, 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, -1, -1, 228, 229, -1, -1, 232, - 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, 251, -1, - 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - -1, 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, -1, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, -1, 317, 318, 319, 320, 321, -1, - 323, 324, -1, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, -1, -1, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, -1, -1, -1, -1, -1, 380, 381, 382, - 383, 384, 385, 386, 387, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, 399, -1, 401, 3, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, -1, -1, 237, 238, -1, -1, + 241, 242, 243, -1, -1, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, -1, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 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, -1, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, -1, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, -1, 330, + 331, -1, 333, 334, 335, 336, 337, -1, 339, 340, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, -1, 355, 356, 357, 358, 359, 360, + -1, 362, 363, 364, 365, 366, 367, -1, 369, 370, + 371, 372, 373, -1, -1, 376, -1, -1, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, -1, -1, -1, 398, 399, 400, + 401, 402, 403, 404, 405, -1, -1, -1, -1, 410, + 411, -1, -1, -1, -1, -1, -1, -1, 419, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, 127, -1, 129, 130, 131, 132, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, 157, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, -1, 179, 180, 181, 182, -1, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, 129, 130, 131, -1, 133, + -1, 135, 136, -1, 138, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 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, -1, -1, 228, 229, -1, -1, 232, 233, - -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, -1, -1, 237, 238, -1, -1, 241, 242, 243, + -1, -1, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 381, 382, 383, - 384, 385, 386, 387, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, -1, 401, 3, 4, - 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, - -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, - 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, -1, 88, -1, 90, 91, 92, 93, 94, - -1, 96, 97, 98, -1, -1, 101, 102, 103, 104, - 105, -1, 107, 108, 109, -1, 111, 112, -1, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, 127, -1, 129, 130, -1, 132, 133, 134, - -1, 136, 137, -1, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, -1, 150, 151, 152, 153, 154, - 155, -1, 157, 158, 159, 160, 161, 162, 163, 164, - -1, 166, -1, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, -1, 179, 180, 181, 182, -1, 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, -1, -1, 228, 229, -1, -1, 232, 233, -1, - -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, 251, -1, 253, 254, - 255, 256, 257, 258, 259, 260, 261, -1, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, -1, 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, -1, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, -1, 317, 318, 319, 320, 321, -1, 323, 324, - -1, -1, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, -1, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, -1, -1, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - -1, -1, -1, -1, -1, 380, 381, 382, 383, 384, - 385, 386, 387, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, -1, 401, 3, 4, 5, - 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, - -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, 127, -1, 129, 130, -1, 132, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, 157, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, -1, 179, 180, 181, 182, -1, 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, - -1, -1, 228, 229, -1, -1, 232, 233, -1, -1, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 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, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 381, 382, 383, 384, 385, - 386, 387, -1, -1, -1, -1, 392, 393, -1, -1, - -1, -1, -1, -1, -1, 401, 3, 4, 5, 6, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, 332, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + -1, 355, 356, 357, 358, 359, 360, -1, 362, 363, + 364, 365, 366, 367, -1, 369, 370, 371, 372, 373, + -1, -1, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 399, 400, 401, 402, 403, + 404, 405, -1, -1, -1, -1, 410, 411, -1, -1, + -1, -1, -1, -1, -1, 419, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, 51, 52, -1, -1, 55, 56, - 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 47, -1, 49, 50, 51, 52, 53, -1, -1, 56, + 57, 58, 59, 60, 61, -1, 63, 64, 65, 66, + 67, 68, -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - -1, 88, -1, 90, 91, 92, 93, 94, -1, 96, - 97, 98, -1, -1, 101, 102, 103, 104, 105, -1, - 107, 108, 109, -1, 111, 112, -1, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - 127, -1, 129, 130, -1, 132, 133, 134, -1, 136, - 137, -1, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, -1, 150, 151, 152, 153, 154, 155, -1, - 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, - -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, -1, 179, 180, 181, 182, -1, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 87, 88, 89, 90, 91, -1, 93, -1, 95, 96, + 97, 98, 99, -1, 101, 102, 103, -1, -1, 106, + 107, 108, 109, 110, -1, 112, 113, 114, -1, 116, + 117, -1, 119, 120, 121, 122, 123, 124, 125, 126, + 127, -1, 129, 130, 131, -1, 133, -1, 135, 136, + -1, 138, 139, 140, -1, 142, 143, -1, 145, -1, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, 168, 169, 170, 171, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 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, -1, - -1, 228, 229, -1, -1, 232, 233, -1, -1, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, 251, -1, 253, 254, 255, 256, - 257, 258, 259, 260, 261, -1, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, -1, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, -1, -1, + 237, 238, -1, -1, 241, 242, 243, -1, -1, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + -1, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, -1, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, -1, - 317, 318, 319, 320, 321, -1, 323, 324, -1, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, -1, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, -1, - -1, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, -1, -1, - -1, -1, -1, 380, 381, 382, 383, 384, 385, 386, - 387, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, -1, 401, 3, 4, 5, 6, 7, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, -1, 330, 331, -1, 333, 334, 335, 336, + 337, -1, 339, 340, -1, -1, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, -1, 355, 356, + 357, 358, 359, 360, -1, 362, 363, 364, 365, 366, + 367, -1, 369, 370, 371, 372, 373, -1, -1, 376, + -1, -1, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, -1, -1, + -1, 398, 399, 400, 401, 402, 403, 404, 405, -1, + -1, -1, -1, 410, 411, -1, -1, -1, -1, -1, + 417, 418, 419, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, 19, + -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 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, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, 129, + 130, 131, -1, 133, -1, 135, 136, -1, 138, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, 164, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 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, -1, -1, 237, 238, -1, + -1, 241, 242, 243, -1, -1, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 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, -1, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, -1, 355, 356, 357, 358, 359, + 360, -1, 362, 363, 364, 365, 366, 367, -1, 369, + 370, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 399, + 400, 401, 402, 403, 404, 405, -1, -1, -1, -1, + 410, 411, 412, -1, -1, -1, -1, -1, -1, 419, + 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, + 13, 14, -1, -1, -1, -1, 19, -1, -1, 22, + 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, + 53, -1, -1, 56, 57, 58, 59, 60, 61, -1, + 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, + 93, -1, 95, 96, 97, 98, 99, -1, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, -1, 112, + 113, 114, -1, 116, 117, -1, 119, 120, 121, 122, + 123, 124, 125, 126, 127, -1, 129, 130, 131, -1, + 133, -1, 135, 136, -1, 138, 139, 140, -1, 142, + 143, -1, 145, -1, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, 168, 169, 170, 171, -1, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 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, -1, -1, 237, 238, -1, -1, 241, 242, + 243, -1, -1, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, -1, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 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, + -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, -1, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, -1, 330, 331, -1, + 333, 334, 335, 336, 337, -1, 339, 340, -1, -1, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, -1, 355, 356, 357, 358, 359, 360, -1, 362, + 363, 364, 365, 366, 367, -1, 369, 370, 371, 372, + 373, -1, -1, 376, -1, -1, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, -1, -1, -1, 398, 399, 400, 401, 402, + 403, 404, 405, -1, -1, -1, -1, 410, 411, -1, + -1, -1, -1, -1, -1, -1, 419, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 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, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, 129, 130, 131, -1, 133, -1, 135, + 136, -1, 138, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, 164, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 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, -1, + -1, 237, 238, -1, -1, 241, 242, 243, -1, -1, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 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, -1, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, -1, 355, + 356, 357, 358, 359, 360, -1, 362, 363, 364, 365, + 366, 367, -1, 369, 370, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 399, 400, 401, 402, 403, 404, 405, + -1, -1, -1, -1, 410, 411, -1, -1, -1, -1, + -1, -1, -1, 419, 3, 4, 5, 6, 7, 8, + 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, + 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, + 49, 50, 51, 52, 53, -1, -1, 56, 57, 58, + 59, 60, 61, -1, 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, -1, 93, -1, 95, 96, 97, 98, + 99, -1, 101, 102, 103, -1, -1, 106, 107, 108, + 109, 110, -1, 112, 113, 114, -1, 116, 117, -1, + 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, + 129, 130, 131, -1, 133, -1, 135, 136, 137, 138, + 139, 140, -1, 142, 143, -1, 145, -1, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, 158, + 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, + 169, 170, 171, -1, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 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, -1, -1, 237, 238, + -1, -1, 241, 242, 243, -1, -1, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, -1, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 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, -1, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, -1, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + -1, 330, 331, -1, 333, 334, 335, 336, 337, -1, + 339, 340, -1, -1, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, + 359, 360, -1, 362, 363, 364, 365, 366, 367, -1, + 369, 370, 371, 372, 373, -1, -1, 376, -1, -1, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, -1, -1, -1, 398, + 399, 400, 401, 402, 403, 404, 405, -1, -1, -1, + -1, 410, 411, -1, -1, -1, -1, -1, -1, -1, + 419, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 12, 13, 14, -1, -1, -1, -1, 19, -1, -1, + 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, -1, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 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, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, 129, 130, 131, + -1, 133, -1, 135, 136, -1, 138, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, 164, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 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, -1, -1, 237, 238, -1, -1, 241, + 242, 243, -1, -1, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 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, -1, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, -1, 355, 356, 357, 358, 359, 360, -1, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 399, 400, 401, + 402, 403, 404, 405, -1, -1, -1, -1, 410, 411, + -1, -1, -1, -1, -1, -1, -1, 419, 3, 4, + 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, + -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, + -1, 56, 57, 58, 59, 60, 61, -1, 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, -1, 93, -1, + 95, 96, 97, 98, 99, -1, 101, 102, 103, -1, + -1, 106, 107, 108, 109, 110, -1, 112, 113, 114, + -1, 116, 117, -1, 119, 120, 121, 122, 123, 124, + 125, 126, 127, -1, 129, 130, 131, -1, 133, -1, + 135, 136, -1, 138, 139, 140, -1, 142, 143, -1, + 145, -1, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, 158, 159, 160, 161, 162, -1, 164, + 165, 166, 167, 168, 169, 170, 171, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 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, + -1, -1, 237, 238, -1, -1, 241, 242, 243, -1, + -1, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, -1, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 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, -1, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, -1, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, -1, 330, 331, -1, 333, 334, + 335, 336, 337, -1, 339, 340, -1, -1, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, -1, + 355, 356, 357, 358, 359, 360, -1, 362, 363, 364, + 365, 366, 367, -1, 369, 370, 371, 372, 373, -1, + -1, 376, -1, -1, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + -1, -1, -1, 398, 399, 400, 401, 402, 403, 404, + 405, -1, -1, -1, -1, 410, 411, -1, -1, -1, + -1, -1, -1, -1, 419, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, - -1, 129, 130, -1, 132, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, 157, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - -1, 179, 180, 181, 182, -1, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 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, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, 129, 130, 131, -1, 133, -1, 135, 136, -1, + 138, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 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, -1, -1, - 228, 229, -1, -1, 232, 233, -1, -1, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, 276, 277, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, -1, -1, 237, + 238, -1, -1, 241, 242, 243, -1, -1, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 381, 382, 383, 384, 385, 386, 387, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, -1, 401, 3, 4, 5, 6, 7, 8, - 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, - 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, 52, -1, -1, 55, 56, 57, 58, - 59, 60, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, -1, 88, - -1, 90, 91, 92, 93, 94, -1, 96, 97, 98, - -1, -1, 101, 102, 103, 104, 105, -1, 107, 108, - 109, -1, 111, 112, -1, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, 127, -1, - 129, 130, -1, 132, 133, 134, -1, 136, 137, -1, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - -1, 150, 151, 152, 153, 154, 155, -1, 157, 158, - 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, -1, - 179, 180, 181, 182, -1, 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, -1, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, -1, -1, 228, - 229, -1, -1, 232, 233, -1, -1, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, 251, -1, 253, 254, 255, 256, 257, 258, - 259, 260, 261, -1, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, -1, 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, -1, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, - 319, 320, 321, -1, 323, 324, -1, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, -1, -1, - 339, 340, 341, 342, 343, -1, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, -1, -1, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, -1, -1, -1, -1, - -1, 380, 381, 382, 383, 384, 385, 386, 387, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, -1, 401, 3, 4, 5, 6, 7, 8, 9, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, -1, 355, 356, 357, + 358, 359, 360, -1, 362, 363, 364, 365, 366, 367, + -1, 369, 370, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 399, 400, 401, 402, 403, 404, 405, -1, -1, + -1, -1, 410, 411, -1, -1, -1, -1, -1, -1, + -1, 419, 3, 4, 5, 6, 7, 8, 9, 10, + -1, 12, 13, 14, -1, -1, -1, -1, 19, -1, + -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, + 51, 52, 53, -1, -1, 56, 57, 58, 59, 60, + 61, -1, 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, -1, 93, -1, 95, 96, 97, 98, 99, -1, + 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, + -1, 112, 113, 114, -1, 116, 117, -1, 119, 120, + 121, 122, 123, 124, 125, 126, 127, -1, 129, 130, + 131, -1, 133, -1, 135, 136, -1, 138, 139, 140, + -1, 142, 143, -1, 145, -1, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, 158, 159, 160, + 161, 162, -1, 164, 165, 166, 167, 168, 169, 170, + 171, -1, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 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, -1, -1, 237, 238, -1, -1, + 241, 242, 243, -1, -1, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, -1, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 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, -1, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, -1, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, -1, 330, + 331, -1, 333, 334, 335, 336, 337, -1, 339, 340, + -1, -1, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, -1, 355, 356, 357, 358, 359, 360, + -1, 362, 363, 364, 365, 366, 367, -1, 369, 370, + 371, 372, 373, -1, -1, 376, -1, -1, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, -1, -1, -1, 398, 399, 400, + 401, 402, 403, 404, 405, -1, -1, -1, -1, 410, + 411, -1, -1, -1, -1, -1, -1, -1, 419, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, 19, -1, -1, 22, 23, + -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 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, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, 129, 130, 131, -1, 133, + -1, 135, 136, -1, 138, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 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, -1, -1, 237, 238, -1, -1, 241, 242, 243, + -1, -1, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 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, -1, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + -1, 355, 356, 357, 358, 359, 360, -1, 362, 363, + 364, 365, 366, 367, -1, 369, 370, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 399, 400, 401, 402, 403, + 404, 405, -1, -1, -1, -1, 410, 411, -1, -1, + -1, -1, -1, -1, -1, 419, 3, 4, 5, 6, + 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, + -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, -1, 49, 50, 51, 52, 53, -1, -1, 56, + 57, 58, 59, 60, 61, -1, 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, -1, 93, -1, 95, 96, + 97, 98, 99, -1, 101, 102, 103, -1, -1, 106, + 107, 108, 109, 110, -1, 112, 113, 114, -1, 116, + 117, -1, 119, 120, 121, 122, 123, 124, 125, 126, + 127, -1, 129, 130, 131, -1, 133, -1, 135, 136, + -1, 138, 139, 140, -1, 142, 143, -1, 145, -1, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, 168, 169, 170, 171, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 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, -1, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, -1, -1, + 237, 238, -1, -1, 241, 242, 243, -1, -1, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + -1, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 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, -1, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, -1, 330, 331, -1, 333, 334, 335, 336, + 337, -1, 339, 340, -1, -1, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, -1, -1, 356, + 357, 358, 359, 360, -1, 362, 363, 364, 365, 366, + 367, -1, 369, 370, 371, 372, 373, -1, -1, 376, + -1, -1, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, -1, -1, + -1, 398, 399, 400, 401, 402, 403, 404, 405, -1, + -1, -1, -1, 410, 411, -1, -1, -1, -1, -1, + -1, -1, 419, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, -1, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, + 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 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, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, -1, -1, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, 129, + 130, 131, -1, 133, -1, 135, 136, -1, 138, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, 164, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, -1, 188, 189, + 190, -1, -1, 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, -1, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, -1, -1, 237, 238, -1, + -1, 241, 242, 243, -1, -1, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 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, -1, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, -1, 355, 356, 357, 358, 359, + 360, -1, 362, 363, 364, 365, 366, 367, -1, 369, + 370, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 399, + 400, 401, 402, 403, 404, 405, -1, -1, -1, -1, + 410, 411, -1, -1, -1, -1, -1, -1, -1, 419, + 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, + 13, 14, -1, -1, -1, -1, 19, -1, -1, 22, + 23, -1, 25, 26, 27, 28, 29, -1, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, + 53, -1, -1, 56, 57, 58, 59, 60, 61, -1, + 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, -1, + 93, -1, 95, 96, 97, 98, 99, -1, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, -1, 112, + 113, 114, -1, 116, -1, -1, 119, 120, 121, 122, + 123, 124, 125, 126, 127, -1, 129, 130, 131, -1, + 133, -1, 135, 136, -1, 138, 139, 140, -1, 142, + 143, -1, 145, -1, 147, 148, 149, 150, 151, -1, + 153, 154, 155, -1, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, 168, 169, 170, 171, -1, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, -1, 188, 189, 190, -1, -1, + 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, -1, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, -1, -1, 237, 238, -1, -1, 241, 242, + 243, -1, -1, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, -1, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 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, + -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, -1, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, -1, 330, 331, -1, + 333, 334, 335, 336, 337, -1, 339, 340, -1, -1, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, -1, -1, 356, 357, 358, 359, 360, -1, 362, + 363, 364, 365, 366, 367, -1, 369, 370, 371, 372, + 373, -1, -1, 376, -1, -1, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, -1, -1, -1, 398, 399, 400, 401, 402, + 403, 404, 405, -1, -1, -1, -1, 410, 411, -1, + -1, -1, -1, -1, -1, -1, 419, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 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, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + 136, -1, 138, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, 164, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 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, -1, 225, + 226, 227, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, 238, -1, 240, 241, 242, 243, -1, -1, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 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, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, 332, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, 360, -1, 362, 363, 364, 365, + 366, 367, -1, 369, 370, 371, 372, 373, -1, -1, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, -1, -1, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, -1, 419, 22, 23, -1, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, -1, 42, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 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, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, 136, -1, + 138, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 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, -1, 225, 226, 227, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + 238, -1, 240, 241, 242, 243, -1, -1, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 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, -1, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, 360, -1, 362, 363, 364, 365, 366, 367, + -1, 369, 370, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, -1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, 419, 22, 23, -1, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, + 40, -1, 42, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, -1, -1, 114, 115, 116, 117, 118, 119, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, - 130, -1, 132, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, + 130, 131, -1, 133, -1, 135, 136, -1, 138, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, -1, 179, - 180, 181, -1, -1, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 160, 161, 162, -1, 164, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, -1, -1, 228, 229, - -1, -1, 232, 233, -1, -1, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, 276, 277, 278, 279, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, 227, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, 238, -1, + -1, 241, 242, 243, -1, -1, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 381, 382, 383, 384, 385, 386, 387, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - -1, 401, 3, 4, 5, 6, 7, 8, 9, 10, - -1, 12, 13, 14, -1, -1, -1, -1, 19, -1, - -1, 22, 23, -1, 25, 26, 27, 28, 29, -1, - 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, 52, -1, -1, 55, 56, 57, 58, 59, 60, - -1, 62, 63, 64, 65, 66, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, -1, 88, -1, 90, - 91, 92, 93, 94, -1, 96, 97, 98, -1, -1, - 101, 102, 103, 104, 105, -1, 107, 108, 109, -1, - 111, -1, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, 127, -1, 129, 130, - -1, 132, 133, 134, -1, 136, 137, -1, 139, -1, - 141, 142, 143, 144, -1, 146, 147, 148, -1, 150, - 151, 152, 153, 154, 155, -1, 157, 158, 159, 160, - 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, -1, 179, 180, - 181, -1, -1, 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, -1, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, -1, -1, 228, 229, -1, - -1, 232, 233, -1, -1, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, -1, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, -1, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, - 321, -1, 323, 324, -1, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, -1, -1, 339, 340, - 341, 342, 343, -1, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, -1, -1, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, -1, -1, -1, -1, -1, 380, - 381, 382, 383, 384, 385, 386, 387, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, - 401, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, 130, -1, - 132, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, 179, 180, 181, - 182, -1, 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, -1, 216, 217, 218, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, 229, -1, 231, - 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 401, - 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, 130, -1, - 132, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, 179, 180, 181, - 182, -1, 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, -1, 216, 217, 218, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, 229, -1, 231, - 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 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, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 401, - 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, 130, -1, - 132, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, 179, 180, 181, - 182, -1, 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, -1, 216, 217, 218, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, 229, -1, -1, - 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 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, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + 360, -1, 362, 363, 364, 365, 366, 367, -1, 369, + 370, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 401, + 12, 13, 14, -1, -1, -1, -1, -1, -1, 419, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, 130, -1, - 132, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, 73, 74, 75, -1, -1, -1, 79, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, 136, -1, 138, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, 179, 180, 181, - 182, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 162, -1, 164, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, 218, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, 229, -1, -1, - 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, 297, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 401, - 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, - -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, 229, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, 227, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, 238, -1, -1, 241, + 242, 243, -1, -1, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 401, - 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, - -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, 313, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, 370, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, -1, 419, 22, 23, + -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, 332, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, -1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, + -1, -1, -1, -1, -1, 419, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, 238, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, -1, -1, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, -1, 419, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, -1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, 419, 22, 23, -1, 25, -1, 27, 28, 29, + -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 401, + 12, 13, 14, -1, -1, -1, -1, -1, -1, 419, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, 401, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 419, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 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, 47, 48, 49, 50, 51, 52, -1, 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, -1, 123, 124, + -1, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, -1, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + -1, 166, 167, 168, 169, 170, 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, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, -1, 223, 224, + 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, -1, 247, 248, 249, -1, 251, 252, 253, 254, + 255, 256, 257, 258, -1, 260, -1, 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, 288, 289, 290, 291, 292, 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, -1, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, -1, + 345, -1, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, -1, + -1, -1, -1, -1, -1, -1, -1, 392, 393, 394, + -1, -1, -1, 398, 399, 400, -1, -1, 403, 404, + -1, 406, 407, 408, -1, 410, 411, 412, 413, 414, + 415, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 401, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 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, 47, 48, 49, 50, 51, -1, - 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, -1, 118, 119, -1, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, -1, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, -1, 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, - -1, 214, 215, 216, 217, 218, 219, 220, -1, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, -1, 237, 238, -1, 240, 241, 242, - 243, 244, 245, 246, -1, -1, 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, -1, 280, 281, 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, -1, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, -1, 329, -1, 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, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, -1, 372, - 373, 374, -1, -1, -1, -1, -1, 380, 381, 382, - -1, -1, 385, 386, -1, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, -1, -1, -1, -1, 385, -1, -1, - 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, -1, -1, -1, + -1, 403, -1, -1, 406, 407, 408, -1, 410, 411, + 412, 413, 414, 415, 3, 4, 5, 6, 7, 8, + 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, + -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, + 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, + 39, 40, -1, -1, 43, 44, 45, 46, 47, -1, + 49, 50, 51, 52, 53, -1, -1, 56, 57, 58, + 59, 60, 61, -1, 63, 64, 65, 66, 67, 68, + -1, 70, 71, 72, -1, 74, 75, -1, -1, -1, + -1, -1, -1, -1, 83, 84, 85, 86, 87, 88, + 89, 90, 91, -1, 93, -1, 95, 96, 97, 98, + 99, -1, 101, 102, 103, -1, -1, 106, 107, 108, + 109, 110, -1, 112, 113, 114, -1, 116, 117, -1, + 119, 120, 121, 122, 123, 124, 125, -1, 127, -1, + 129, 130, 131, -1, 133, -1, 135, -1, -1, -1, + 139, 140, -1, 142, 143, -1, 145, -1, 147, 148, + 149, 150, 151, -1, 153, 154, 155, -1, 157, 158, + 159, 160, 161, 162, -1, -1, 165, 166, 167, 168, + 169, 170, 171, -1, 173, -1, 175, -1, -1, 178, + -1, 180, 181, 182, 183, 184, 185, 186, -1, 188, + -1, 190, -1, -1, 193, 194, 195, -1, -1, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, + 219, 220, 221, 222, 223, -1, 225, 226, -1, 228, + -1, 230, 231, 232, 233, 234, -1, -1, 237, -1, + -1, -1, 241, 242, 243, -1, -1, 246, -1, -1, + -1, 250, 251, 252, 253, 254, 255, 256, -1, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + 289, 290, -1, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, -1, + 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + -1, 330, 331, -1, 333, 334, 335, 336, 337, -1, + 339, 340, -1, -1, 343, 344, 345, 346, -1, 348, + 349, 350, 351, 352, 353, -1, -1, 356, 357, 358, + 359, -1, -1, 362, 363, 364, 365, 366, 367, -1, + 369, -1, 371, 372, 373, -1, -1, 376, -1, -1, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, -1, -1, -1, 398, + -1, -1, -1, -1, 403, -1, -1, 406, 407, 408, + -1, 410, 411, 412, 413, 414, 415, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, -1, -1, -1, -1, 403, -1, -1, + 406, 407, 408, -1, 410, 411, 412, 413, 414, 415, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, - 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, - -1, -1, 55, 56, 57, 58, 59, 60, -1, 62, - 63, 64, 65, 66, -1, 68, 69, 70, -1, 72, - 73, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, 88, -1, 90, 91, 92, - 93, 94, -1, 96, 97, 98, -1, -1, 101, 102, - 103, 104, 105, -1, 107, 108, 109, -1, 111, 112, - -1, 114, 115, 116, 117, 118, 119, 120, -1, 122, - 123, 124, 125, -1, 127, -1, 129, -1, -1, -1, - 133, 134, -1, 136, 137, -1, 139, -1, 141, 142, - 143, 144, -1, 146, 147, 148, -1, 150, 151, 152, - 153, 154, 155, -1, -1, 158, 159, 160, 161, 162, - 163, 164, -1, 166, -1, 168, -1, -1, 171, -1, - 173, 174, 175, 176, 177, -1, 179, -1, 181, -1, - -1, 184, 185, 186, -1, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, -1, -1, 228, -1, -1, -1, 232, - 233, -1, -1, 236, -1, -1, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, 251, -1, - 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - -1, 274, 275, -1, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, -1, - 293, 294, 295, 296, -1, 298, 299, -1, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, -1, 317, 318, 319, 320, 321, -1, - 323, 324, -1, -1, 327, 328, 329, 330, -1, 332, - 333, 334, 335, 336, -1, -1, 339, 340, 341, 342, - -1, -1, 345, 346, 347, 348, 349, 350, 351, -1, - 353, 354, 355, -1, -1, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, -1, -1, -1, -1, -1, 380, -1, -1, - -1, -1, 385, -1, -1, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, -1, -1, -1, -1, 385, -1, -1, - 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, + 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, + 53, -1, -1, 56, 57, 58, 59, 60, 61, -1, + 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, + -1, 74, 75, -1, -1, -1, -1, -1, -1, -1, + 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, + 93, -1, 95, 96, 97, 98, 99, -1, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, -1, 112, + 113, 114, -1, 116, 117, -1, 119, 120, 121, 122, + 123, 124, 125, -1, 127, -1, 129, 130, 131, -1, + 133, -1, 135, -1, -1, -1, 139, 140, -1, 142, + 143, -1, 145, -1, 147, 148, 149, 150, 151, -1, + 153, 154, 155, -1, 157, 158, 159, 160, 161, 162, + -1, -1, 165, 166, 167, 168, 169, 170, 171, -1, + 173, -1, 175, -1, -1, 178, -1, 180, 181, 182, + 183, 184, 185, 186, -1, 188, -1, 190, -1, -1, + 193, 194, 195, -1, -1, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, + 213, -1, 215, 216, 217, 218, 219, 220, 221, 222, + 223, -1, 225, 226, -1, 228, -1, 230, 231, 232, + 233, 234, -1, -1, 237, -1, -1, -1, 241, 242, + 243, -1, -1, 246, -1, -1, -1, 250, 251, 252, + 253, 254, 255, 256, -1, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, 289, 290, -1, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, + -1, 314, 315, -1, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, -1, 330, 331, -1, + 333, 334, 335, 336, 337, -1, 339, 340, -1, -1, + 343, 344, 345, 346, -1, 348, 349, 350, 351, 352, + 353, -1, -1, 356, 357, 358, 359, -1, -1, 362, + 363, 364, 365, 366, 367, -1, 369, -1, 371, 372, + 373, -1, -1, 376, -1, -1, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, -1, -1, -1, 398, -1, -1, -1, -1, + 403, -1, -1, 406, 407, 408, -1, 410, 411, 412, + 413, 414, 415, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, + -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, -1, + -1, -1, -1, 403, -1, -1, 406, 407, 408, -1, + 410, 411, 412, 413, 414, 415, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 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, + 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, 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, -1, -1, + -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, + -1, 12, 13, 14, -1, 412, -1, -1, -1, -1, + -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, + 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, + -1, -1, 43, 44, 45, 46, 47, -1, 49, 50, + 51, 52, 53, -1, -1, 56, 57, 58, 59, 60, + 61, -1, 63, 64, 65, 66, 67, 68, -1, 70, + 71, 72, -1, 74, 75, -1, -1, -1, -1, -1, + -1, -1, 83, 84, 85, 86, 87, 88, 89, 90, + 91, -1, 93, -1, 95, 96, 97, 98, 99, -1, + 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, + -1, 112, 113, 114, -1, 116, 117, -1, 119, 120, + 121, 122, 123, 124, 125, -1, 127, -1, 129, 130, + 131, -1, 133, -1, 135, -1, -1, -1, 139, 140, + -1, 142, 143, -1, 145, -1, 147, 148, 149, 150, + 151, -1, 153, 154, 155, -1, 157, 158, 159, 160, + 161, 162, -1, -1, 165, 166, 167, 168, 169, 170, + 171, -1, 173, -1, 175, -1, -1, 178, -1, 180, + 181, 182, 183, 184, 185, 186, -1, 188, -1, 190, + -1, -1, 193, 194, 195, -1, -1, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, + 221, 222, 223, -1, 225, 226, -1, 228, -1, 230, + 231, 232, 233, 234, -1, -1, 237, -1, -1, -1, + 241, 242, 243, -1, -1, 246, -1, -1, -1, 250, + 251, 252, 253, 254, 255, 256, -1, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, + -1, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, -1, 309, 310, + 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, -1, 330, + 331, -1, 333, 334, 335, 336, 337, -1, 339, 340, + -1, -1, 343, 344, 345, 346, -1, 348, 349, 350, + 351, 352, 353, -1, -1, 356, 357, 358, 359, -1, + -1, 362, 363, 364, 365, 366, 367, -1, 369, -1, + 371, 372, 373, -1, -1, 376, -1, -1, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, + 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, + -1, 412, -1, -1, -1, -1, -1, 22, 23, -1, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, + 45, 46, 47, -1, 49, 50, 51, 52, -1, -1, + -1, 56, 57, 58, 59, 60, 61, -1, 63, 64, + 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, + 75, -1, -1, -1, 79, -1, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 91, -1, 93, -1, + 95, 96, 97, 98, 99, -1, 101, 102, 103, -1, + -1, 106, 107, 108, 109, 110, -1, 112, 113, 114, + -1, 116, 117, -1, 119, 120, 121, -1, 123, 124, + -1, -1, 127, -1, 129, 130, 131, -1, 133, -1, + 135, 136, -1, 138, 139, 140, -1, 142, -1, -1, + 145, -1, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, 158, 159, 160, 161, 162, -1, 164, + -1, 166, 167, 168, 169, 170, 171, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, -1, -1, 189, 190, 191, -1, 193, 194, + 195, -1, -1, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, -1, + 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, + 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, + -1, -1, 237, -1, -1, -1, 241, 242, 243, -1, + -1, -1, 247, 248, 249, -1, 251, 252, 253, 254, + 255, 256, -1, 258, -1, 260, -1, 262, 263, 264, + -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, 289, 290, 291, 292, 293, -1, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, -1, 309, 310, 311, 312, 313, 314, + 315, -1, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, 328, -1, 330, 331, -1, 333, 334, + 335, 336, 337, -1, 339, 340, -1, -1, 343, -1, + 345, -1, -1, 348, 349, 350, 351, 352, 353, -1, + -1, 356, 357, 358, 359, -1, -1, 362, 363, 364, + 365, -1, 367, -1, 369, 370, 371, 372, 373, -1, + -1, 376, -1, -1, 379, 380, 381, 382, 383, -1, + -1, -1, -1, -1, -1, -1, -1, 392, 393, 394, + -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, + 9, 10, -1, 12, 13, 14, -1, 412, -1, -1, + -1, -1, -1, 22, 23, -1, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, -1, -1, 43, 44, 45, 46, 47, -1, + 49, 50, 51, 52, -1, -1, -1, 56, 57, 58, + 59, 60, 61, -1, 63, 64, 65, 66, 67, 68, + -1, 70, 71, 72, 73, 74, 75, -1, -1, -1, + 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, + 89, 90, 91, -1, 93, -1, 95, 96, 97, 98, + 99, -1, 101, 102, 103, -1, -1, 106, 107, 108, + 109, 110, -1, 112, 113, 114, -1, 116, 117, -1, + 119, 120, 121, -1, 123, 124, -1, -1, 127, -1, + 129, 130, 131, -1, 133, -1, 135, 136, -1, 138, + 139, 140, -1, 142, -1, -1, 145, -1, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, 158, + 159, 160, 161, 162, -1, 164, -1, 166, 167, 168, + 169, 170, 171, -1, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, -1, -1, + 189, 190, 191, -1, 193, 194, 195, -1, -1, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, -1, 215, 216, 217, 218, + 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, + -1, -1, 231, 232, 233, 234, -1, -1, 237, -1, + -1, -1, 241, 242, 243, -1, -1, -1, 247, 248, + 249, -1, 251, 252, 253, 254, 255, 256, -1, 258, + -1, 260, -1, 262, 263, 264, -1, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + 289, 290, 291, 292, 293, -1, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, -1, + 309, 310, 311, 312, 313, 314, 315, -1, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, + -1, 330, 331, -1, 333, 334, 335, 336, 337, -1, + 339, 340, -1, -1, 343, -1, 345, -1, -1, 348, + 349, 350, 351, 352, 353, -1, -1, 356, 357, 358, + 359, -1, -1, 362, 363, 364, 365, -1, 367, -1, + 369, 370, 371, 372, 373, -1, -1, 376, -1, -1, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, -1, -1, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, - 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, + 13, 14, -1, 412, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, - 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, - -1, -1, 55, 56, 57, 58, 59, 60, -1, 62, - 63, 64, 65, 66, -1, 68, 69, 70, -1, 72, - 73, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, 88, -1, 90, 91, 92, - 93, 94, -1, 96, 97, 98, -1, -1, 101, 102, - 103, 104, 105, -1, 107, 108, 109, -1, 111, 112, - -1, 114, 115, 116, 117, 118, 119, 120, -1, 122, - 123, 124, 125, -1, 127, -1, 129, -1, -1, -1, - 133, 134, -1, 136, 137, -1, 139, -1, 141, 142, - 143, 144, -1, 146, 147, 148, -1, 150, 151, 152, - 153, 154, 155, -1, -1, 158, 159, 160, 161, 162, - 163, 164, -1, 166, -1, 168, -1, -1, 171, -1, - 173, 174, 175, 176, 177, -1, 179, -1, 181, -1, - -1, 184, 185, 186, -1, -1, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, -1, -1, 228, -1, -1, -1, 232, - 233, -1, -1, 236, -1, -1, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, 251, -1, - 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - -1, 274, 275, -1, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, -1, - 293, 294, 295, 296, -1, 298, 299, -1, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, -1, 317, 318, 319, 320, 321, -1, - 323, 324, -1, -1, 327, 328, 329, 330, -1, 332, - 333, 334, 335, 336, -1, -1, 339, 340, 341, 342, - -1, -1, 345, 346, 347, 348, 349, 350, 351, -1, - 353, 354, 355, -1, -1, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, -1, -1, -1, -1, -1, 380, -1, -1, - -1, -1, 385, -1, -1, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, -1, -1, -1, -1, 385, -1, -1, - 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 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, 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, + 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, + 53, -1, -1, 56, 57, 58, 59, 60, 61, -1, + 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, + -1, 74, 75, -1, -1, -1, -1, -1, -1, -1, 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, 288, 289, 290, 291, 292, + 93, -1, 95, 96, 97, 98, 99, -1, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, -1, 112, + 113, 114, -1, 116, 117, -1, 119, 120, 121, 122, + 123, 124, 125, 126, 127, -1, 129, 130, 131, -1, + 133, -1, 135, -1, -1, -1, 139, 140, -1, 142, + 143, -1, 145, -1, 147, 148, 149, 150, 151, -1, + 153, 154, 155, -1, 157, 158, 159, 160, 161, 162, + -1, -1, 165, 166, 167, 168, 169, 170, 171, -1, + 173, -1, 175, -1, -1, 178, -1, 180, 181, 182, + 183, 184, 185, 186, -1, 188, -1, 190, -1, -1, + 193, 194, 195, -1, -1, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, + 213, -1, 215, 216, 217, 218, 219, 220, 221, 222, + 223, -1, 225, 226, -1, 228, -1, 230, 231, 232, + 233, 234, 235, -1, 237, -1, 239, -1, 241, 242, + 243, -1, -1, 246, -1, -1, -1, 250, 251, 252, + 253, 254, 255, 256, -1, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, 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, 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, + -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, + -1, 314, 315, -1, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, -1, 330, 331, -1, + 333, 334, 335, 336, 337, -1, 339, 340, -1, -1, 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, -1, -1, -1, -1, -1, 380, 3, 4, + 353, -1, -1, 356, 357, 358, 359, -1, -1, 362, + 363, 364, 365, 366, 367, -1, 369, -1, 371, 372, + 373, -1, -1, 376, -1, -1, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, -1, -1, -1, 398, 399, 400, -1, -1, + -1, 404, -1, -1, -1, -1, -1, 410, 411, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, 235, -1, 237, -1, 239, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 399, 400, -1, -1, -1, + 404, -1, -1, -1, -1, -1, 410, 411, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, - -1, 394, -1, -1, -1, -1, -1, 22, 23, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, - 65, 66, -1, 68, 69, 70, -1, 72, 73, -1, - -1, -1, -1, -1, 79, 80, 81, 82, 83, 84, - 85, 86, -1, 88, -1, 90, 91, 92, 93, 94, - -1, 96, 97, 98, -1, -1, 101, 102, 103, 104, - 105, -1, 107, 108, 109, -1, 111, 112, -1, 114, - 115, 116, 117, 118, 119, 120, -1, 122, 123, 124, - 125, -1, 127, -1, 129, -1, -1, -1, 133, 134, - -1, 136, 137, -1, 139, -1, 141, 142, 143, 144, - -1, 146, 147, 148, -1, 150, 151, 152, 153, 154, - 155, -1, -1, 158, 159, 160, 161, 162, 163, 164, - -1, 166, -1, 168, -1, -1, 171, -1, 173, 174, - 175, 176, 177, -1, 179, -1, 181, -1, -1, 184, - 185, 186, -1, -1, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, - -1, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, 216, 217, -1, 219, -1, 221, 222, 223, 224, - 225, -1, -1, 228, -1, -1, -1, 232, 233, -1, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, 251, -1, 253, 254, - 255, 256, 257, 258, 259, 260, 261, -1, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, - 275, -1, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, -1, 293, 294, - 295, 296, -1, 298, 299, -1, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, -1, 317, 318, 319, 320, 321, -1, 323, 324, - -1, -1, 327, 328, 329, 330, -1, 332, 333, 334, - 335, 336, -1, -1, 339, 340, 341, 342, -1, -1, - 345, 346, 347, 348, 349, 350, 351, -1, 353, 354, - 355, -1, -1, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - -1, -1, -1, -1, -1, 380, 3, 4, 5, 6, - 7, 8, 9, 10, -1, 12, 13, 14, -1, 394, - -1, -1, -1, -1, -1, 22, 23, -1, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, + 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, + -1, 56, 57, 58, 59, 60, 61, -1, 63, 64, + 65, 66, 67, 68, -1, 70, 71, 72, -1, 74, + 75, -1, -1, -1, -1, -1, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 91, -1, 93, -1, + 95, 96, 97, 98, 99, -1, 101, 102, 103, -1, + -1, 106, 107, 108, 109, 110, -1, 112, 113, 114, + -1, 116, 117, -1, 119, 120, 121, 122, 123, 124, + 125, 126, 127, -1, 129, 130, 131, -1, 133, -1, + 135, -1, -1, -1, 139, 140, -1, 142, 143, -1, + 145, -1, 147, 148, 149, 150, 151, -1, 153, 154, + 155, -1, 157, 158, 159, 160, 161, 162, -1, -1, + 165, 166, 167, 168, 169, 170, 171, -1, 173, -1, + 175, -1, -1, 178, -1, 180, 181, 182, 183, 184, + 185, 186, -1, 188, -1, 190, -1, -1, 193, 194, + 195, -1, -1, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, + 215, 216, 217, 218, 219, 220, 221, 222, 223, -1, + 225, 226, -1, 228, -1, 230, 231, 232, 233, 234, + 235, -1, 237, -1, 239, -1, 241, 242, 243, -1, + -1, 246, -1, -1, -1, 250, 251, 252, 253, 254, + 255, 256, -1, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, 289, 290, -1, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, + 315, -1, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, -1, 330, 331, -1, 333, 334, + 335, 336, 337, -1, 339, 340, -1, -1, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, -1, + -1, 356, 357, 358, 359, -1, -1, 362, 363, 364, + 365, 366, 367, -1, 369, -1, 371, 372, 373, -1, + -1, 376, -1, -1, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + -1, -1, -1, 398, 399, 400, -1, -1, -1, 404, + -1, -1, -1, -1, -1, 410, 411, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, -1, -1, -1, -1, -1, 404, -1, + -1, -1, -1, -1, 410, 411, 3, 4, 5, 6, + 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, + -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, + 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, 46, - -1, 48, 49, 50, 51, -1, -1, -1, 55, 56, - 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, 73, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - -1, 88, -1, 90, 91, 92, 93, 94, -1, 96, - 97, 98, -1, -1, 101, 102, 103, 104, 105, -1, - 107, 108, 109, -1, 111, 112, -1, 114, 115, 116, - -1, 118, 119, -1, -1, 122, 123, 124, 125, -1, - 127, -1, 129, 130, -1, 132, 133, 134, -1, 136, - -1, -1, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, -1, 150, 151, 152, 153, 154, 155, -1, - 157, -1, 159, 160, 161, 162, 163, 164, -1, 166, - -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, -1, -1, 180, 181, 182, -1, 184, 185, 186, - -1, -1, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, -1, 206, - 207, 208, 209, 210, 211, 212, -1, 214, -1, 216, - 217, 218, 219, -1, -1, 222, 223, 224, 225, -1, - -1, 228, -1, -1, -1, 232, 233, -1, -1, -1, - 237, 238, -1, 240, 241, 242, 243, 244, -1, 246, - -1, -1, 249, 250, 251, -1, 253, 254, 255, 256, - 257, 258, 259, 260, 261, -1, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, -1, 274, 275, 276, - 277, 278, -1, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, -1, 293, 294, 295, 296, - 297, 298, 299, -1, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, -1, 312, -1, 314, 315, -1, - 317, 318, 319, 320, 321, -1, 323, 324, -1, -1, - 327, -1, 329, -1, -1, 332, 333, 334, 335, 336, - -1, -1, 339, 340, 341, 342, -1, -1, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, 355, -1, - -1, 358, 359, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, -1, 372, 373, 374, -1, -1, - -1, -1, -1, 380, 3, 4, 5, 6, 7, 8, - 9, 10, -1, 12, 13, 14, -1, 394, -1, -1, - -1, -1, -1, 22, 23, -1, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 40, -1, -1, 43, 44, 45, 46, -1, 48, - 49, 50, 51, -1, -1, -1, 55, 56, 57, 58, - 59, 60, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, 71, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, 82, 83, 84, 85, 86, -1, 88, - -1, 90, 91, 92, 93, 94, -1, 96, 97, 98, - -1, -1, 101, 102, 103, 104, 105, -1, 107, 108, - 109, -1, 111, 112, -1, 114, 115, 116, -1, 118, - 119, -1, -1, 122, 123, 124, 125, -1, 127, -1, - 129, 130, -1, 132, 133, 134, -1, 136, -1, -1, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - -1, 150, 151, 152, 153, 154, 155, -1, 157, -1, - 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, -1, - -1, 180, 181, 182, -1, 184, 185, 186, -1, -1, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, -1, 206, 207, 208, - 209, 210, 211, 212, -1, 214, -1, 216, 217, 218, - 219, -1, -1, 222, 223, 224, 225, -1, -1, 228, - -1, -1, -1, 232, 233, -1, -1, -1, 237, 238, - -1, 240, 241, 242, 243, 244, -1, 246, -1, -1, - 249, 250, 251, -1, 253, 254, 255, 256, 257, 258, - 259, 260, 261, -1, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, -1, 274, 275, 276, 277, 278, - -1, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, -1, 293, 294, 295, 296, 297, 298, - 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, -1, 312, -1, 314, 315, -1, 317, 318, - 319, 320, 321, -1, 323, 324, -1, -1, 327, -1, - 329, -1, -1, 332, 333, 334, 335, 336, -1, -1, - 339, 340, 341, 342, -1, -1, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, 355, -1, -1, 358, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, -1, 372, 373, 374, -1, -1, -1, -1, - -1, 380, 3, 4, 5, 6, 7, 8, 9, 10, - -1, 12, 13, 14, -1, 394, -1, -1, -1, -1, - -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, - 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, - -1, -1, 43, 44, 45, 46, -1, 48, 49, 50, - 51, 52, -1, -1, 55, 56, 57, 58, 59, 60, - -1, 62, 63, 64, 65, 66, -1, 68, 69, 70, - -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, 93, 94, -1, 96, 97, 98, -1, -1, - 101, 102, 103, 104, 105, -1, 107, 108, 109, -1, - 111, 112, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, 127, -1, 129, -1, - -1, -1, 133, 134, -1, 136, 137, -1, 139, -1, - 141, 142, 143, 144, -1, 146, 147, 148, -1, 150, - 151, 152, 153, 154, 155, -1, -1, 158, 159, 160, - 161, 162, 163, 164, -1, 166, -1, 168, -1, -1, - 171, -1, 173, 174, 175, 176, 177, -1, 179, -1, - 181, -1, -1, 184, 185, 186, -1, -1, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, -1, 204, -1, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, -1, 228, -1, 230, - -1, 232, 233, -1, -1, 236, -1, -1, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, -1, 274, 275, -1, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, -1, 293, 294, 295, 296, -1, 298, 299, -1, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, - 321, -1, 323, 324, -1, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, -1, -1, 339, 340, - 341, 342, -1, -1, 345, 346, 347, 348, 349, 350, - 351, -1, 353, 354, 355, -1, -1, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, -1, -1, -1, -1, -1, 380, - 381, 382, -1, -1, -1, 386, -1, -1, -1, -1, - -1, -1, 393, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, - -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, 226, -1, 228, -1, - 230, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 381, 382, -1, -1, -1, 386, -1, -1, -1, - -1, -1, -1, 393, 3, 4, 5, 6, 7, 8, - 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, - 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, - 39, 40, -1, -1, 43, 44, 45, 46, -1, 48, - 49, 50, 51, 52, -1, -1, 55, 56, 57, 58, - 59, 60, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, 82, 83, 84, 85, 86, -1, 88, - -1, 90, 91, 92, 93, 94, -1, 96, 97, 98, - -1, -1, 101, 102, 103, 104, 105, -1, 107, 108, - 109, -1, 111, 112, -1, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, 127, -1, - 129, -1, -1, -1, 133, 134, -1, 136, 137, -1, - 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, - -1, 150, 151, 152, 153, 154, 155, -1, -1, 158, - 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, - -1, -1, 171, -1, 173, 174, 175, 176, 177, -1, - 179, -1, 181, -1, -1, 184, 185, 186, -1, -1, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, -1, 204, -1, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, 226, -1, 228, - -1, 230, -1, 232, 233, -1, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, 251, -1, 253, 254, 255, 256, 257, 258, - 259, 260, 261, -1, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, -1, 274, 275, -1, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, -1, 293, 294, 295, 296, -1, 298, - 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, - 319, 320, 321, -1, 323, 324, -1, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, -1, -1, - 339, 340, 341, 342, -1, -1, 345, 346, 347, 348, - 349, 350, 351, -1, 353, 354, 355, -1, -1, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, -1, -1, -1, -1, - -1, 380, 381, 382, -1, -1, -1, 386, -1, -1, - -1, -1, -1, -1, 393, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, 17, 345, 346, 347, - 348, 349, 350, 351, 25, 353, 354, 355, -1, 30, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 17, -1, -1, - -1, -1, 380, -1, -1, 25, -1, -1, 386, -1, - 30, -1, -1, -1, -1, 393, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 145, -1, -1, -1, 149, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 169, 170, - -1, -1, -1, -1, -1, 145, -1, -1, -1, 149, - -1, 182, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 169, - 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 182, -1, 215, -1, -1, 218, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 232, -1, 234, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 215, -1, -1, 218, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 232, -1, 234, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 385, -1, -1, 388, 389, 390, - -1, 392, 393, 394, 395, 396, 397, -1, -1, -1, - -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 385, -1, -1, 388, 389, - 390, -1, 392, 393, 394, 395, 396, 397, -1, -1, - -1, -1, -1, 403, 3, 4, 5, 6, 7, 8, - 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, - 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, - 39, 40, -1, -1, 43, 44, 45, 46, -1, 48, - 49, 50, 51, 52, -1, -1, 55, 56, 57, 58, - 59, 60, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, 82, 83, 84, 85, 86, -1, 88, - -1, 90, 91, 92, 93, 94, -1, 96, 97, 98, - -1, -1, 101, 102, 103, 104, 105, -1, 107, 108, - 109, -1, 111, 112, -1, 114, 115, 116, 117, 118, - 119, 120, -1, 122, 123, 124, 125, -1, 127, -1, - 129, -1, -1, -1, 133, 134, -1, 136, 137, -1, - 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, - -1, 150, 151, 152, 153, 154, 155, -1, -1, 158, - 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, - -1, -1, 171, -1, 173, 174, 175, 176, 177, -1, - 179, -1, 181, -1, -1, 184, 185, 186, -1, -1, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, -1, 204, -1, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, -1, -1, 228, - -1, -1, -1, 232, 233, -1, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, 251, -1, 253, 254, 255, 256, 257, 258, - 259, 260, 261, -1, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, -1, 274, 275, -1, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, -1, 293, 294, 295, 296, -1, 298, - 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, - 319, 320, 321, -1, 323, 324, -1, -1, 327, 328, - 329, 330, -1, 332, 333, 334, 335, 336, -1, -1, - 339, 340, 341, 342, -1, -1, 345, 346, 347, 348, - 349, 350, 351, -1, 353, 354, 355, -1, -1, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, -1, -1, -1, -1, - -1, 380, -1, -1, -1, -1, -1, -1, 387, 3, + 47, -1, 49, 50, 51, 52, 53, -1, -1, 56, + 57, 58, 59, 60, 61, -1, 63, 64, 65, 66, + 67, 68, -1, 70, 71, 72, -1, 74, 75, -1, + -1, -1, -1, -1, -1, -1, 83, 84, 85, 86, + 87, 88, 89, 90, 91, -1, 93, -1, 95, 96, + 97, 98, 99, -1, 101, 102, 103, -1, -1, 106, + 107, 108, 109, 110, -1, 112, 113, 114, -1, 116, + 117, -1, 119, 120, 121, 122, 123, 124, 125, -1, + 127, -1, 129, 130, 131, -1, 133, -1, 135, -1, + -1, -1, 139, 140, -1, 142, 143, -1, 145, -1, + 147, 148, 149, 150, 151, -1, 153, 154, 155, -1, + 157, 158, 159, 160, 161, 162, -1, -1, 165, 166, + 167, 168, 169, 170, 171, -1, 173, -1, 175, -1, + -1, 178, -1, 180, 181, 182, 183, 184, 185, 186, + -1, 188, -1, 190, -1, -1, 193, 194, 195, -1, + -1, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, + 217, 218, 219, 220, 221, 222, 223, -1, 225, 226, + -1, 228, -1, 230, 231, 232, 233, 234, -1, -1, + 237, -1, -1, -1, 241, 242, 243, -1, -1, 246, + -1, -1, -1, 250, 251, 252, 253, 254, 255, 256, + -1, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, 289, 290, -1, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, -1, 330, 331, -1, 333, 334, 335, 336, + 337, -1, 339, 340, -1, -1, 343, 344, 345, 346, + -1, 348, 349, 350, 351, 352, 353, -1, -1, 356, + 357, 358, 359, -1, -1, 362, 363, 364, 365, 366, + 367, -1, 369, -1, 371, 372, 373, -1, -1, 376, + -1, -1, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, -1, -1, + -1, 398, -1, -1, -1, -1, -1, -1, 405, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 399, 400, 401, 402, -1, + 404, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, + -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, -1, 400, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 381, 382, 383, - 384, -1, 386, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, - -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, -1, 382, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, - -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, -1, 382, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, - -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, -1, 382, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 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, 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, 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, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, 130, -1, - 132, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, 179, 180, 181, - 182, -1, 184, 185, 186, -1, -1, 189, 190, 191, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, -1, 400, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, -1, 400, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 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, 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, + 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, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 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, 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, -1, 216, 217, 218, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, 229, -1, -1, - 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, 297, 298, 299, -1, 301, + 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, 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, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, -1, -1, 358, 359, 360, 361, + 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, -1, -1, -1, -1, -1, 380, 3, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + 136, -1, 138, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, 164, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + -1, -1, 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, -1, 225, + 226, 227, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, 238, -1, -1, 241, 242, 243, -1, -1, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 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, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, 313, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, 370, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, 136, -1, 138, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, 164, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, -1, -1, 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, -1, 225, 226, 227, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, 238, -1, + -1, 241, 242, 243, -1, -1, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 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, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, 313, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + 370, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, 130, -1, 132, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, 157, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, -1, 179, 180, 181, 182, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, + 74, 75, -1, -1, -1, 79, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, 136, -1, 138, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, 218, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, 229, -1, -1, 232, 233, - -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, 297, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, - 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, - -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, 130, -1, 132, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, 157, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, -1, 179, 180, 181, 182, -1, 184, 185, - 186, -1, -1, 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, -1, - 216, 217, 218, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, 229, -1, -1, 232, 233, -1, -1, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, 297, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, 227, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, 238, -1, -1, 241, 242, 243, + -1, -1, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 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, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, 313, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, 370, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - 128, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, 182, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, + 48, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, 134, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, 191, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, - -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, 67, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, 135, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, 355, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, 141, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 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, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 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, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, + -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, 134, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, 238, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, 15, 16, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, 229, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, 238, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + 238, -1, 240, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, + -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, 238, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, 229, -1, 231, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 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, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, + -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, 238, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, 238, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, 229, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, 360, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, + -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, 360, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, 360, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, 229, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, + -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, - -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, + 44, 45, 46, 47, -1, 49, 50, 51, 52, -1, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, + 74, 75, -1, -1, -1, 79, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, -1, 123, + 124, -1, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, 136, -1, 138, 139, 140, -1, 142, -1, + -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, -1, -1, 189, 190, 191, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, 229, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, 316, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, + -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, + -1, 225, 226, 227, 228, -1, -1, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, 247, 248, 249, -1, 251, 252, 253, + 254, 255, 256, -1, 258, -1, 260, -1, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, + -1, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, 313, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + -1, 345, -1, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + -1, -1, -1, -1, -1, -1, -1, -1, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, 20, -1, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 12, 13, 14, -1, -1, -1, -1, -1, 20, -1, + 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, + -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, 229, -1, -1, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, 343, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, 144, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, 343, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, - -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, - 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, 25, 26, 27, 28, 29, -1, 31, + 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, + -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, - 14, -1, -1, -1, -1, -1, 20, -1, 22, 23, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, + -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, - -1, -1, -1, -1, 20, -1, 22, 23, -1, 25, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - 138, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, - -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, - 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, - -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, - -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, 344, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, - -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, - 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, - 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, - -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, - 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, - -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, - 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 14, -1, -1, -1, -1, -1, 20, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, - 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, - -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, - -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, -1, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, - 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, - -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, - 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, - 14, -1, -1, -1, -1, -1, 20, -1, 22, 23, - -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, - 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, -1, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, 117, 118, 119, 120, -1, 122, 123, 124, 125, - -1, 127, -1, 129, -1, -1, -1, 133, 134, -1, - 136, 137, -1, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, -1, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, -1, -1, 171, -1, 173, 174, 175, - 176, 177, -1, 179, -1, 181, -1, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - -1, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, 328, 329, 330, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, 349, 350, 351, -1, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, - 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, 117, - 118, 119, 120, -1, 122, 123, 124, 125, -1, 127, - -1, 129, -1, -1, -1, 133, 134, -1, 136, 137, - -1, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, -1, - 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, -1, -1, 171, -1, 173, 174, 175, 176, 177, - -1, 179, -1, 181, -1, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, -1, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - 328, 329, 330, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, 349, 350, 351, -1, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, 117, 118, 119, - 120, -1, 122, 123, 124, 125, -1, 127, -1, 129, - -1, -1, -1, 133, 134, -1, 136, 137, -1, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, -1, 158, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, -1, - -1, 171, -1, 173, 174, 175, 176, 177, -1, 179, - -1, 181, -1, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, -1, 277, 278, 279, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, 53, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, 122, 123, 124, 125, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, -1, -1, -1, 139, + 140, -1, 142, 143, -1, 145, -1, 147, 148, 149, + 150, 151, -1, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, -1, 165, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, + 190, -1, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, + 220, 221, 222, 223, -1, 225, 226, -1, 228, -1, + 230, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, 246, -1, -1, -1, + 250, 251, 252, 253, 254, 255, 256, -1, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, -1, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, 328, 329, - 330, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, 349, - 350, 351, -1, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, - -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, 117, 118, 119, 120, -1, - 122, 123, 124, 125, -1, 127, -1, 129, -1, -1, - -1, 133, 134, -1, 136, 137, -1, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, -1, 158, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, -1, -1, 171, - -1, 173, 174, 175, 176, 177, -1, 179, -1, 181, - -1, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, 236, -1, -1, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, -1, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, 328, 329, 330, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, 349, 350, 351, - -1, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, 366, 367, -1, 369, + -1, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, 117, 118, 119, 120, -1, 122, 123, - 124, 125, -1, 127, -1, 129, -1, -1, -1, 133, - 134, -1, 136, 137, -1, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, -1, 158, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, -1, -1, 171, -1, 173, - 174, 175, 176, 177, -1, 179, -1, 181, -1, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, -1, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, -1, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, 328, 329, 330, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, 349, 350, 351, -1, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, + 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, 122, 123, + 124, 125, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, -1, -1, -1, 139, 140, -1, 142, 143, + -1, 145, -1, 147, 148, 149, 150, 151, -1, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, -1, 188, -1, 190, -1, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, + -1, 215, 216, 217, 218, 219, 220, 221, 222, 223, + -1, 225, 226, -1, 228, -1, 230, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, 246, -1, -1, -1, 250, 251, 252, 253, + 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, -1, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + 344, 345, 346, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, 366, 367, -1, 369, -1, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, 25, -1, 27, + 28, 29, -1, 31, -1, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, -1, 74, 75, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, 122, 123, 124, 125, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, -1, -1, + -1, 139, 140, -1, 142, 143, -1, 145, -1, 147, + 148, 149, 150, 151, -1, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, -1, -1, + 178, -1, 180, 181, 182, 183, 184, 185, 186, -1, + 188, -1, 190, -1, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, 226, -1, + 228, -1, 230, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, 246, -1, + -1, -1, 250, 251, 252, 253, 254, 255, 256, -1, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, -1, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, -1, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, 344, 345, 346, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, 366, 367, + -1, 369, -1, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, 25, -1, 27, 28, 29, -1, 31, + -1, 33, 34, -1, 36, 37, 38, 39, 40, -1, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + 122, 123, 124, 125, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, -1, -1, -1, 139, 140, -1, + 142, 143, -1, 145, -1, 147, 148, 149, 150, 151, + -1, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, -1, 165, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, -1, -1, 178, -1, 180, 181, + 182, 183, 184, 185, 186, -1, 188, -1, 190, -1, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, -1, 228, -1, 230, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, 246, -1, -1, -1, 250, 251, + 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, 344, 345, 346, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, 366, 367, -1, 369, -1, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, -1, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, -1, 118, 119, -1, -1, 122, 123, 124, 125, - -1, 127, -1, 129, 130, -1, 132, 133, 134, -1, - 136, -1, -1, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - -1, 157, 158, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, -1, -1, 180, 181, 182, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - 216, 217, 218, 219, -1, -1, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - 236, 237, 238, -1, 240, 241, 242, 243, 244, -1, - 246, -1, -1, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - 276, 277, 278, -1, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, 297, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, -1, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, -1, 329, -1, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, -1, 350, 351, 352, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, - 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, -1, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, -1, - 118, 119, -1, -1, 122, 123, 124, 125, -1, 127, - -1, 129, 130, -1, 132, 133, 134, -1, 136, -1, - -1, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, 157, - -1, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - -1, -1, 180, 181, 182, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, 217, - 218, 219, -1, -1, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, -1, 237, - 238, -1, 240, 241, 242, 243, 244, -1, 246, -1, - -1, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, 276, 277, - 278, -1, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, 294, 295, 296, 297, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, -1, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, -1, -1, 327, - -1, 329, -1, -1, 332, 333, 334, 335, 336, -1, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, -1, 350, 351, 352, 353, 354, 355, -1, -1, - 358, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, -1, 372, 373, 374, -1, -1, -1, - -1, -1, 380, 3, 4, 5, 6, 7, 8, 9, + 46, 47, -1, 49, 50, 51, 52, -1, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, -1, 123, 124, -1, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + 136, -1, 138, 139, 140, -1, 142, -1, -1, 145, + -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, 164, -1, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, -1, -1, 189, 190, 191, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, -1, 215, + 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, + 226, 227, 228, 229, -1, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + -1, 247, 248, 249, -1, 251, 252, 253, 254, 255, + 256, -1, 258, -1, 260, -1, 262, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, 291, 292, 293, -1, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, 313, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, 328, -1, 330, 331, 332, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, -1, 345, + -1, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + -1, 367, -1, 369, 370, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, -1, -1, + -1, -1, -1, -1, -1, -1, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, - 50, 51, -1, -1, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, 82, 83, 84, 85, 86, -1, 88, -1, - 90, 91, 92, 93, 94, -1, 96, 97, 98, -1, - -1, 101, 102, 103, 104, 105, -1, 107, 108, 109, - -1, 111, 112, -1, 114, 115, 116, -1, 118, 119, - -1, -1, 122, 123, 124, 125, -1, 127, -1, 129, - 130, -1, 132, 133, 134, -1, 136, -1, -1, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, -1, - 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, - 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, -1, -1, - 180, 181, 182, -1, 184, 185, 186, -1, -1, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, -1, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, 217, 218, 219, - -1, -1, 222, 223, 224, 225, -1, -1, 228, -1, - -1, -1, 232, 233, -1, -1, -1, 237, 238, -1, - 240, 241, 242, 243, 244, -1, 246, -1, -1, 249, - 250, 251, -1, 253, 254, 255, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, -1, 274, 275, 276, 277, 278, -1, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, -1, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, -1, 123, 124, -1, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, 136, -1, 138, 139, + 140, -1, 142, -1, -1, 145, -1, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, 164, -1, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, -1, -1, 189, + 190, 191, -1, 193, 194, 195, -1, -1, 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, 223, -1, 225, 226, 227, 228, -1, + -1, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, -1, 247, 248, 249, + -1, 251, 252, 253, 254, 255, 256, -1, 258, -1, + 260, -1, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, -1, 293, 294, 295, 296, 297, 298, 299, - -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, -1, 312, -1, 314, 315, -1, 317, 318, 319, - 320, 321, -1, 323, 324, -1, -1, 327, -1, 329, - -1, -1, 332, 333, 334, 335, 336, -1, -1, 339, - 340, 341, 342, -1, -1, 345, 346, 347, 348, -1, - 350, 351, 352, 353, 354, 355, -1, -1, 358, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, -1, 372, 373, 374, -1, -1, -1, -1, -1, - 380, 3, 4, 5, 6, 7, 8, 9, 10, -1, - 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, - -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, - -1, -1, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, -1, 88, -1, 90, 91, - 92, 93, 94, -1, 96, 97, 98, -1, -1, 101, - 102, 103, 104, 105, -1, 107, 108, 109, -1, 111, - 112, -1, 114, 115, 116, -1, 118, 119, -1, -1, - 122, 123, 124, 125, -1, 127, -1, 129, 130, -1, - 132, 133, 134, -1, 136, -1, -1, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, -1, 150, 151, - 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, - 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, -1, 180, 181, - 182, -1, 184, 185, 186, -1, -1, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, 216, 217, 218, 219, 220, -1, - 222, 223, 224, 225, -1, -1, 228, -1, -1, -1, - 232, 233, -1, -1, -1, 237, 238, -1, 240, 241, - 242, 243, 244, -1, 246, -1, -1, 249, 250, 251, - -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, -1, 274, 275, 276, 277, 278, -1, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - -1, 293, 294, 295, 296, 297, 298, 299, -1, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, - 312, -1, 314, 315, -1, 317, 318, 319, 320, 321, - -1, 323, 324, -1, -1, 327, -1, 329, -1, -1, - 332, 333, 334, 335, 336, -1, -1, 339, 340, 341, - 342, -1, -1, 345, 346, 347, 348, -1, 350, 351, - 352, 353, 354, 355, -1, -1, 358, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, - 372, 373, 374, -1, -1, -1, -1, -1, 380, 3, + 290, 291, 292, 293, -1, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + 310, 311, 312, 313, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, -1, 345, -1, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, -1, 367, -1, 369, + 370, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, + -1, -1, 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, 43, - 44, 45, 46, -1, 48, 49, 50, 51, -1, -1, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, -1, 88, -1, 90, 91, 92, 93, - 94, -1, 96, 97, 98, -1, -1, 101, 102, 103, - 104, 105, -1, 107, 108, 109, -1, 111, 112, -1, - 114, 115, 116, -1, 118, 119, -1, -1, 122, 123, - 124, 125, -1, 127, -1, 129, 130, -1, 132, 133, - 134, -1, 136, -1, -1, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, -1, 150, 151, 152, 153, - 154, 155, -1, 157, -1, 159, 160, 161, 162, 163, - 164, -1, 166, -1, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, -1, -1, 180, 181, 182, -1, - 184, 185, 186, -1, -1, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, 216, 217, 218, 219, -1, -1, 222, 223, - 224, 225, -1, -1, 228, -1, -1, -1, 232, 233, - -1, -1, -1, 237, 238, -1, 240, 241, 242, 243, - 244, -1, 246, -1, -1, 249, 250, 251, -1, 253, - 254, 255, 256, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 274, 275, 276, 277, 278, -1, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, -1, 293, - 294, 295, 296, 297, 298, 299, -1, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, -1, 312, -1, - 314, 315, -1, 317, 318, 319, 320, 321, -1, 323, - 324, -1, -1, 327, -1, 329, -1, -1, 332, 333, - 334, 335, 336, -1, -1, 339, 340, 341, 342, -1, - -1, 345, 346, 347, 348, -1, 350, 351, 352, 353, - 354, 355, -1, -1, 358, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, -1, 372, 373, - 374, -1, -1, -1, -1, -1, 380, 3, 4, 5, - 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, - -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, - 46, -1, 48, 49, 50, 51, -1, -1, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 86, -1, 88, -1, 90, 91, 92, 93, 94, -1, - 96, 97, 98, -1, -1, 101, 102, 103, 104, 105, - -1, 107, 108, 109, -1, 111, 112, -1, 114, 115, - 116, -1, 118, 119, -1, -1, 122, 123, 124, 125, - -1, 127, -1, 129, 130, -1, 132, 133, 134, -1, - 136, -1, -1, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - -1, 157, -1, 159, 160, 161, 162, 163, 164, -1, - 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, -1, -1, 180, 181, 182, -1, 184, 185, - 186, -1, -1, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - 216, 217, 218, 219, -1, -1, 222, 223, 224, 225, - -1, -1, 228, -1, -1, -1, 232, 233, -1, -1, - -1, 237, 238, -1, 240, 241, 242, 243, 244, -1, - 246, -1, -1, 249, 250, 251, -1, 253, 254, 255, - 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, - 276, 277, 278, -1, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, 294, 295, - 296, 297, 298, 299, -1, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, -1, 312, -1, 314, 315, - -1, 317, 318, 319, 320, 321, -1, 323, 324, -1, - -1, 327, -1, 329, -1, -1, 332, 333, 334, 335, - 336, -1, -1, 339, 340, 341, 342, -1, -1, 345, - 346, 347, 348, -1, 350, 351, 352, 353, 354, 355, - -1, -1, 358, 359, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, 372, 373, 374, -1, - -1, -1, -1, -1, 380, 3, 4, 5, 6, 7, + 44, 45, 46, 47, -1, 49, 50, 51, 52, -1, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, + 74, 75, -1, -1, -1, 79, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, -1, 123, + 124, -1, -1, 127, -1, 129, 130, 131, -1, 133, + -1, 135, 136, -1, 138, 139, 140, -1, 142, -1, + -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + 164, -1, 166, 167, 168, 169, 170, 171, -1, 173, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, -1, -1, 189, 190, 191, -1, 193, + 194, 195, -1, -1, 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, 223, + -1, 225, 226, 227, 228, -1, -1, 231, 232, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, -1, 247, 248, 249, -1, 251, 252, 253, + 254, 255, 256, -1, 258, -1, 260, -1, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, + -1, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, 310, 311, 312, 313, + 314, 315, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, 339, 340, -1, -1, 343, + -1, 345, -1, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, -1, 367, -1, 369, 370, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + -1, -1, -1, -1, -1, -1, -1, -1, 392, 393, + 394, -1, -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, - 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, - 48, 49, 50, 51, -1, -1, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, -1, - 88, -1, 90, 91, 92, 93, 94, -1, 96, 97, - 98, -1, -1, 101, 102, 103, 104, 105, -1, 107, - 108, 109, -1, 111, 112, -1, 114, 115, 116, -1, - 118, 119, -1, -1, 122, 123, 124, 125, -1, 127, - -1, 129, 130, -1, 132, 133, 134, -1, 136, -1, - -1, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, -1, 157, - -1, 159, 160, 161, 162, 163, 164, -1, 166, -1, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - -1, -1, 180, 181, 182, -1, 184, 185, 186, -1, - -1, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, 216, 217, - 218, 219, -1, -1, 222, 223, 224, 225, -1, -1, - 228, -1, -1, -1, 232, 233, -1, -1, -1, 237, - 238, -1, 240, 241, 242, 243, 244, -1, 246, -1, - -1, 249, 250, 251, -1, 253, 254, 255, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, -1, 274, 275, 276, 277, - 278, -1, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, -1, 293, -1, 295, 296, 297, - 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, -1, 312, -1, 314, 315, -1, 317, - 318, 319, 320, 321, -1, 323, 324, 10, -1, 327, - -1, 329, -1, -1, 332, 333, 334, 335, 336, 22, - -1, 339, 340, 341, 342, -1, -1, 345, 346, 347, - 348, -1, 350, 351, 352, 353, 354, 355, -1, 42, - 358, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, -1, 372, 373, 374, -1, -1, -1, - -1, 64, 380, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 133, -1, -1, -1, -1, 138, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 232, - -1, -1, -1, -1, -1, -1, -1, 240, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 255, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 277, -1, -1, -1, 281, -1, - 283, -1, -1, -1, -1, -1, 289, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 316, 317, -1, -1, -1, 321, -1, - -1, -1, -1, -1, -1, -1, 329, -1, -1, -1, - -1, 334, -1, -1, -1, -1, -1, -1, -1, -1, - 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 354 + 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, + -1, 49, 50, 51, 52, -1, -1, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, 73, 74, 75, -1, -1, + -1, 79, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, 93, -1, 95, 96, 97, + 98, 99, -1, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, -1, 112, 113, 114, -1, 116, 117, + -1, 119, 120, 121, -1, 123, 124, -1, -1, 127, + -1, 129, 130, 131, -1, 133, -1, 135, 136, -1, + 138, 139, 140, -1, 142, -1, -1, 145, -1, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + 158, 159, 160, 161, 162, -1, 164, -1, 166, 167, + 168, 169, 170, 171, -1, 173, -1, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, -1, + -1, 189, 190, 191, -1, 193, 194, 195, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, -1, 215, 216, 217, + 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, + 228, -1, -1, 231, 232, 233, 234, -1, -1, 237, + -1, -1, -1, 241, 242, 243, -1, -1, -1, 247, + 248, 249, -1, 251, 252, 253, 254, 255, 256, -1, + 258, -1, 260, -1, 262, 263, 264, -1, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, 290, 291, 292, 293, -1, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + -1, 309, 310, 311, 312, 313, 314, 315, -1, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, -1, 330, 331, -1, 333, 334, 335, 336, 337, + -1, 339, 340, -1, -1, 343, -1, 345, -1, -1, + 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, + 358, 359, -1, -1, 362, 363, 364, 365, -1, 367, + -1, 369, 370, 371, 372, 373, -1, -1, 376, -1, + -1, 379, 380, 381, 382, 383, -1, -1, -1, -1, + -1, -1, -1, -1, 392, 393, 394, -1, -1, -1, + 398, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, -1, 36, 37, 38, 39, 40, -1, + -1, 43, 44, 45, 46, 47, -1, 49, 50, 51, + 52, -1, -1, -1, 56, 57, 58, 59, 60, 61, + -1, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, 73, 74, 75, -1, -1, -1, 79, -1, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, 93, -1, 95, 96, 97, 98, 99, -1, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, -1, + 112, 113, 114, -1, 116, 117, -1, 119, 120, 121, + -1, 123, 124, -1, -1, 127, -1, 129, 130, 131, + -1, 133, -1, 135, 136, -1, 138, 139, 140, -1, + 142, -1, -1, 145, -1, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, 158, 159, 160, 161, + 162, -1, 164, -1, 166, 167, 168, 169, 170, 171, + -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, -1, -1, 189, 190, 191, + -1, 193, 194, 195, -1, -1, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, -1, 215, 216, 217, 218, 219, 220, 221, + -1, 223, -1, 225, 226, 227, 228, -1, -1, 231, + 232, 233, 234, -1, -1, 237, -1, -1, -1, 241, + 242, 243, -1, -1, -1, 247, 248, 249, -1, 251, + 252, 253, 254, 255, 256, -1, 258, -1, 260, -1, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, + 292, 293, -1, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, -1, 309, 310, 311, + 312, 313, 314, 315, -1, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, -1, 330, 331, + -1, 333, 334, 335, 336, 337, -1, 339, 340, -1, + -1, 343, -1, 345, -1, -1, 348, 349, 350, 351, + 352, 353, -1, -1, 356, 357, 358, 359, -1, -1, + 362, 363, 364, 365, -1, 367, -1, 369, 370, 371, + 372, 373, -1, -1, 376, -1, -1, 379, 380, 381, + 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, + 392, 393, 394, -1, -1, -1, 398, 3, 4, 5, + 6, 7, 8, 9, 10, -1, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, + -1, 27, 28, 29, -1, 31, -1, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, 43, 44, 45, + 46, 47, -1, 49, 50, 51, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, + 66, 67, 68, -1, 70, 71, 72, -1, 74, 75, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, -1, 93, -1, 95, + 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, -1, 112, 113, 114, -1, + 116, 117, -1, 119, 120, 121, 122, 123, 124, 125, + -1, 127, -1, 129, 130, 131, -1, 133, -1, 135, + -1, -1, -1, 139, 140, -1, 142, 143, -1, 145, + -1, 147, 148, 149, 150, 151, -1, 153, 154, 155, + -1, 157, 158, 159, 160, 161, 162, -1, -1, 165, + 166, 167, 168, 169, 170, 171, -1, 173, -1, 175, + -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 190, -1, -1, 193, 194, 195, + -1, -1, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + 226, -1, 228, -1, 230, 231, 232, 233, 234, -1, + -1, 237, -1, -1, -1, 241, 242, 243, -1, -1, + 246, -1, -1, -1, 250, 251, 252, 253, 254, -1, + 256, -1, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, -1, 292, 293, 294, -1, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, -1, 309, 310, 311, 312, -1, 314, 315, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, 330, 331, -1, 333, 334, 335, + 336, 337, -1, 339, 340, -1, -1, 343, 344, 345, + 346, -1, 348, 349, 350, 351, 352, 353, -1, -1, + 356, 357, 358, 359, -1, -1, 362, 363, 364, 365, + 366, 367, -1, 369, -1, 371, 372, 373, -1, -1, + 376, -1, -1, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, 398, 3, 4, 5, 6, 7, 8, 9, + 10, -1, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, + 40, -1, -1, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, -1, -1, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, -1, 93, -1, 95, 96, 97, 98, 99, + -1, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, -1, 112, 113, 114, -1, 116, 117, -1, 119, + 120, 121, -1, 123, 124, -1, -1, 127, -1, 129, + 130, 131, -1, 133, -1, 135, 136, -1, 138, 139, + 140, -1, 142, -1, -1, 145, -1, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, 158, 159, + 160, 161, 162, -1, 164, -1, 166, 167, 168, 169, + 170, 171, -1, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, -1, -1, 189, + 190, 191, -1, 193, 194, 195, -1, -1, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, -1, 215, 216, 217, 218, 219, + 220, 221, -1, 223, -1, 225, 226, 227, 228, -1, + -1, 231, 232, 233, 234, -1, -1, 237, -1, -1, + -1, 241, 242, 243, -1, -1, -1, 247, 248, 249, + -1, 251, 252, 253, 254, 255, 256, -1, 258, -1, + 260, -1, 262, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 290, 291, 292, 293, -1, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, -1, 309, + -1, 311, 312, 313, 314, 315, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, -1, + 330, 331, -1, 333, 334, 335, 336, 337, -1, 339, + 340, -1, -1, 343, -1, 345, -1, -1, 348, 349, + 350, 351, 352, 353, -1, -1, 356, 357, 358, 359, + -1, -1, 362, 363, 364, 365, -1, 367, -1, 369, + 370, 371, 372, 373, -1, -1, 376, -1, -1, 379, + 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, + -1, -1, 392, 393, 394, -1, -1, -1, 398, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, 25, 26, 27, 28, 29, 30, -1, 32, -1, + -1, -1, 36, 37, 38, 39, 40, -1, -1, 43, + 44, -1, -1, 47, -1, 49, 50, 51, 52, -1, + -1, -1, 56, 57, 58, 59, 60, 61, -1, 63, + 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, + 74, 75, -1, -1, -1, 79, -1, -1, -1, 83, + 84, 85, 86, 87, 88, -1, -1, 91, -1, 93, + -1, 95, 96, 97, 98, 99, -1, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, -1, 112, 113, + 114, -1, 116, 117, -1, 119, 120, 121, -1, 123, + 124, -1, -1, 127, -1, 129, -1, 131, -1, 133, + -1, 135, 136, -1, 138, 139, 140, -1, 142, -1, + -1, 145, -1, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, 158, 159, 160, 161, 162, -1, + 164, -1, 166, 167, 168, 169, -1, -1, -1, -1, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, -1, -1, 189, 190, 191, -1, 193, + 194, 195, -1, -1, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, -1, 212, -1, + -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, + -1, 225, 226, 227, 228, -1, -1, 231, -1, 233, + 234, -1, -1, 237, -1, -1, -1, 241, 242, 243, + -1, -1, -1, 247, 248, 249, -1, 251, 252, 253, + 254, 255, 256, -1, 258, -1, 260, -1, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, -1, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, + -1, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, -1, 309, -1, 311, 312, 313, + 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, -1, 330, 331, -1, 333, + 334, 335, 336, 337, -1, -1, -1, -1, -1, 343, + -1, 345, -1, -1, 348, 349, 350, 351, 352, 353, + -1, -1, 356, 357, 358, 359, -1, -1, 362, 363, + 364, 365, -1, -1, -1, 369, 370, 371, 372, 373, + -1, -1, 376, -1, -1, 379, 380, 381, 382, 383, + -1, -1, -1, -1, -1, -1, -1, -1, 392, 393, + 394, -1, -1, -1, 398 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned short int yystos[] = { - 0, 3, 13, 15, 16, 29, 48, 50, 51, 55, - 56, 65, 67, 83, 86, 92, 98, 104, 110, 116, - 118, 123, 135, 161, 184, 185, 190, 199, 217, 250, - 260, 263, 265, 270, 275, 278, 282, 288, 293, 296, - 303, 332, 340, 342, 345, 349, 401, 409, 410, 411, - 412, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 426, 427, 431, 441, 443, 444, 447, 448, 449, 457, - 458, 467, 495, 500, 501, 508, 513, 515, 517, 518, - 531, 532, 533, 534, 544, 550, 551, 554, 555, 556, - 557, 558, 563, 564, 567, 570, 571, 581, 582, 585, - 593, 607, 610, 611, 612, 615, 617, 619, 622, 624, - 625, 626, 634, 635, 636, 637, 638, 643, 645, 646, - 650, 651, 654, 655, 656, 658, 659, 660, 661, 663, - 664, 665, 670, 673, 676, 678, 679, 684, 686, 690, - 697, 700, 701, 702, 703, 704, 725, 327, 361, 639, - 10, 64, 81, 102, 133, 138, 152, 232, 255, 277, - 283, 289, 316, 317, 321, 329, 334, 343, 354, 514, - 639, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 22, 23, 25, 27, 28, 29, 31, - 33, 34, 36, 37, 38, 39, 40, 43, 44, 45, - 46, 48, 49, 50, 51, 52, 55, 56, 57, 58, - 59, 60, 62, 63, 64, 65, 66, 68, 69, 70, - 72, 73, 79, 80, 81, 82, 83, 84, 85, 86, - 88, 90, 91, 92, 93, 94, 96, 97, 98, 101, - 102, 103, 104, 105, 107, 108, 109, 111, 112, 114, - 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, - 127, 129, 133, 134, 136, 137, 139, 141, 142, 143, - 144, 146, 147, 148, 150, 151, 152, 153, 154, 155, - 158, 159, 160, 161, 162, 163, 164, 166, 168, 171, - 173, 174, 175, 176, 177, 179, 181, 184, 185, 186, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 204, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 216, 217, 219, 221, 222, 223, - 224, 225, 228, 232, 233, 236, 239, 240, 241, 242, - 243, 244, 246, 247, 248, 249, 250, 251, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 274, 275, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 289, 290, 291, 293, 294, 295, 296, 298, 299, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 314, 315, 317, 318, 319, 320, 321, 323, 324, - 327, 328, 329, 330, 332, 333, 334, 335, 336, 339, - 340, 341, 342, 345, 346, 347, 348, 349, 350, 351, - 353, 354, 355, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 380, 815, 827, 830, 831, 205, 229, 811, 813, 819, - 827, 834, 230, 251, 639, 32, 463, 701, 10, 22, - 42, 61, 81, 87, 102, 134, 138, 186, 232, 234, - 277, 283, 317, 318, 320, 321, 329, 333, 334, 338, - 343, 468, 509, 547, 586, 594, 11, 250, 815, 815, - 131, 11, 246, 318, 320, 10, 22, 42, 64, 81, - 102, 133, 138, 152, 232, 240, 277, 281, 283, 289, - 316, 317, 321, 329, 334, 343, 354, 514, 559, 639, - 815, 665, 672, 4, 11, 27, 124, 129, 177, 206, - 253, 264, 386, 393, 568, 815, 826, 11, 67, 262, - 288, 572, 573, 574, 827, 167, 827, 382, 820, 824, - 316, 707, 568, 815, 827, 327, 815, 240, 81, 152, - 315, 316, 620, 282, 827, 11, 291, 323, 327, 433, - 827, 8, 135, 572, 573, 251, 639, 827, 11, 99, - 709, 62, 186, 201, 277, 291, 323, 327, 363, 432, - 433, 11, 291, 323, 327, 433, 327, 707, 394, 827, - 231, 734, 735, 813, 827, 132, 667, 401, 808, 701, - 702, 0, 405, 352, 666, 113, 165, 235, 337, 710, - 711, 406, 26, 30, 32, 71, 130, 132, 145, 157, - 169, 170, 172, 180, 182, 203, 218, 237, 238, 276, - 297, 352, 380, 811, 821, 828, 830, 832, 561, 827, - 816, 827, 561, 580, 821, 825, 827, 734, 49, 122, - 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, - 614, 777, 778, 827, 825, 815, 734, 813, 734, 815, - 285, 815, 561, 825, 734, 175, 171, 258, 640, 641, - 642, 399, 404, 802, 803, 344, 662, 230, 10, 42, - 54, 61, 64, 81, 102, 133, 152, 176, 232, 277, - 281, 283, 289, 316, 317, 321, 329, 334, 354, 514, - 565, 824, 813, 325, 821, 815, 401, 329, 816, 561, - 318, 320, 825, 318, 320, 49, 122, 614, 268, 825, - 428, 827, 815, 285, 815, 561, 825, 289, 316, 354, - 514, 64, 152, 133, 281, 11, 815, 698, 735, 144, - 821, 815, 144, 618, 144, 816, 144, 821, 144, 814, - 815, 49, 122, 144, 614, 36, 144, 814, 144, 815, - 144, 815, 285, 144, 815, 144, 814, 175, 144, 560, - 561, 401, 677, 666, 826, 11, 826, 11, 826, 826, - 386, 131, 149, 569, 254, 230, 325, 406, 813, 812, - 813, 569, 824, 401, 674, 36, 815, 815, 813, 827, - 26, 374, 171, 404, 233, 233, 230, 131, 824, 325, - 230, 19, 31, 33, 34, 41, 42, 44, 45, 52, - 74, 75, 76, 77, 78, 84, 85, 103, 117, 120, - 121, 125, 137, 163, 164, 166, 179, 187, 188, 202, - 204, 215, 220, 221, 223, 232, 239, 247, 259, 279, - 292, 299, 311, 323, 324, 328, 330, 331, 338, 343, - 350, 365, 366, 367, 368, 369, 370, 371, 381, 383, - 384, 385, 386, 387, 392, 393, 394, 401, 701, 744, - 747, 750, 751, 752, 754, 755, 756, 757, 760, 761, - 764, 766, 767, 775, 779, 796, 801, 809, 810, 811, - 821, 822, 823, 824, 11, 445, 812, 291, 432, 87, - 439, 824, 382, 440, 827, 26, 46, 432, 374, 641, - 233, 131, 325, 388, 26, 374, 171, 642, 812, 401, - 813, 20, 827, 293, 394, 130, 668, 87, 764, 806, - 807, 402, 402, 411, 813, 11, 99, 708, 708, 36, - 708, 126, 183, 227, 714, 720, 722, 723, 808, 803, - 401, 539, 241, 266, 404, 562, 241, 266, 293, 359, - 413, 441, 442, 7, 104, 241, 293, 454, 38, 66, - 119, 147, 241, 266, 274, 280, 287, 293, 301, 309, - 355, 442, 603, 608, 401, 595, 7, 104, 266, 425, - 241, 266, 270, 293, 452, 453, 561, 561, 401, 404, - 266, 413, 442, 241, 266, 266, 293, 502, 7, 13, - 51, 97, 104, 107, 154, 207, 266, 293, 450, 451, - 453, 241, 266, 59, 96, 242, 319, 230, 241, 293, - 266, 413, 442, 266, 815, 181, 231, 362, 406, 640, - 764, 11, 15, 16, 17, 18, 19, 20, 21, 24, - 35, 41, 42, 47, 53, 54, 61, 67, 74, 75, - 76, 77, 78, 87, 89, 95, 99, 100, 106, 110, - 113, 121, 126, 128, 131, 135, 138, 140, 149, 156, - 165, 167, 178, 183, 187, 188, 205, 215, 220, 226, - 227, 229, 230, 231, 234, 235, 245, 252, 262, 273, - 288, 292, 300, 313, 316, 322, 325, 326, 331, 337, - 338, 343, 344, 356, 357, 380, 394, 818, 829, 830, - 831, 832, 833, 802, 819, 827, 813, 821, 401, 815, - 821, 224, 49, 122, 614, 815, 285, 815, 175, 561, - 401, 482, 306, 307, 460, 824, 401, 539, 540, 47, - 31, 33, 34, 44, 45, 84, 85, 125, 163, 164, - 166, 202, 204, 223, 259, 294, 299, 323, 324, 350, - 380, 741, 743, 745, 747, 749, 751, 752, 753, 755, - 756, 760, 761, 828, 830, 815, 413, 20, 657, 413, - 561, 561, 401, 535, 468, 413, 26, 429, 241, 516, - 59, 96, 242, 319, 9, 28, 519, 20, 535, 413, - 813, 496, 813, 813, 175, 561, 58, 819, 821, 815, - 32, 79, 160, 207, 284, 344, 685, 117, 539, 39, - 272, 455, 117, 401, 117, 117, 595, 117, 406, 144, - 561, 144, 561, 117, 401, 814, 117, 117, 230, 117, - 59, 96, 242, 319, 117, 230, 117, 144, 440, 117, - 406, 455, 764, 782, 67, 671, 676, 679, 684, 690, - 697, 700, 815, 81, 133, 175, 283, 289, 316, 317, - 575, 812, 814, 574, 87, 401, 680, 700, 149, 406, - 687, 815, 741, 784, 20, 814, 127, 621, 621, 621, - 181, 827, 126, 126, 575, 814, 282, 827, 401, 399, - 701, 786, 351, 758, 764, 800, 401, 758, 758, 401, - 401, 401, 401, 746, 746, 248, 701, 401, 401, 748, - 401, 401, 401, 401, 44, 45, 758, 764, 401, 746, - 401, 401, 401, 401, 401, 359, 360, 401, 762, 401, - 762, 401, 401, 701, 401, 401, 401, 401, 401, 401, - 401, 804, 764, 764, 349, 701, 764, 782, 824, 45, - 401, 759, 401, 824, 17, 20, 25, 30, 145, 149, - 169, 170, 182, 215, 218, 232, 234, 297, 385, 388, - 389, 390, 392, 393, 394, 395, 396, 397, 403, 777, - 779, 781, 238, 764, 167, 406, 705, 803, 401, 824, - 90, 146, 446, 46, 87, 440, 20, 87, 186, 380, - 381, 393, 438, 505, 506, 507, 761, 824, 826, 63, - 101, 773, 73, 87, 121, 226, 230, 331, 434, 435, - 437, 440, 505, 87, 434, 181, 455, 813, 827, 401, - 691, 692, 693, 694, 695, 827, 666, 402, 406, 401, - 669, 701, 703, 704, 703, 712, 713, 764, 703, 258, - 295, 342, 11, 716, 764, 717, 764, 720, 721, 714, - 715, 126, 723, 394, 784, 241, 266, 293, 325, 325, - 818, 404, 325, 325, 432, 652, 47, 61, 128, 252, - 338, 480, 481, 61, 87, 215, 325, 87, 215, 283, - 230, 505, 287, 325, 325, 220, 505, 91, 168, 283, - 272, 603, 609, 149, 158, 236, 294, 402, 596, 597, - 598, 599, 601, 741, 828, 325, 343, 325, 325, 535, - 317, 535, 406, 344, 344, 213, 613, 741, 614, 325, - 414, 325, 325, 325, 283, 37, 80, 151, 194, 196, - 207, 240, 271, 303, 503, 54, 480, 623, 623, 230, - 281, 329, 61, 623, 14, 269, 281, 329, 813, 154, - 325, 623, 283, 360, 406, 325, 325, 561, 561, 561, - 561, 734, 325, 283, 325, 414, 325, 241, 266, 258, - 267, 290, 436, 640, 400, 407, 539, 741, 230, 595, - 505, 561, 561, 401, 169, 230, 59, 96, 242, 319, - 230, 561, 169, 483, 484, 827, 359, 464, 413, 380, - 541, 542, 535, 401, 743, 20, 19, 742, 82, 143, - 195, 198, 286, 372, 401, 763, 562, 746, 9, 647, - 741, 414, 547, 344, 536, 537, 829, 354, 414, 825, - 67, 135, 430, 467, 500, 518, 570, 585, 643, 815, - 189, 561, 561, 561, 561, 92, 161, 342, 520, 521, - 111, 401, 414, 502, 20, 225, 401, 497, 482, 440, - 126, 819, 230, 595, 20, 359, 360, 699, 284, 401, - 701, 727, 728, 729, 734, 736, 767, 811, 821, 357, - 738, 821, 455, 741, 816, 821, 455, 814, 815, 117, - 344, 117, 344, 614, 613, 455, 814, 815, 813, 815, - 815, 813, 814, 117, 455, 560, 561, 402, 406, 468, - 814, 579, 580, 814, 814, 812, 812, 814, 325, 359, - 583, 349, 681, 682, 827, 273, 683, 5, 115, 279, - 295, 688, 813, 219, 689, 402, 406, 675, 679, 684, - 690, 700, 325, 573, 572, 573, 131, 136, 584, 827, - 782, 782, 785, 786, 401, 356, 797, 798, 764, 782, - 823, 823, 782, 82, 143, 195, 198, 286, 372, 380, - 382, 783, 787, 823, 782, 782, 823, 823, 758, 758, - 764, 614, 764, 788, 392, 393, 765, 766, 775, 779, - 790, 402, 782, 764, 782, 791, 323, 323, 823, 823, - 764, 35, 131, 178, 326, 764, 782, 794, 782, 200, - 764, 771, 772, 773, 200, 764, 773, 802, 402, 406, - 293, 823, 823, 763, 764, 829, 323, 24, 313, 805, - 764, 401, 701, 795, 99, 101, 121, 215, 220, 225, - 331, 339, 764, 30, 145, 149, 182, 297, 401, 764, - 325, 764, 764, 764, 764, 764, 764, 764, 764, 764, - 741, 764, 11, 18, 300, 776, 279, 401, 775, 134, - 186, 316, 318, 320, 706, 813, 810, 131, 726, 11, - 99, 394, 402, 782, 327, 381, 401, 824, 406, 402, - 695, 696, 406, 726, 388, 804, 664, 813, 806, 814, - 406, 21, 95, 344, 591, 231, 225, 724, 724, 227, - 406, 183, 402, 402, 325, 325, 283, 825, 815, 818, - 825, 816, 60, 653, 401, 815, 173, 173, 401, 815, - 220, 825, 764, 220, 815, 220, 91, 168, 825, 815, - 230, 815, 236, 828, 402, 406, 599, 601, 598, 601, - 828, 562, 825, 814, 825, 815, 815, 453, 817, 827, - 817, 406, 402, 406, 825, 8, 60, 68, 69, 70, - 109, 149, 154, 191, 208, 209, 210, 211, 212, 214, - 244, 277, 312, 314, 336, 343, 346, 415, 825, 815, - 815, 815, 505, 36, 504, 505, 505, 80, 194, 196, - 36, 413, 413, 472, 827, 827, 815, 815, 11, 343, - 815, 815, 827, 281, 329, 281, 329, 815, 11, 343, - 815, 813, 815, 815, 815, 51, 228, 293, 451, 825, - 815, 7, 13, 104, 241, 266, 241, 266, 535, 266, - 266, 266, 825, 815, 825, 815, 325, 325, 57, 335, - 258, 764, 169, 20, 561, 169, 169, 344, 344, 613, - 220, 566, 824, 561, 561, 561, 561, 561, 561, 169, - 566, 402, 406, 228, 131, 325, 459, 461, 388, 402, - 406, 764, 19, 742, 741, 399, 399, 325, 325, 325, - 325, 823, 746, 520, 60, 108, 189, 241, 317, 319, - 648, 473, 126, 817, 402, 406, 388, 813, 429, 234, - 468, 824, 535, 535, 535, 535, 230, 234, 401, 739, - 740, 827, 116, 700, 813, 182, 469, 470, 471, 472, - 477, 480, 498, 499, 827, 359, 360, 491, 20, 139, - 824, 230, 813, 20, 175, 274, 602, 603, 604, 627, - 142, 142, 126, 701, 728, 729, 20, 730, 827, 406, - 71, 132, 157, 172, 180, 203, 276, 731, 730, 20, - 730, 827, 803, 401, 73, 764, 683, 539, 20, 595, - 561, 817, 561, 817, 401, 402, 230, 455, 230, 455, - 440, 455, 764, 316, 406, 138, 576, 577, 825, 8, - 584, 402, 406, 804, 809, 115, 295, 115, 295, 279, - 342, 197, 741, 815, 131, 230, 576, 36, 455, 402, - 400, 400, 406, 782, 764, 106, 798, 799, 20, 402, - 402, 402, 402, 402, 131, 402, 402, 402, 402, 402, - 406, 402, 245, 789, 402, 765, 765, 149, 169, 232, - 388, 389, 390, 392, 393, 394, 395, 396, 397, 403, - 779, 765, 402, 402, 126, 131, 792, 793, 402, 374, - 374, 402, 402, 20, 794, 782, 794, 794, 131, 402, - 402, 829, 20, 402, 406, 764, 829, 406, 764, 804, - 764, 827, 402, 402, 374, 765, 765, 112, 782, 131, - 99, 101, 121, 220, 225, 331, 339, 401, 112, 313, - 805, 764, 795, 764, 325, 614, 764, 401, 701, 318, - 320, 318, 320, 813, 707, 707, 727, 357, 737, 782, - 782, 402, 402, 641, 823, 763, 435, 402, 406, 692, - 738, 806, 402, 713, 232, 777, 780, 375, 376, 592, - 814, 689, 689, 717, 717, 716, 825, 815, 815, 183, - 764, 481, 401, 401, 483, 455, 159, 220, 562, 597, - 601, 601, 396, 241, 266, 7, 104, 241, 266, 741, - 241, 213, 741, 814, 183, 244, 138, 277, 220, 824, - 814, 823, 244, 814, 341, 505, 561, 505, 505, 741, - 104, 293, 334, 454, 455, 455, 815, 815, 815, 815, - 325, 192, 192, 192, 325, 325, 325, 325, 325, 325, - 325, 825, 815, 400, 566, 741, 169, 566, 566, 817, - 817, 402, 169, 169, 169, 169, 169, 169, 566, 484, - 460, 32, 72, 93, 112, 127, 141, 220, 228, 257, - 462, 232, 393, 505, 538, 601, 780, 824, 833, 380, - 542, 402, 399, 402, 823, 400, 823, 143, 195, 286, - 195, 286, 286, 198, 402, 230, 183, 388, 649, 649, - 649, 649, 649, 47, 61, 87, 89, 156, 215, 220, - 252, 262, 338, 474, 475, 476, 334, 537, 538, 482, - 268, 316, 813, 521, 543, 824, 402, 406, 741, 815, - 401, 813, 402, 406, 402, 406, 228, 535, 228, 230, - 492, 700, 510, 815, 325, 813, 344, 587, 605, 824, - 440, 600, 601, 359, 604, 606, 230, 700, 402, 827, - 401, 728, 172, 237, 732, 728, 732, 172, 731, 732, - 172, 401, 827, 401, 782, 225, 455, 741, 455, 344, - 455, 344, 455, 613, 455, 813, 813, 455, 496, 813, - 580, 825, 359, 406, 578, 233, 700, 682, 115, 115, - 814, 575, 455, 825, 786, 402, 322, 764, 110, 741, - 764, 764, 764, 792, 765, 99, 101, 215, 225, 765, - 765, 765, 765, 765, 765, 765, 765, 765, 741, 765, - 764, 764, 793, 792, 762, 762, 741, 402, 402, 402, - 782, 402, 406, 829, 772, 249, 310, 774, 402, 406, - 353, 768, 20, 402, 759, 824, 764, 17, 17, 764, - 402, 764, 131, 401, 784, 764, 765, 765, 112, 112, - 764, 402, 112, 764, 707, 707, 707, 707, 813, 813, - 764, 138, 718, 402, 402, 824, 402, 388, 695, 683, - 401, 592, 649, 402, 483, 483, 402, 159, 396, 334, - 325, 325, 133, 232, 308, 545, 546, 133, 232, 552, - 553, 325, 325, 325, 826, 824, 814, 814, 824, 824, - 473, 215, 215, 305, 308, 741, 815, 126, 126, 268, - 126, 144, 825, 815, 825, 815, 815, 815, 815, 402, - 566, 169, 169, 169, 566, 566, 566, 566, 566, 566, - 344, 465, 466, 657, 657, 215, 257, 657, 657, 89, - 156, 215, 528, 529, 530, 823, 359, 360, 400, 400, - 763, 813, 649, 87, 823, 824, 87, 824, 87, 815, - 87, 815, 87, 815, 401, 815, 765, 90, 146, 89, - 220, 173, 813, 606, 741, 20, 813, 126, 522, 234, - 402, 406, 740, 677, 469, 478, 155, 490, 471, 499, - 827, 56, 317, 493, 377, 378, 379, 644, 347, 511, - 562, 824, 587, 817, 401, 406, 602, 535, 92, 161, - 288, 342, 632, 730, 401, 814, 728, 230, 344, 733, - 728, 172, 728, 739, 401, 739, 827, 402, 387, 815, - 402, 817, 817, 402, 455, 455, 20, 401, 135, 577, - 584, 131, 764, 402, 402, 793, 131, 99, 101, 225, - 401, 402, 364, 770, 782, 358, 358, 402, 764, 207, - 764, 406, 769, 743, 763, 765, 765, 764, 784, 402, - 17, 17, 764, 764, 112, 764, 402, 813, 813, 813, - 813, 36, 140, 719, 824, 808, 614, 826, 402, 402, - 606, 334, 825, 815, 823, 823, 741, 406, 823, 823, - 406, 825, 815, 825, 220, 220, 507, 827, 344, 456, - 814, 814, 561, 814, 117, 169, 566, 566, 566, 413, - 94, 824, 824, 220, 483, 824, 824, 90, 146, 89, - 530, 529, 400, 133, 133, 131, 527, 826, 764, 215, - 475, 606, 482, 344, 494, 344, 700, 401, 105, 523, - 116, 521, 824, 402, 114, 150, 479, 401, 491, 92, - 104, 249, 815, 47, 47, 233, 510, 174, 512, 131, - 401, 401, 588, 589, 767, 827, 824, 606, 325, 814, - 402, 764, 401, 728, 733, 402, 739, 402, 455, 455, - 455, 455, 233, 455, 576, 765, 131, 401, 784, 401, - 402, 406, 402, 402, 348, 302, 402, 402, 402, 765, - 765, 764, 782, 764, 763, 402, 262, 606, 494, 401, - 821, 614, 546, 401, 401, 553, 764, 359, 268, 359, - 359, 126, 566, 461, 824, 483, 580, 20, 616, 813, - 528, 402, 494, 193, 485, 152, 817, 644, 279, 304, - 524, 256, 491, 62, 88, 153, 62, 88, 153, 812, - 492, 280, 280, 233, 233, 824, 561, 588, 764, 402, - 406, 344, 561, 590, 590, 813, 402, 814, 402, 455, - 765, 784, 402, 771, 782, 207, 373, 813, 494, 784, - 595, 261, 401, 549, 784, 784, 560, 561, 560, 561, - 814, 616, 23, 148, 126, 132, 243, 298, 230, 486, - 487, 488, 317, 122, 548, 821, 492, 402, 493, 402, - 402, 606, 589, 561, 591, 591, 737, 402, 402, 402, - 402, 348, 482, 402, 613, 402, 402, 359, 105, 92, - 342, 230, 488, 230, 487, 815, 561, 20, 401, 493, - 606, 590, 493, 592, 592, 100, 485, 821, 402, 561, - 279, 39, 207, 272, 293, 489, 489, 545, 381, 383, - 384, 386, 525, 526, 824, 827, 493, 591, 737, 12, - 162, 633, 486, 595, 549, 116, 6, 87, 220, 402, - 406, 737, 592, 216, 401, 628, 630, 635, 679, 684, - 690, 700, 528, 256, 526, 629, 630, 631, 701, 702, - 821, 402, 405, 401, 631, 525, 402 + 0, 3, 13, 15, 16, 29, 49, 51, 52, 56, + 57, 67, 69, 88, 91, 97, 103, 109, 115, 121, + 123, 128, 141, 168, 193, 194, 199, 208, 226, 263, + 274, 278, 280, 285, 290, 293, 297, 303, 309, 312, + 319, 332, 348, 357, 359, 362, 366, 378, 419, 427, + 428, 429, 430, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 444, 445, 449, 459, 461, 462, 465, 466, + 467, 477, 478, 487, 515, 521, 522, 528, 534, 536, + 538, 539, 540, 541, 550, 554, 555, 556, 558, 559, + 560, 573, 574, 575, 576, 586, 592, 593, 596, 597, + 598, 599, 600, 605, 607, 610, 613, 614, 624, 625, + 628, 636, 655, 658, 659, 660, 663, 665, 667, 670, + 673, 674, 675, 683, 684, 685, 686, 687, 692, 694, + 695, 699, 700, 703, 704, 705, 707, 708, 709, 710, + 712, 713, 714, 719, 722, 725, 727, 728, 733, 735, + 739, 746, 749, 750, 751, 752, 753, 754, 781, 343, + 380, 688, 10, 66, 86, 107, 134, 139, 144, 159, + 241, 268, 292, 298, 304, 306, 332, 333, 337, 345, + 350, 360, 372, 535, 688, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 22, 23, 25, + 27, 28, 29, 31, 33, 34, 36, 37, 38, 39, + 40, 43, 44, 45, 46, 47, 49, 50, 51, 52, + 53, 56, 57, 58, 59, 60, 61, 63, 64, 65, + 66, 67, 68, 70, 71, 72, 74, 75, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 93, 95, 96, + 97, 98, 99, 101, 102, 103, 106, 107, 108, 109, + 110, 112, 113, 114, 116, 117, 119, 120, 121, 122, + 123, 124, 125, 127, 129, 130, 131, 133, 135, 139, + 140, 142, 143, 145, 147, 148, 149, 150, 151, 153, + 154, 155, 157, 158, 159, 160, 161, 162, 165, 166, + 167, 168, 169, 170, 171, 173, 175, 178, 180, 181, + 182, 183, 184, 185, 186, 188, 190, 193, 194, 195, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 213, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 225, 226, 228, 230, 231, 232, + 233, 234, 237, 241, 242, 243, 246, 250, 251, 252, + 253, 254, 255, 256, 258, 259, 260, 261, 262, 263, + 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 289, 290, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 304, 305, 306, 307, 309, + 310, 311, 312, 314, 315, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 330, 331, 333, + 334, 335, 336, 337, 339, 340, 343, 344, 345, 346, + 348, 349, 350, 351, 352, 353, 356, 357, 358, 359, + 362, 363, 364, 365, 366, 367, 369, 371, 372, 373, + 376, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 398, 883, 895, + 898, 899, 370, 715, 239, 264, 688, 32, 483, 750, + 10, 22, 42, 62, 86, 92, 107, 134, 140, 144, + 195, 241, 244, 292, 298, 306, 333, 334, 336, 337, + 345, 349, 350, 355, 360, 488, 529, 589, 629, 637, + 11, 263, 883, 883, 137, 11, 258, 334, 336, 10, + 22, 42, 66, 86, 107, 134, 139, 144, 159, 241, + 251, 292, 296, 298, 304, 306, 332, 333, 337, 345, + 350, 360, 372, 535, 601, 688, 883, 714, 721, 4, + 11, 27, 129, 135, 184, 215, 266, 279, 404, 410, + 411, 611, 883, 891, 894, 11, 69, 277, 303, 615, + 616, 617, 895, 174, 895, 400, 888, 892, 332, 759, + 611, 883, 895, 343, 883, 251, 86, 159, 331, 332, + 668, 297, 895, 11, 307, 339, 343, 451, 895, 8, + 141, 615, 616, 264, 688, 895, 11, 104, 761, 43, + 63, 195, 210, 292, 298, 307, 339, 343, 383, 450, + 451, 11, 307, 339, 343, 451, 343, 214, 238, 240, + 790, 879, 881, 895, 902, 759, 412, 895, 790, 792, + 138, 716, 419, 876, 276, 755, 756, 883, 750, 751, + 0, 423, 715, 118, 172, 245, 354, 762, 763, 750, + 752, 753, 424, 26, 30, 32, 73, 79, 136, 138, + 152, 164, 176, 177, 179, 189, 191, 212, 227, 247, + 248, 249, 291, 313, 370, 398, 879, 889, 896, 898, + 900, 603, 895, 884, 895, 603, 85, 623, 889, 893, + 895, 881, 50, 127, 403, 406, 407, 408, 410, 411, + 412, 413, 414, 415, 662, 845, 846, 895, 893, 883, + 881, 883, 790, 883, 300, 883, 603, 201, 893, 881, + 182, 178, 272, 689, 690, 691, 881, 887, 895, 10, + 42, 55, 62, 66, 86, 107, 139, 159, 183, 241, + 292, 296, 298, 304, 332, 333, 337, 345, 350, 372, + 535, 608, 892, 881, 341, 889, 883, 419, 345, 884, + 603, 85, 334, 336, 893, 334, 336, 50, 127, 662, + 283, 893, 446, 895, 883, 883, 300, 883, 603, 201, + 893, 304, 332, 372, 535, 66, 159, 139, 296, 11, + 883, 747, 792, 151, 889, 883, 151, 666, 151, 884, + 85, 151, 889, 151, 882, 883, 50, 127, 151, 662, + 36, 151, 882, 151, 883, 151, 883, 151, 883, 300, + 151, 883, 151, 201, 882, 182, 151, 602, 603, 419, + 726, 715, 894, 11, 894, 11, 894, 894, 891, 891, + 137, 156, 612, 267, 419, 419, 502, 502, 502, 239, + 341, 424, 502, 881, 790, 791, 612, 892, 419, 723, + 36, 883, 883, 881, 895, 26, 394, 178, 422, 242, + 242, 239, 137, 892, 341, 239, 19, 31, 33, 34, + 41, 42, 45, 46, 53, 76, 77, 78, 79, 80, + 81, 82, 89, 90, 108, 122, 125, 126, 130, 143, + 170, 171, 173, 188, 196, 197, 211, 213, 224, 229, + 230, 232, 241, 250, 259, 273, 294, 308, 315, 327, + 339, 340, 344, 346, 347, 355, 360, 367, 385, 386, + 387, 388, 389, 390, 391, 399, 401, 402, 403, 405, + 410, 411, 412, 419, 750, 801, 804, 807, 808, 809, + 811, 812, 813, 814, 817, 818, 822, 824, 825, 843, + 847, 864, 869, 877, 878, 879, 889, 890, 891, 892, + 892, 11, 463, 880, 881, 307, 450, 92, 457, 892, + 458, 892, 895, 892, 26, 47, 450, 394, 690, 242, + 137, 341, 406, 26, 394, 178, 691, 419, 881, 417, + 422, 870, 871, 412, 791, 20, 895, 309, 136, 717, + 92, 822, 874, 875, 755, 424, 419, 718, 420, 420, + 429, 881, 11, 104, 760, 760, 36, 760, 128, 132, + 192, 236, 766, 776, 778, 779, 762, 763, 876, 871, + 419, 581, 252, 281, 422, 604, 252, 281, 309, 378, + 431, 459, 460, 7, 109, 252, 309, 470, 381, 38, + 68, 124, 154, 252, 281, 289, 295, 302, 309, 317, + 325, 373, 460, 649, 656, 419, 638, 7, 109, 281, + 443, 7, 13, 52, 102, 109, 112, 161, 216, 252, + 281, 285, 309, 468, 469, 603, 603, 419, 661, 422, + 281, 309, 431, 460, 252, 281, 37, 84, 158, 203, + 205, 216, 251, 281, 286, 309, 319, 468, 524, 525, + 243, 252, 371, 544, 552, 281, 309, 468, 252, 281, + 60, 101, 253, 335, 239, 252, 281, 309, 132, 281, + 431, 460, 281, 309, 468, 883, 190, 240, 382, 424, + 689, 361, 711, 239, 889, 419, 883, 889, 233, 50, + 127, 662, 883, 300, 883, 182, 603, 502, 322, 323, + 480, 892, 419, 581, 582, 48, 31, 33, 34, 45, + 46, 89, 90, 130, 170, 171, 173, 211, 213, 232, + 273, 310, 315, 339, 340, 367, 398, 798, 800, 802, + 804, 806, 808, 809, 810, 812, 813, 817, 818, 896, + 898, 883, 431, 20, 706, 381, 431, 603, 603, 419, + 577, 488, 431, 26, 447, 350, 551, 252, 537, 60, + 101, 253, 335, 9, 28, 561, 20, 577, 132, 431, + 881, 516, 881, 881, 182, 603, 59, 887, 895, 889, + 883, 32, 83, 167, 216, 299, 361, 734, 122, 581, + 39, 287, 471, 122, 419, 122, 381, 122, 638, 122, + 424, 151, 603, 151, 603, 122, 661, 882, 122, 122, + 239, 122, 471, 122, 60, 101, 253, 335, 122, 239, + 122, 132, 151, 151, 458, 122, 424, 471, 822, 850, + 69, 515, 720, 725, 728, 733, 739, 746, 749, 883, + 419, 503, 504, 895, 503, 86, 134, 139, 182, 298, + 304, 332, 333, 618, 880, 882, 617, 92, 419, 729, + 749, 156, 424, 736, 883, 798, 851, 20, 882, 133, + 669, 669, 669, 190, 895, 132, 132, 618, 882, 297, + 895, 419, 417, 750, 852, 369, 815, 822, 868, 419, + 815, 815, 419, 419, 419, 419, 803, 803, 261, 750, + 419, 419, 805, 419, 419, 419, 419, 45, 46, 815, + 822, 419, 803, 419, 419, 419, 419, 419, 379, 397, + 419, 819, 419, 819, 419, 419, 750, 419, 419, 419, + 419, 419, 419, 419, 872, 822, 822, 366, 750, 822, + 850, 892, 46, 419, 816, 419, 892, 17, 20, 25, + 30, 152, 156, 176, 177, 191, 224, 227, 241, 244, + 313, 398, 403, 406, 407, 408, 410, 411, 412, 413, + 414, 415, 421, 845, 847, 849, 249, 822, 174, 424, + 757, 871, 419, 892, 95, 153, 464, 424, 47, 92, + 458, 20, 92, 195, 398, 399, 411, 456, 527, 818, + 892, 894, 64, 106, 831, 75, 92, 126, 235, 239, + 347, 452, 453, 455, 458, 527, 92, 452, 190, 881, + 822, 11, 15, 16, 17, 18, 19, 20, 21, 24, + 35, 41, 42, 48, 54, 55, 62, 69, 76, 77, + 78, 80, 81, 82, 92, 94, 100, 104, 105, 111, + 115, 118, 126, 128, 132, 134, 137, 141, 144, 146, + 156, 163, 172, 174, 187, 192, 196, 197, 214, 224, + 229, 235, 236, 238, 239, 240, 244, 245, 257, 265, + 277, 288, 303, 308, 316, 329, 332, 338, 341, 342, + 347, 354, 355, 360, 361, 368, 374, 375, 377, 378, + 398, 412, 886, 897, 898, 899, 900, 901, 870, 65, + 286, 606, 895, 419, 740, 741, 742, 743, 744, 895, + 715, 420, 424, 756, 882, 20, 718, 752, 753, 752, + 764, 765, 822, 752, 129, 215, 773, 272, 311, 359, + 11, 768, 822, 770, 771, 822, 824, 776, 777, 766, + 767, 132, 779, 766, 776, 412, 851, 252, 281, 309, + 341, 341, 886, 422, 341, 341, 333, 450, 701, 48, + 62, 134, 265, 355, 500, 501, 62, 92, 224, 341, + 92, 224, 298, 883, 239, 527, 302, 341, 341, 229, + 527, 96, 175, 298, 287, 649, 657, 156, 165, 246, + 310, 368, 420, 639, 642, 643, 644, 646, 798, 896, + 341, 360, 55, 500, 671, 671, 239, 296, 345, 62, + 671, 14, 284, 296, 345, 881, 161, 341, 341, 419, + 473, 333, 378, 379, 473, 424, 361, 361, 222, 798, + 252, 662, 341, 432, 341, 341, 527, 36, 526, 527, + 527, 84, 203, 205, 36, 341, 431, 298, 431, 216, + 525, 419, 341, 229, 892, 544, 341, 671, 298, 341, + 341, 603, 603, 603, 603, 881, 341, 341, 298, 82, + 360, 557, 893, 341, 432, 341, 298, 252, 281, 272, + 282, 305, 454, 689, 887, 881, 581, 798, 239, 638, + 527, 603, 603, 661, 176, 239, 60, 101, 253, 335, + 239, 603, 176, 378, 484, 431, 398, 583, 584, 577, + 419, 800, 20, 19, 799, 87, 149, 204, 207, 301, + 392, 419, 820, 821, 604, 803, 9, 696, 798, 883, + 432, 589, 361, 578, 579, 897, 372, 432, 893, 69, + 141, 448, 487, 521, 560, 613, 628, 692, 892, 552, + 553, 883, 198, 603, 603, 603, 603, 97, 168, 348, + 359, 562, 563, 116, 419, 557, 432, 523, 524, 20, + 234, 419, 517, 502, 458, 132, 887, 239, 419, 640, + 20, 378, 379, 748, 299, 419, 750, 783, 784, 785, + 790, 793, 825, 879, 889, 375, 795, 889, 471, 798, + 884, 151, 883, 889, 471, 882, 883, 122, 361, 122, + 361, 662, 471, 471, 882, 883, 881, 883, 883, 883, + 881, 882, 557, 122, 122, 471, 602, 603, 420, 424, + 488, 503, 420, 424, 420, 882, 85, 306, 622, 623, + 882, 882, 880, 880, 882, 341, 378, 626, 366, 730, + 731, 895, 288, 732, 5, 120, 294, 311, 737, 790, + 228, 738, 420, 424, 724, 728, 733, 739, 749, 341, + 616, 615, 616, 137, 142, 627, 895, 850, 418, 850, + 852, 853, 419, 374, 865, 866, 822, 850, 891, 891, + 850, 87, 149, 204, 207, 301, 392, 398, 854, 855, + 892, 891, 850, 850, 891, 891, 815, 815, 822, 662, + 822, 856, 410, 411, 823, 824, 843, 847, 858, 420, + 850, 822, 850, 859, 339, 394, 891, 891, 822, 35, + 137, 187, 342, 822, 850, 862, 850, 209, 822, 829, + 830, 831, 209, 822, 831, 870, 420, 424, 309, 891, + 891, 820, 822, 897, 339, 24, 329, 873, 822, 419, + 750, 863, 104, 106, 126, 224, 229, 234, 347, 356, + 822, 30, 152, 156, 191, 313, 419, 822, 341, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 798, 822, + 11, 18, 316, 844, 294, 419, 843, 140, 195, 332, + 334, 336, 758, 881, 878, 137, 782, 11, 104, 368, + 412, 420, 850, 881, 343, 399, 419, 892, 424, 420, + 418, 425, 150, 150, 471, 744, 745, 424, 782, 406, + 872, 713, 881, 874, 420, 750, 424, 21, 100, 361, + 634, 419, 769, 894, 240, 234, 780, 780, 236, 424, + 192, 294, 295, 772, 777, 767, 420, 420, 341, 341, + 298, 893, 883, 886, 893, 884, 883, 61, 702, 419, + 883, 180, 180, 419, 883, 229, 893, 822, 229, 883, + 216, 252, 364, 531, 544, 229, 96, 175, 893, 883, + 239, 883, 246, 896, 420, 424, 644, 646, 643, 646, + 896, 604, 893, 882, 492, 895, 895, 883, 883, 11, + 360, 883, 883, 895, 296, 345, 296, 345, 883, 11, + 360, 883, 881, 893, 883, 475, 476, 897, 883, 237, + 52, 237, 469, 885, 895, 885, 424, 420, 424, 341, + 893, 8, 61, 70, 71, 72, 114, 156, 161, 200, + 217, 218, 219, 220, 221, 223, 256, 292, 328, 330, + 353, 360, 363, 433, 893, 883, 527, 603, 883, 527, + 883, 527, 7, 109, 309, 545, 546, 547, 548, 897, + 893, 883, 883, 883, 893, 883, 7, 13, 109, 252, + 281, 252, 281, 577, 281, 281, 281, 893, 883, 883, + 306, 893, 883, 883, 341, 341, 58, 352, 272, 176, + 20, 603, 176, 176, 361, 361, 176, 229, 609, 892, + 603, 603, 603, 603, 603, 603, 176, 609, 237, 137, + 341, 479, 481, 406, 420, 424, 822, 19, 799, 798, + 417, 417, 341, 341, 341, 419, 341, 891, 803, 562, + 61, 113, 185, 186, 198, 252, 333, 335, 697, 493, + 531, 532, 132, 885, 420, 424, 406, 881, 447, 244, + 488, 134, 892, 577, 577, 577, 577, 239, 244, 419, + 796, 797, 895, 306, 121, 749, 881, 191, 489, 490, + 491, 492, 497, 500, 518, 519, 895, 378, 379, 511, + 20, 145, 892, 239, 881, 420, 641, 642, 647, 20, + 182, 289, 377, 648, 649, 650, 676, 148, 148, 132, + 750, 784, 785, 20, 786, 895, 424, 73, 138, 164, + 179, 189, 212, 291, 787, 786, 20, 786, 895, 871, + 419, 75, 822, 732, 581, 20, 122, 471, 638, 603, + 885, 603, 885, 661, 239, 471, 471, 239, 471, 306, + 132, 458, 471, 822, 332, 420, 504, 381, 882, 424, + 144, 619, 620, 893, 8, 627, 420, 424, 872, 877, + 120, 311, 120, 311, 294, 359, 206, 798, 883, 137, + 239, 619, 36, 471, 420, 418, 418, 424, 850, 822, + 111, 866, 867, 20, 420, 420, 420, 420, 420, 137, + 420, 420, 420, 420, 420, 424, 420, 257, 857, 420, + 823, 823, 156, 176, 241, 406, 407, 408, 410, 411, + 412, 413, 414, 415, 421, 847, 823, 420, 420, 132, + 137, 860, 861, 420, 394, 420, 420, 20, 862, 850, + 862, 862, 137, 420, 420, 897, 20, 420, 424, 822, + 897, 424, 822, 872, 822, 895, 420, 420, 394, 823, + 823, 117, 850, 137, 104, 106, 126, 229, 234, 347, + 356, 419, 117, 329, 873, 822, 863, 822, 341, 662, + 822, 419, 750, 334, 336, 334, 336, 881, 759, 759, + 783, 375, 794, 850, 850, 822, 420, 248, 836, 420, + 424, 690, 891, 820, 453, 822, 420, 424, 741, 795, + 874, 765, 241, 845, 848, 395, 396, 635, 822, 772, + 880, 738, 738, 770, 770, 768, 128, 893, 883, 883, + 192, 822, 501, 419, 419, 503, 471, 364, 341, 530, + 883, 544, 166, 229, 604, 642, 646, 646, 414, 798, + 109, 309, 470, 672, 471, 471, 883, 883, 883, 883, + 420, 424, 406, 422, 252, 281, 7, 109, 252, 281, + 798, 222, 798, 893, 882, 192, 256, 144, 292, 229, + 892, 882, 891, 256, 882, 358, 547, 548, 547, 420, + 424, 549, 892, 341, 201, 201, 201, 341, 341, 341, + 341, 341, 341, 341, 883, 893, 883, 609, 798, 176, + 609, 609, 885, 885, 609, 176, 176, 176, 176, 176, + 176, 609, 480, 32, 74, 98, 117, 133, 147, 229, + 237, 270, 482, 241, 410, 411, 527, 580, 646, 848, + 892, 901, 398, 584, 420, 417, 420, 891, 418, 891, + 149, 204, 821, 204, 821, 821, 891, 207, 420, 239, + 192, 406, 698, 698, 698, 698, 698, 698, 698, 48, + 62, 92, 94, 163, 224, 229, 265, 277, 355, 494, + 495, 496, 243, 542, 350, 579, 580, 502, 283, 332, + 85, 881, 563, 585, 892, 420, 424, 798, 883, 883, + 378, 520, 419, 881, 420, 424, 420, 424, 237, 473, + 237, 239, 512, 749, 530, 341, 881, 361, 630, 420, + 424, 92, 406, 651, 892, 458, 332, 645, 646, 378, + 650, 652, 239, 749, 420, 895, 419, 784, 179, 247, + 788, 784, 788, 179, 787, 788, 179, 419, 895, 419, + 850, 234, 471, 798, 883, 471, 361, 471, 361, 471, + 471, 881, 881, 883, 557, 471, 881, 882, 623, 893, + 378, 424, 621, 242, 749, 731, 120, 120, 882, 618, + 471, 893, 852, 420, 338, 822, 115, 798, 822, 822, + 822, 860, 823, 104, 106, 224, 234, 823, 823, 823, + 823, 823, 823, 823, 823, 823, 798, 823, 822, 822, + 861, 860, 819, 819, 798, 420, 420, 420, 850, 420, + 424, 897, 830, 262, 326, 832, 420, 424, 371, 826, + 20, 420, 816, 892, 822, 17, 17, 822, 420, 822, + 137, 419, 851, 822, 823, 823, 117, 117, 822, 420, + 117, 822, 759, 759, 759, 759, 881, 881, 822, 144, + 774, 420, 420, 420, 836, 419, 837, 895, 836, 892, + 368, 420, 418, 406, 744, 732, 419, 635, 420, 240, + 773, 698, 420, 503, 503, 420, 893, 604, 166, 414, + 350, 493, 224, 85, 224, 321, 324, 350, 476, 580, + 897, 341, 341, 139, 241, 324, 587, 588, 139, 241, + 594, 595, 341, 341, 420, 420, 420, 894, 892, 882, + 882, 892, 892, 546, 883, 132, 132, 283, 132, 151, + 893, 883, 893, 883, 883, 883, 883, 544, 420, 609, + 176, 176, 609, 609, 609, 609, 609, 609, 361, 485, + 486, 706, 706, 224, 270, 706, 706, 94, 163, 224, + 570, 571, 572, 891, 378, 379, 418, 418, 420, 820, + 881, 698, 92, 891, 892, 92, 892, 92, 892, 92, + 892, 92, 883, 92, 883, 92, 883, 419, 883, 823, + 95, 153, 94, 229, 180, 881, 652, 419, 798, 20, + 881, 381, 132, 564, 420, 424, 797, 542, 726, 85, + 216, 489, 498, 162, 510, 491, 519, 895, 57, 333, + 513, 378, 693, 532, 892, 630, 885, 419, 647, 822, + 822, 424, 419, 648, 577, 97, 168, 303, 359, 681, + 786, 419, 882, 784, 239, 361, 789, 784, 179, 784, + 796, 419, 796, 895, 420, 405, 883, 420, 471, 885, + 885, 471, 471, 306, 419, 141, 620, 627, 137, 822, + 420, 420, 861, 137, 104, 106, 234, 419, 420, 384, + 828, 850, 376, 376, 420, 822, 216, 822, 424, 827, + 800, 820, 823, 823, 822, 851, 420, 17, 17, 822, + 822, 117, 822, 420, 881, 881, 881, 881, 36, 146, + 775, 836, 836, 836, 838, 895, 822, 892, 876, 662, + 769, 894, 420, 420, 652, 350, 229, 229, 894, 895, + 798, 406, 893, 883, 891, 891, 798, 424, 891, 891, + 424, 893, 883, 882, 882, 603, 882, 122, 176, 609, + 609, 431, 99, 892, 892, 229, 503, 892, 892, 95, + 153, 94, 572, 571, 418, 139, 165, 139, 137, 569, + 894, 822, 224, 495, 652, 502, 361, 514, 543, 547, + 361, 749, 419, 883, 110, 565, 121, 892, 85, 420, + 119, 157, 499, 419, 511, 97, 109, 262, 883, 40, + 48, 195, 181, 533, 137, 419, 419, 631, 632, 825, + 895, 892, 644, 653, 654, 896, 652, 341, 882, 420, + 822, 419, 784, 789, 420, 796, 420, 471, 471, 471, + 883, 242, 471, 619, 823, 137, 419, 851, 419, 420, + 424, 420, 420, 365, 318, 420, 420, 420, 823, 823, + 822, 850, 822, 377, 833, 255, 839, 420, 820, 420, + 772, 277, 652, 514, 361, 472, 580, 419, 889, 662, + 588, 419, 419, 595, 378, 283, 378, 378, 132, 609, + 481, 892, 503, 623, 20, 664, 664, 881, 570, 420, + 514, 202, 505, 159, 420, 424, 885, 693, 542, 294, + 320, 566, 269, 511, 63, 93, 160, 63, 93, 160, + 880, 512, 295, 295, 48, 242, 48, 892, 603, 631, + 822, 420, 424, 361, 603, 633, 633, 646, 420, 424, + 881, 420, 882, 420, 471, 823, 851, 420, 829, 850, + 216, 393, 834, 835, 895, 36, 762, 763, 836, 240, + 881, 514, 822, 851, 638, 275, 591, 661, 851, 851, + 602, 603, 602, 603, 882, 664, 23, 155, 132, 138, + 254, 314, 239, 506, 507, 508, 333, 547, 127, 590, + 889, 512, 420, 513, 242, 242, 420, 420, 378, 474, + 632, 603, 634, 634, 648, 653, 794, 420, 420, 420, + 420, 365, 424, 20, 850, 271, 295, 840, 502, 420, + 591, 420, 420, 378, 110, 97, 359, 239, 508, 239, + 507, 883, 603, 20, 419, 513, 474, 633, 473, 513, + 635, 635, 652, 105, 835, 837, 30, 75, 351, 841, + 842, 841, 420, 505, 889, 603, 294, 39, 216, 287, + 309, 509, 509, 587, 399, 401, 402, 567, 568, 891, + 892, 895, 513, 634, 794, 12, 169, 682, 842, 294, + 131, 260, 506, 638, 121, 6, 92, 229, 420, 424, + 794, 635, 225, 419, 677, 679, 684, 728, 733, 739, + 749, 17, 570, 269, 568, 678, 679, 680, 750, 751, + 842, 889, 420, 423, 419, 680, 567, 420 }; #define yyerrok (yyerrstatus = 0) @@ -14406,12 +16229,12 @@ yyreduce: switch (yyn) { case 2: -#line 539 "gram.y" +#line 596 "gram.y" { parsetree = (yyvsp[0].list); } break; case 3: -#line 544 "gram.y" +#line 601 "gram.y" { if ((yyvsp[0].node) != NULL) (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); else @@ -14420,7 +16243,7 @@ yyreduce: break; case 4: -#line 550 "gram.y" +#line 607 "gram.y" { if ((yyvsp[0].node) != NULL) (yyval.list) = list_make1((yyvsp[0].node)); else @@ -14428,13 +16251,13 @@ yyreduce: } break; - case 96: -#line 650 "gram.y" + case 105: +#line 716 "gram.y" { (yyval.node) = NULL; } break; - case 97: -#line 661 "gram.y" + case 106: +#line 727 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_ROLE; @@ -14444,200 +16267,200 @@ yyreduce: } break; - case 98: -#line 671 "gram.y" + case 107: +#line 737 "gram.y" {} break; - case 99: -#line 672 "gram.y" + case 108: +#line 738 "gram.y" {} break; - case 100: -#line 681 "gram.y" + case 109: +#line 747 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 101: -#line 682 "gram.y" + case 110: +#line 748 "gram.y" { (yyval.list) = NIL; } break; - case 102: -#line 687 "gram.y" + case 111: +#line 753 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *)makeString((yyvsp[0].str))); } break; - case 103: -#line 692 "gram.y" + case 112: +#line 758 "gram.y" { (yyval.defelt) = makeDefElem("password", NULL); } break; - case 104: -#line 696 "gram.y" + case 113: +#line 762 "gram.y" { (yyval.defelt) = makeDefElem("encryptedPassword", (Node *)makeString((yyvsp[0].str))); } break; - case 105: -#line 701 "gram.y" + case 114: +#line 767 "gram.y" { (yyval.defelt) = makeDefElem("unencryptedPassword", (Node *)makeString((yyvsp[0].str))); } break; - case 106: -#line 706 "gram.y" + case 115: +#line 772 "gram.y" { (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(TRUE)); } break; - case 107: -#line 710 "gram.y" + case 116: +#line 776 "gram.y" { (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(FALSE)); } break; - case 108: -#line 714 "gram.y" + case 117: +#line 780 "gram.y" { (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(TRUE)); } break; - case 109: -#line 718 "gram.y" + case 118: +#line 784 "gram.y" { (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(FALSE)); } break; - case 110: -#line 722 "gram.y" + case 119: +#line 788 "gram.y" { (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(TRUE)); } break; - case 111: -#line 726 "gram.y" + case 120: +#line 792 "gram.y" { (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(FALSE)); } break; - case 112: -#line 730 "gram.y" + case 121: +#line 796 "gram.y" { (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(TRUE)); } break; - case 113: -#line 734 "gram.y" + case 122: +#line 800 "gram.y" { (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(FALSE)); } break; - case 114: -#line 738 "gram.y" + case 123: +#line 804 "gram.y" { /* For backwards compatibility, synonym for SUPERUSER */ (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(TRUE)); } break; - case 115: -#line 743 "gram.y" + case 124: +#line 809 "gram.y" { (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(FALSE)); } break; - case 116: -#line 747 "gram.y" + case 125: +#line 813 "gram.y" { (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); } break; - case 117: -#line 751 "gram.y" + case 126: +#line 817 "gram.y" { (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); } break; - case 118: -#line 755 "gram.y" + case 127: +#line 821 "gram.y" { (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[0].ival))); } break; - case 119: -#line 759 "gram.y" + case 128: +#line 825 "gram.y" { (yyval.defelt) = makeDefElem("validUntil", (Node *)makeString((yyvsp[0].str))); } break; - case 120: -#line 764 "gram.y" + case 129: +#line 830 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[0].list)); } break; - case 121: -#line 769 "gram.y" + case 130: +#line 835 "gram.y" { (yyval.defelt) = makeDefElem("sysid", (Node *)makeInteger((yyvsp[0].ival))); } break; - case 122: -#line 773 "gram.y" + case 131: +#line 839 "gram.y" { (yyval.defelt) = makeDefElem("adminmembers", (Node *)(yyvsp[0].list)); } break; - case 123: -#line 777 "gram.y" + case 132: +#line 843 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[0].list)); } break; - case 124: -#line 781 "gram.y" + case 133: +#line 847 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[0].list)); } break; - case 125: -#line 785 "gram.y" + case 134: +#line 851 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[0].list)); } break; - case 126: -#line 799 "gram.y" + case 135: +#line 865 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_USER; @@ -14647,8 +16470,8 @@ yyreduce: } break; - case 127: -#line 817 "gram.y" + case 136: +#line 883 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[-2].str); @@ -14658,8 +16481,8 @@ yyreduce: } break; - case 128: -#line 828 "gram.y" + case 137: +#line 894 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = (yyvsp[-1].str); @@ -14668,8 +16491,8 @@ yyreduce: } break; - case 129: -#line 845 "gram.y" + case 138: +#line 911 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[-2].str); @@ -14679,8 +16502,8 @@ yyreduce: } break; - case 130: -#line 857 "gram.y" + case 139: +#line 923 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = (yyvsp[-1].str); @@ -14689,8 +16512,8 @@ yyreduce: } break; - case 131: -#line 877 "gram.y" + case 140: +#line 943 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; @@ -14699,8 +16522,8 @@ yyreduce: } break; - case 132: -#line 884 "gram.y" + case 141: +#line 950 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = TRUE; @@ -14709,8 +16532,8 @@ yyreduce: } break; - case 133: -#line 903 "gram.y" + case 142: +#line 969 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; @@ -14719,8 +16542,8 @@ yyreduce: } break; - case 134: -#line 910 "gram.y" + case 143: +#line 976 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->roles = (yyvsp[0].list); @@ -14729,8 +16552,8 @@ yyreduce: } break; - case 135: -#line 927 "gram.y" + case 144: +#line 993 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_GROUP; @@ -14740,8 +16563,8 @@ yyreduce: } break; - case 136: -#line 945 "gram.y" + case 145: +#line 1011 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[-3].str); @@ -14752,18 +16575,18 @@ yyreduce: } break; - case 137: -#line 955 "gram.y" + case 146: +#line 1021 "gram.y" { (yyval.ival) = +1; } break; - case 138: -#line 956 "gram.y" + case 147: +#line 1022 "gram.y" { (yyval.ival) = -1; } break; - case 139: -#line 969 "gram.y" + case 148: +#line 1035 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; @@ -14772,8 +16595,8 @@ yyreduce: } break; - case 140: -#line 976 "gram.y" + case 149: +#line 1042 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = TRUE; @@ -14782,8 +16605,8 @@ yyreduce: } break; - case 141: -#line 993 "gram.y" + case 150: +#line 1059 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* One can omit the schema name or the authorization id. */ @@ -14797,8 +16620,8 @@ yyreduce: } break; - case 142: -#line 1005 "gram.y" + case 151: +#line 1071 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not both */ @@ -14809,28 +16632,28 @@ yyreduce: } break; - case 143: -#line 1016 "gram.y" + case 152: +#line 1082 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 144: -#line 1017 "gram.y" + case 153: +#line 1083 "gram.y" { (yyval.str) = NULL; } break; - case 145: -#line 1021 "gram.y" + case 154: +#line 1087 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } break; - case 146: -#line 1022 "gram.y" + case 155: +#line 1088 "gram.y" { (yyval.list) = NIL; } break; - case 153: -#line 1050 "gram.y" + case 162: +#line 1116 "gram.y" { VariableSetStmt *n = (yyvsp[0].vsetstmt); n->is_local = false; @@ -14838,8 +16661,8 @@ yyreduce: } break; - case 154: -#line 1056 "gram.y" + case 163: +#line 1122 "gram.y" { VariableSetStmt *n = (yyvsp[0].vsetstmt); n->is_local = true; @@ -14847,8 +16670,8 @@ yyreduce: } break; - case 155: -#line 1062 "gram.y" + case 164: +#line 1128 "gram.y" { VariableSetStmt *n = (yyvsp[0].vsetstmt); n->is_local = false; @@ -14856,8 +16679,8 @@ yyreduce: } break; - case 156: -#line 1071 "gram.y" + case 165: +#line 1137 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -14867,8 +16690,8 @@ yyreduce: } break; - case 157: -#line 1079 "gram.y" + case 166: +#line 1145 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -14878,8 +16701,8 @@ yyreduce: } break; - case 158: -#line 1087 "gram.y" + case 167: +#line 1153 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; @@ -14888,8 +16711,8 @@ yyreduce: } break; - case 159: -#line 1094 "gram.y" + case 168: +#line 1160 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; @@ -14898,8 +16721,8 @@ yyreduce: } break; - case 160: -#line 1101 "gram.y" + case 169: +#line 1167 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_CURRENT; @@ -14908,8 +16731,8 @@ yyreduce: } break; - case 161: -#line 1109 "gram.y" + case 170: +#line 1175 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -14922,8 +16745,8 @@ yyreduce: } break; - case 162: -#line 1120 "gram.y" + case 171: +#line 1186 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; @@ -14933,8 +16756,8 @@ yyreduce: } break; - case 163: -#line 1128 "gram.y" + case 172: +#line 1194 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; @@ -14944,44 +16767,66 @@ yyreduce: } break; - case 164: -#line 1136 "gram.y" + case 173: +#line 1202 "gram.y" + { + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("current database cannot be changed"), + scanner_errposition((yylsp[0])))); + (yyval.vsetstmt) = NULL; /*not reached*/ + } + break; + + case 174: +#line 1210 "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]))); + (yyval.vsetstmt) = n; + } + break; + + case 175: +#line 1218 "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), NULL)); + n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; } break; - case 165: -#line 1147 "gram.y" + case 176: +#line 1229 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "role"; - n->args = list_make1(makeStringConst((yyvsp[0].str), NULL)); + n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); (yyval.vsetstmt) = n; } break; - case 166: -#line 1155 "gram.y" + case 177: +#line 1237 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; - n->args = list_make1(makeStringConst((yyvsp[0].str), NULL)); + n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); (yyval.vsetstmt) = n; } break; - case 167: -#line 1163 "gram.y" + case 178: +#line 1245 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; @@ -14990,182 +16835,195 @@ yyreduce: } break; - case 168: -#line 1170 "gram.y" + case 179: +#line 1252 "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", NULL)); + n->args = list_make1(makeStringConst((yyvsp[0].ival) == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", (yylsp[0]))); (yyval.vsetstmt) = n; } break; - case 169: -#line 1179 "gram.y" + case 180: +#line 1261 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 170: -#line 1181 "gram.y" + case 181: +#line 1263 "gram.y" { (yyval.str) = palloc(strlen((yyvsp[-2].str)) + strlen((yyvsp[0].str)) + 2); sprintf((yyval.str), "%s.%s", (yyvsp[-2].str), (yyvsp[0].str)); } break; - case 171: -#line 1187 "gram.y" + case 182: +#line 1269 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 172: -#line 1188 "gram.y" + case 183: +#line 1270 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 173: -#line 1192 "gram.y" - { (yyval.node) = makeStringConst((yyvsp[0].str), NULL); } + case 184: +#line 1274 "gram.y" + { (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } break; - case 174: -#line 1194 "gram.y" - { (yyval.node) = makeStringConst((yyvsp[0].str), NULL); } + case 185: +#line 1276 "gram.y" + { (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } break; - case 175: -#line 1196 "gram.y" - { (yyval.node) = makeAConst((yyvsp[0].value)); } + case 186: +#line 1278 "gram.y" + { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } break; - case 176: -#line 1199 "gram.y" + case 187: +#line 1281 "gram.y" { (yyval.str) = "read uncommitted"; } break; - case 177: -#line 1200 "gram.y" + case 188: +#line 1282 "gram.y" { (yyval.str) = "read committed"; } break; - case 178: -#line 1201 "gram.y" + case 189: +#line 1283 "gram.y" { (yyval.str) = "repeatable read"; } break; - case 179: -#line 1202 "gram.y" + case 190: +#line 1284 "gram.y" { (yyval.str) = "serializable"; } break; - case 180: -#line 1206 "gram.y" + case 191: +#line 1288 "gram.y" { (yyval.str) = "true"; } break; - case 181: -#line 1207 "gram.y" + case 192: +#line 1289 "gram.y" { (yyval.str) = "false"; } break; - case 182: -#line 1208 "gram.y" + case 193: +#line 1290 "gram.y" { (yyval.str) = "on"; } break; - case 183: -#line 1209 "gram.y" + case 194: +#line 1291 "gram.y" { (yyval.str) = "off"; } break; - case 184: -#line 1222 "gram.y" + case 195: +#line 1304 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), NULL); + (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } break; - case 185: -#line 1226 "gram.y" + case 196: +#line 1308 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), NULL); + (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } break; - case 186: -#line 1230 "gram.y" + case 197: +#line 1312 "gram.y" { - A_Const *n = (A_Const *) makeStringConst((yyvsp[-1].str), (yyvsp[-2].typnam)); - if ((yyvsp[0].ival) != INTERVAL_FULL_RANGE) + TypeName *t = (yyvsp[-2].typnam); + if ((yyvsp[0].list) != NIL) { - if (((yyvsp[0].ival) & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) + A_Const *n = (A_Const *) linitial((yyvsp[0].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"))); - n->typename->typmods = list_make1(makeIntConst((yyvsp[0].ival))); + errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), + scanner_errposition((yylsp[0])))); } - (yyval.node) = (Node *)n; + t->typmods = (yyvsp[0].list); + (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); } break; - case 187: -#line 1243 "gram.y" + case 198: +#line 1327 "gram.y" { - A_Const *n = (A_Const *) makeStringConst((yyvsp[-1].str), (yyvsp[-5].typnam)); - if (((yyvsp[0].ival) != INTERVAL_FULL_RANGE) - && (((yyvsp[0].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"))); - n->typename->typmods = list_make2(makeIntConst((yyvsp[0].ival)), - makeIntConst((yyvsp[-3].ival))); - (yyval.node) = (Node *)n; + TypeName *t = (yyvsp[-5].typnam); + if ((yyvsp[0].list) != NIL) + { + A_Const *n = (A_Const *) linitial((yyvsp[0].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"), + scanner_errposition((yylsp[0])))); + if (list_length((yyvsp[0].list)) != 1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("interval precision specified twice"), + scanner_errposition((yylsp[-5])))); + t->typmods = lappend((yyvsp[0].list), makeIntConst((yyvsp[-3].ival), (yylsp[-3]))); + } + else + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[-3].ival), (yylsp[-3]))); + (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); } break; - case 188: -#line 1254 "gram.y" - { (yyval.node) = makeAConst((yyvsp[0].value)); } + case 199: +#line 1349 "gram.y" + { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } break; - case 189: -#line 1255 "gram.y" + case 200: +#line 1350 "gram.y" { (yyval.node) = NULL; } break; - case 190: -#line 1256 "gram.y" + case 201: +#line 1351 "gram.y" { (yyval.node) = NULL; } break; - case 191: -#line 1260 "gram.y" + case 202: +#line 1355 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 192: -#line 1261 "gram.y" + case 203: +#line 1356 "gram.y" { (yyval.str) = NULL; } break; - case 193: -#line 1262 "gram.y" + case 204: +#line 1357 "gram.y" { (yyval.str) = NULL; } break; - case 194: -#line 1266 "gram.y" + case 205: +#line 1361 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 195: -#line 1267 "gram.y" + case 206: +#line 1362 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 196: -#line 1272 "gram.y" + case 207: +#line 1367 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -15174,8 +17032,8 @@ yyreduce: } break; - case 197: -#line 1279 "gram.y" + case 208: +#line 1374 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -15184,8 +17042,8 @@ yyreduce: } break; - case 198: -#line 1286 "gram.y" + case 209: +#line 1381 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -15194,8 +17052,8 @@ yyreduce: } break; - case 199: -#line 1293 "gram.y" + case 210: +#line 1388 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -15204,8 +17062,8 @@ yyreduce: } break; - case 200: -#line 1300 "gram.y" + case 211: +#line 1395 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; @@ -15213,18 +17071,18 @@ yyreduce: } break; - case 201: -#line 1309 "gram.y" + case 212: +#line 1404 "gram.y" { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } break; - case 202: -#line 1310 "gram.y" + case 213: +#line 1405 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[0].node); } break; - case 203: -#line 1316 "gram.y" + case 214: +#line 1411 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = (yyvsp[0].str); @@ -15232,8 +17090,8 @@ yyreduce: } break; - case 204: -#line 1322 "gram.y" + case 215: +#line 1417 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "timezone"; @@ -15241,8 +17099,8 @@ yyreduce: } break; - case 205: -#line 1328 "gram.y" + case 216: +#line 1423 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "transaction_isolation"; @@ -15250,8 +17108,8 @@ yyreduce: } break; - case 206: -#line 1334 "gram.y" + case 217: +#line 1429 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "session_authorization"; @@ -15259,8 +17117,8 @@ yyreduce: } break; - case 207: -#line 1340 "gram.y" + case 218: +#line 1435 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "all"; @@ -15268,8 +17126,8 @@ yyreduce: } break; - case 208: -#line 1350 "gram.y" + case 219: +#line 1445 "gram.y" { ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); n->constraints = (yyvsp[-1].list); @@ -15278,36 +17136,36 @@ yyreduce: } break; - case 209: -#line 1359 "gram.y" + case 220: +#line 1454 "gram.y" { (yyval.list) = NIL; } break; - case 210: -#line 1360 "gram.y" + case 221: +#line 1455 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 211: -#line 1364 "gram.y" + case 222: +#line 1459 "gram.y" { (yyval.boolean) = TRUE; } break; - case 212: -#line 1365 "gram.y" + case 223: +#line 1460 "gram.y" { (yyval.boolean) = FALSE; } break; - case 213: -#line 1374 "gram.y" + case 224: +#line 1469 "gram.y" { CheckPointStmt *n = makeNode(CheckPointStmt); (yyval.node) = (Node *)n; } break; - case 214: -#line 1389 "gram.y" + case 225: +#line 1484 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_ALL; @@ -15315,8 +17173,8 @@ yyreduce: } break; - case 215: -#line 1395 "gram.y" + case 226: +#line 1490 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; @@ -15324,8 +17182,8 @@ yyreduce: } break; - case 216: -#line 1401 "gram.y" + case 227: +#line 1496 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; @@ -15333,8 +17191,8 @@ yyreduce: } break; - case 217: -#line 1407 "gram.y" + case 228: +#line 1502 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_PLANS; @@ -15342,8 +17200,8 @@ yyreduce: } break; - case 218: -#line 1423 "gram.y" + case 229: +#line 1520 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[-1].range); @@ -15353,8 +17211,8 @@ yyreduce: } break; - case 219: -#line 1431 "gram.y" + case 230: +#line 1528 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[-1].range); @@ -15364,18 +17222,40 @@ yyreduce: } break; - case 220: -#line 1441 "gram.y" + case 231: +#line 1536 "gram.y" + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = OBJECT_SEQUENCE; + (yyval.node) = (Node *)n; + } + break; + + case 232: +#line 1544 "gram.y" + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = OBJECT_VIEW; + (yyval.node) = (Node *)n; + } + break; + + case 233: +#line 1554 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 221: -#line 1442 "gram.y" + case 234: +#line 1555 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 222: -#line 1449 "gram.y" + case 235: +#line 1561 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; @@ -15384,8 +17264,8 @@ yyreduce: } break; - case 223: -#line 1457 "gram.y" + case 236: +#line 1569 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ColumnDefault; @@ -15395,8 +17275,8 @@ yyreduce: } break; - case 224: -#line 1466 "gram.y" + case 237: +#line 1578 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropNotNull; @@ -15405,8 +17285,8 @@ yyreduce: } break; - case 225: -#line 1474 "gram.y" + case 238: +#line 1586 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetNotNull; @@ -15415,19 +17295,19 @@ yyreduce: } break; - case 226: -#line 1482 "gram.y" + case 239: +#line 1594 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; n->name = (yyvsp[-3].str); - n->def = (Node *) (yyvsp[0].value); + n->def = (Node *) makeInteger((yyvsp[0].ival)); (yyval.node) = (Node *)n; } break; - case 227: -#line 1491 "gram.y" + case 240: +#line 1603 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStorage; @@ -15437,8 +17317,8 @@ yyreduce: } break; - case 228: -#line 1500 "gram.y" + case 241: +#line 1612 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; @@ -15448,20 +17328,20 @@ yyreduce: } break; - case 229: -#line 1512 "gram.y" + case 242: +#line 1624 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AlterColumnType; - n->name = (yyvsp[-3].str); + n->name = (yyvsp[-4].str); n->def = (Node *) (yyvsp[-1].typnam); n->transform = (yyvsp[0].node); (yyval.node) = (Node *)n; } break; - case 230: -#line 1522 "gram.y" + case 243: +#line 1634 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddConstraint; @@ -15470,8 +17350,8 @@ yyreduce: } break; - case 231: -#line 1530 "gram.y" + case 244: +#line 1642 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; @@ -15481,8 +17361,17 @@ yyreduce: } break; - case 232: -#line 1539 "gram.y" + case 245: +#line 1651 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_AddOids; + (yyval.node) = (Node *)n; + } + break; + + case 246: +#line 1658 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOids; @@ -15490,8 +17379,8 @@ yyreduce: } break; - case 233: -#line 1546 "gram.y" + case 247: +#line 1665 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ClusterOn; @@ -15500,8 +17389,8 @@ yyreduce: } break; - case 234: -#line 1554 "gram.y" + case 248: +#line 1673 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropCluster; @@ -15510,8 +17399,8 @@ yyreduce: } break; - case 235: -#line 1562 "gram.y" + case 249: +#line 1681 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrig; @@ -15520,8 +17409,8 @@ yyreduce: } break; - case 236: -#line 1570 "gram.y" + case 250: +#line 1689 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysTrig; @@ -15530,8 +17419,8 @@ yyreduce: } break; - case 237: -#line 1578 "gram.y" + case 251: +#line 1697 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaTrig; @@ -15539,9 +17428,9 @@ yyreduce: (yyval.node) = (Node *)n; } break; - - case 238: -#line 1586 "gram.y" + + case 252: +#line 1705 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigAll; @@ -15549,8 +17438,8 @@ yyreduce: } break; - case 239: -#line 1593 "gram.y" + case 253: +#line 1712 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigUser; @@ -15558,8 +17447,8 @@ yyreduce: } break; - case 240: -#line 1600 "gram.y" + case 254: +#line 1719 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrig; @@ -15568,8 +17457,8 @@ yyreduce: } break; - case 241: -#line 1608 "gram.y" + case 255: +#line 1727 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigAll; @@ -15577,8 +17466,8 @@ yyreduce: } break; - case 242: -#line 1615 "gram.y" + case 256: +#line 1734 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigUser; @@ -15586,8 +17475,8 @@ yyreduce: } break; - case 243: -#line 1622 "gram.y" + case 257: +#line 1741 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRule; @@ -15596,8 +17485,8 @@ yyreduce: } break; - case 244: -#line 1630 "gram.y" + case 258: +#line 1749 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysRule; @@ -15606,8 +17495,8 @@ yyreduce: } break; - case 245: -#line 1638 "gram.y" + case 259: +#line 1757 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaRule; @@ -15616,8 +17505,8 @@ yyreduce: } break; - case 246: -#line 1646 "gram.y" + case 260: +#line 1765 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRule; @@ -15626,8 +17515,8 @@ yyreduce: } break; - case 247: -#line 1654 "gram.y" + case 261: +#line 1773 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddInherit; @@ -15636,8 +17525,8 @@ yyreduce: } break; - case 248: -#line 1662 "gram.y" + case 262: +#line 1781 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropInherit; @@ -15646,25 +17535,8 @@ yyreduce: } break; - case 249: -#line 1669 "gram.y" - { - (yyval.node) = (yyvsp[0].node); - } - break; - - case 250: -#line 1675 "gram.y" - { (yyval.list) = list_make1((yyvsp[0].node)); } - break; - - case 251: -#line 1676 "gram.y" - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } - break; - - case 252: -#line 1683 "gram.y" + case 263: +#line 1789 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; @@ -15673,8 +17545,8 @@ yyreduce: } break; - case 253: -#line 1691 "gram.y" + case 264: +#line 1797 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetTableSpace; @@ -15683,8 +17555,8 @@ yyreduce: } break; - case 254: -#line 1699 "gram.y" + case 265: +#line 1805 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; @@ -15693,8 +17565,8 @@ yyreduce: } break; - case 255: -#line 1707 "gram.y" + case 266: +#line 1813 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; @@ -15703,8 +17575,8 @@ yyreduce: } break; - case 256: -#line 1717 "gram.y" + case 267: +#line 1823 "gram.y" { /* Treat SET DEFAULT NULL the same as DROP DEFAULT */ if (exprIsNullConstant((yyvsp[0].node))) @@ -15714,38 +17586,92 @@ yyreduce: } break; - case 257: -#line 1724 "gram.y" + case 268: +#line 1830 "gram.y" { (yyval.node) = NULL; } break; - case 258: -#line 1728 "gram.y" + case 269: +#line 1834 "gram.y" { (yyval.dbehavior) = DROP_CASCADE; } break; - case 259: -#line 1729 "gram.y" + case 270: +#line 1835 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; } break; - case 260: -#line 1730 "gram.y" + case 271: +#line 1836 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; /* default */ } break; - case 261: -#line 1734 "gram.y" + case 272: +#line 1840 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 262: -#line 1735 "gram.y" + case 273: +#line 1841 "gram.y" { (yyval.node) = NULL; } break; - case 263: -#line 1749 "gram.y" + case 274: +#line 1845 "gram.y" + { (yyval.list) = (yyvsp[-1].list); } + break; + + case 275: +#line 1848 "gram.y" + { (yyval.list) = (yyvsp[0].list); } + break; + + case 276: +#line 1849 "gram.y" + { (yyval.list) = NIL; } + break; + + case 277: +#line 1853 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } + break; + + case 278: +#line 1854 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } + break; + + case 279: +#line 1860 "gram.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node)); + } + break; + + case 280: +#line 1864 "gram.y" + { + (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL); + } + break; + + case 281: +#line 1868 "gram.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[-4].str), (yyvsp[-2].str), (Node *) (yyvsp[0].node), + DEFELEM_UNSPEC); + } + break; + + case 282: +#line 1873 "gram.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[-2].str), (yyvsp[0].str), NULL, DEFELEM_UNSPEC); + } + break; + + case 283: +#line 1888 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = (yyvsp[0].str); @@ -15753,8 +17679,8 @@ yyreduce: } break; - case 264: -#line 1755 "gram.y" + case 284: +#line 1894 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = NULL; @@ -15762,8 +17688,8 @@ yyreduce: } break; - case 265: -#line 1779 "gram.y" + case 285: +#line 1918 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = (yyvsp[-7].range); @@ -15786,8 +17712,8 @@ yyreduce: } break; - case 266: -#line 1801 "gram.y" + case 286: +#line 1940 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = NULL; @@ -15800,159 +17726,159 @@ yyreduce: } break; - case 267: -#line 1814 "gram.y" + case 287: +#line 1953 "gram.y" { (yyval.boolean) = TRUE; } break; - case 268: -#line 1815 "gram.y" + case 288: +#line 1954 "gram.y" { (yyval.boolean) = FALSE; } break; - case 269: -#line 1824 "gram.y" + case 289: +#line 1963 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 270: -#line 1825 "gram.y" + case 290: +#line 1964 "gram.y" { (yyval.str) = NULL; } break; - case 271: -#line 1826 "gram.y" + case 291: +#line 1965 "gram.y" { (yyval.str) = NULL; } break; - case 272: -#line 1832 "gram.y" + case 292: +#line 1971 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 273: -#line 1833 "gram.y" + case 293: +#line 1972 "gram.y" { (yyval.list) = NIL; } break; - case 274: -#line 1839 "gram.y" + case 294: +#line 1978 "gram.y" { (yyval.defelt) = makeDefElem("binary", (Node *)makeInteger(TRUE)); } break; - case 275: -#line 1843 "gram.y" + case 295: +#line 1982 "gram.y" { (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE)); } break; - case 276: -#line 1847 "gram.y" + case 296: +#line 1986 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[0].str))); } break; - case 277: -#line 1851 "gram.y" + case 297: +#line 1990 "gram.y" { (yyval.defelt) = makeDefElem("null", (Node *)makeString((yyvsp[0].str))); } break; - case 278: -#line 1855 "gram.y" + case 298: +#line 1994 "gram.y" { (yyval.defelt) = makeDefElem("csv", (Node *)makeInteger(TRUE)); } break; - case 279: -#line 1859 "gram.y" + case 299: +#line 1998 "gram.y" { (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(TRUE)); } break; - case 280: -#line 1863 "gram.y" + case 300: +#line 2002 "gram.y" { (yyval.defelt) = makeDefElem("quote", (Node *)makeString((yyvsp[0].str))); } break; - case 281: -#line 1867 "gram.y" + case 301: +#line 2006 "gram.y" { (yyval.defelt) = makeDefElem("escape", (Node *)makeString((yyvsp[0].str))); } break; - case 282: -#line 1871 "gram.y" + case 302: +#line 2010 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *)(yyvsp[0].list)); } break; - case 283: -#line 1875 "gram.y" + case 303: +#line 2014 "gram.y" { (yyval.defelt) = makeDefElem("force_notnull", (Node *)(yyvsp[0].list)); } break; - case 284: -#line 1884 "gram.y" + case 304: +#line 2023 "gram.y" { (yyval.defelt) = makeDefElem("binary", (Node *)makeInteger(TRUE)); } break; - case 285: -#line 1887 "gram.y" + case 305: +#line 2026 "gram.y" { (yyval.defelt) = NULL; } break; - case 286: -#line 1892 "gram.y" + case 306: +#line 2031 "gram.y" { (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE)); } break; - case 287: -#line 1895 "gram.y" + case 307: +#line 2034 "gram.y" { (yyval.defelt) = NULL; } break; - case 288: -#line 1901 "gram.y" + case 308: +#line 2040 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[0].str))); } break; - case 289: -#line 1904 "gram.y" + case 309: +#line 2043 "gram.y" { (yyval.defelt) = NULL; } break; - case 290: -#line 1908 "gram.y" + case 310: +#line 2047 "gram.y" {} break; - case 291: -#line 1909 "gram.y" + case 311: +#line 2048 "gram.y" {} break; - case 292: -#line 1922 "gram.y" + case 312: +#line 2061 "gram.y" { CreateStmt *n = makeNode(CreateStmt); (yyvsp[-7].range)->istemp = (yyvsp[-9].boolean); @@ -15967,8 +17893,8 @@ yyreduce: } break; - case 293: -#line 1936 "gram.y" + case 313: +#line 2075 "gram.y" { /* SQL99 CREATE TABLE OF <UDT> (cols) seems to be satisfied * by our inheritance capabilities. Let's try it... @@ -15986,82 +17912,82 @@ yyreduce: } break; - case 294: -#line 1960 "gram.y" + case 314: +#line 2099 "gram.y" { (yyval.boolean) = TRUE; } break; - case 295: -#line 1961 "gram.y" + case 315: +#line 2100 "gram.y" { (yyval.boolean) = TRUE; } break; - case 296: -#line 1962 "gram.y" + case 316: +#line 2101 "gram.y" { (yyval.boolean) = TRUE; } break; - case 297: -#line 1963 "gram.y" + case 317: +#line 2102 "gram.y" { (yyval.boolean) = TRUE; } break; - case 298: -#line 1964 "gram.y" + case 318: +#line 2103 "gram.y" { (yyval.boolean) = TRUE; } break; - case 299: -#line 1965 "gram.y" + case 319: +#line 2104 "gram.y" { (yyval.boolean) = TRUE; } break; - case 300: -#line 1966 "gram.y" + case 320: +#line 2105 "gram.y" { (yyval.boolean) = FALSE; } break; - case 301: -#line 1970 "gram.y" + case 321: +#line 2109 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 302: -#line 1971 "gram.y" + case 322: +#line 2110 "gram.y" { (yyval.list) = NIL; } break; - case 303: -#line 1976 "gram.y" + case 323: +#line 2115 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 304: -#line 1980 "gram.y" + case 324: +#line 2119 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 305: -#line 1986 "gram.y" + case 325: +#line 2125 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 306: -#line 1987 "gram.y" + case 326: +#line 2126 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 307: -#line 1988 "gram.y" + case 327: +#line 2127 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 308: -#line 1992 "gram.y" + case 328: +#line 2131 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[-2].str); @@ -16072,18 +17998,18 @@ yyreduce: } break; - case 309: -#line 2003 "gram.y" + case 329: +#line 2142 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } break; - case 310: -#line 2004 "gram.y" + case 330: +#line 2143 "gram.y" { (yyval.list) = NIL; } break; - case 311: -#line 2009 "gram.y" + case 331: +#line 2148 "gram.y" { switch (nodeTag((yyvsp[0].node))) { @@ -16106,18 +18032,18 @@ yyreduce: } break; - case 312: -#line 2029 "gram.y" + case 332: +#line 2168 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 313: -#line 2030 "gram.y" + case 333: +#line 2169 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 314: -#line 2050 "gram.y" + case 334: +#line 2189 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; @@ -16130,8 +18056,8 @@ yyreduce: } break; - case 315: -#line 2061 "gram.y" + case 335: +#line 2200 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NULL; @@ -16144,8 +18070,8 @@ yyreduce: } break; - case 316: -#line 2072 "gram.y" + case 336: +#line 2211 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; @@ -16159,8 +18085,8 @@ yyreduce: } break; - case 317: -#line 2084 "gram.y" + case 337: +#line 2223 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; @@ -16174,8 +18100,8 @@ yyreduce: } break; - case 318: -#line 2096 "gram.y" + case 338: +#line 2235 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; @@ -16188,8 +18114,8 @@ yyreduce: } break; - case 319: -#line 2107 "gram.y" + case 339: +#line 2246 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_DEFAULT; @@ -16210,8 +18136,8 @@ yyreduce: } break; - case 320: -#line 2126 "gram.y" + case 340: +#line 2265 "gram.y" { FkConstraint *n = makeNode(FkConstraint); n->constr_name = NULL; @@ -16227,8 +18153,8 @@ yyreduce: } break; - case 321: -#line 2155 "gram.y" + case 341: +#line 2294 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRABLE; @@ -16236,8 +18162,8 @@ yyreduce: } break; - case 322: -#line 2161 "gram.y" + case 342: +#line 2300 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_NOT_DEFERRABLE; @@ -16245,8 +18171,8 @@ yyreduce: } break; - case 323: -#line 2167 "gram.y" + case 343: +#line 2306 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRED; @@ -16254,8 +18180,8 @@ yyreduce: } break; - case 324: -#line 2173 "gram.y" + case 344: +#line 2312 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_IMMEDIATE; @@ -16263,8 +18189,8 @@ yyreduce: } break; - case 325: -#line 2191 "gram.y" + case 345: +#line 2330 "gram.y" { InhRelation *n = makeNode(InhRelation); n->relation = (yyvsp[-1].range); @@ -16273,48 +18199,48 @@ yyreduce: } break; - case 326: -#line 2200 "gram.y" + case 346: +#line 2339 "gram.y" { (yyval.list) = lappend_int((yyvsp[-1].list), (yyvsp[0].ival)); } break; - case 327: -#line 2201 "gram.y" + case 347: +#line 2340 "gram.y" { (yyval.list) = NIL; } break; - case 328: -#line 2205 "gram.y" + case 348: +#line 2344 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INCLUDING_DEFAULTS; } break; - case 329: -#line 2206 "gram.y" + case 349: +#line 2345 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_EXCLUDING_DEFAULTS; } break; - case 330: -#line 2207 "gram.y" + case 350: +#line 2346 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INCLUDING_CONSTRAINTS; } break; - case 331: -#line 2208 "gram.y" + case 351: +#line 2347 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_EXCLUDING_CONSTRAINTS; } break; - case 332: -#line 2209 "gram.y" + case 352: +#line 2348 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INCLUDING_INDEXES; } break; - case 333: -#line 2210 "gram.y" + case 353: +#line 2349 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_EXCLUDING_INDEXES; } break; - case 334: -#line 2220 "gram.y" + case 354: +#line 2359 "gram.y" { switch (nodeTag((yyvsp[0].node))) { @@ -16337,13 +18263,13 @@ yyreduce: } break; - case 335: -#line 2240 "gram.y" + case 355: +#line 2379 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 336: -#line 2245 "gram.y" + case 356: +#line 2384 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; @@ -16355,8 +18281,8 @@ yyreduce: } break; - case 337: -#line 2255 "gram.y" + case 357: +#line 2394 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; @@ -16370,8 +18296,8 @@ yyreduce: } break; - case 338: -#line 2267 "gram.y" + case 358: +#line 2406 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; @@ -16385,8 +18311,8 @@ yyreduce: } break; - case 339: -#line 2280 "gram.y" + case 359: +#line 2419 "gram.y" { FkConstraint *n = makeNode(FkConstraint); n->constr_name = NULL; @@ -16402,550 +18328,900 @@ yyreduce: } break; - case 340: -#line 2296 "gram.y" + case 360: +#line 2435 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 341: -#line 2297 "gram.y" + case 361: +#line 2436 "gram.y" { (yyval.list) = NIL; } break; - case 342: -#line 2301 "gram.y" + case 362: +#line 2440 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 343: -#line 2302 "gram.y" + case 363: +#line 2441 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 344: -#line 2306 "gram.y" + case 364: +#line 2445 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } break; - case 345: -#line 2312 "gram.y" + case 365: +#line 2451 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_FULL; } break; - case 346: -#line 2316 "gram.y" + case 366: +#line 2455 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("MATCH PARTIAL not yet implemented"))); + errmsg("MATCH PARTIAL not yet implemented"), + scanner_errposition((yylsp[-1])))); (yyval.ival) = FKCONSTR_MATCH_PARTIAL; } break; - case 347: -#line 2323 "gram.y" + case 367: +#line 2463 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_UNSPECIFIED; } break; - case 348: -#line 2327 "gram.y" + case 368: +#line 2467 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_UNSPECIFIED; } break; - case 349: -#line 2340 "gram.y" + case 369: +#line 2480 "gram.y" { (yyval.ival) = ((yyvsp[0].ival) << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } break; - case 350: -#line 2342 "gram.y" + case 370: +#line 2482 "gram.y" { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[0].ival) & 0xFF); } break; - case 351: -#line 2344 "gram.y" - { (yyval.ival) = ((yyvsp[-1].ival) << 8) | ((yyvsp[0].ival) & 0xFF); } + case 371: +#line 2484 "gram.y" + { (yyval.ival) = ((yyvsp[-1].ival) << 8) | ((yyvsp[0].ival) & 0xFF); } + break; + + case 372: +#line 2486 "gram.y" + { (yyval.ival) = ((yyvsp[0].ival) << 8) | ((yyvsp[-1].ival) & 0xFF); } + break; + + case 373: +#line 2488 "gram.y" + { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } + break; + + case 374: +#line 2491 "gram.y" + { (yyval.ival) = (yyvsp[0].ival); } + break; + + case 375: +#line 2494 "gram.y" + { (yyval.ival) = (yyvsp[0].ival); } + break; + + case 376: +#line 2498 "gram.y" + { (yyval.ival) = FKCONSTR_ACTION_NOACTION; } + break; + + case 377: +#line 2499 "gram.y" + { (yyval.ival) = FKCONSTR_ACTION_RESTRICT; } + break; + + case 378: +#line 2500 "gram.y" + { (yyval.ival) = FKCONSTR_ACTION_CASCADE; } + break; + + case 379: +#line 2501 "gram.y" + { (yyval.ival) = FKCONSTR_ACTION_SETNULL; } + break; + + case 380: +#line 2502 "gram.y" + { (yyval.ival) = FKCONSTR_ACTION_SETDEFAULT; } + break; + + case 381: +#line 2505 "gram.y" + { (yyval.list) = (yyvsp[-1].list); } + break; + + case 382: +#line 2506 "gram.y" + { (yyval.list) = NIL; } + break; + + case 383: +#line 2511 "gram.y" + { (yyval.list) = (yyvsp[0].list); } + break; + + case 384: +#line 2512 "gram.y" + { (yyval.list) = list_make1(defWithOids(true)); } + break; + + case 385: +#line 2513 "gram.y" + { (yyval.list) = list_make1(defWithOids(false)); } + break; + + case 386: +#line 2514 "gram.y" + { (yyval.list) = NIL; } + break; + + case 387: +#line 2517 "gram.y" + { (yyval.oncommit) = ONCOMMIT_DROP; } + break; + + case 388: +#line 2518 "gram.y" + { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; } + break; + + case 389: +#line 2519 "gram.y" + { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; } + break; + + case 390: +#line 2520 "gram.y" + { (yyval.oncommit) = ONCOMMIT_NOOP; } + break; + + case 391: +#line 2523 "gram.y" + { (yyval.str) = (yyvsp[0].str); } + break; + + case 392: +#line 2524 "gram.y" + { (yyval.str) = NULL; } + break; + + case 393: +#line 2527 "gram.y" + { (yyval.str) = (yyvsp[0].str); } + break; + + case 394: +#line 2528 "gram.y" + { (yyval.str) = NULL; } + break; + + case 395: +#line 2539 "gram.y" + { + /* + * When the SelectStmt is a set-operation tree, we must + * stuff the INTO information into the leftmost component + * Select, because that's where analyze.c will expect + * to find it. Similarly, the output column names must + * be attached to that Select's target list. + */ + SelectStmt *n = findLeftmostSelect((SelectStmt *) (yyvsp[-1].node)); + if (n->intoClause != NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("CREATE TABLE AS cannot specify INTO"), + scanner_errposition(exprLocation((Node *) n->intoClause)))); + (yyvsp[-3].into)->rel->istemp = (yyvsp[-5].boolean); + n->intoClause = (yyvsp[-3].into); + /* Implement WITH NO DATA by forcing top-level LIMIT 0 */ + if (!(yyvsp[0].boolean)) + ((SelectStmt *) (yyvsp[-1].node))->limitCount = makeIntConst(0, -1); + (yyval.node) = (yyvsp[-1].node); + } + break; + + case 396: +#line 2564 "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); + } + break; + + case 397: +#line 2575 "gram.y" + { (yyval.list) = (yyvsp[-1].list); } + break; + + case 398: +#line 2576 "gram.y" + { (yyval.list) = NIL; } + break; + + case 399: +#line 2580 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } + break; + + case 400: +#line 2581 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } + break; + + case 401: +#line 2586 "gram.y" + { + ColumnDef *n = makeNode(ColumnDef); + n->colname = (yyvsp[0].str); + n->typename = NULL; + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->raw_default = NULL; + n->cooked_default = NULL; + n->constraints = NIL; + (yyval.node) = (Node *)n; + } + break; + + case 402: +#line 2601 "gram.y" + { (yyval.boolean) = TRUE; } + break; + + case 403: +#line 2602 "gram.y" + { (yyval.boolean) = FALSE; } + break; + + case 404: +#line 2603 "gram.y" + { (yyval.boolean) = TRUE; } + break; + + case 405: +#line 2617 "gram.y" + { + CreateSeqStmt *n = makeNode(CreateSeqStmt); + (yyvsp[-1].range)->istemp = (yyvsp[-3].boolean); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + (yyval.node) = (Node *)n; + } + break; + + case 406: +#line 2628 "gram.y" + { + AlterSeqStmt *n = makeNode(AlterSeqStmt); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + (yyval.node) = (Node *)n; + } + break; + + case 407: +#line 2636 "gram.y" + { (yyval.list) = (yyvsp[0].list); } + break; + + case 408: +#line 2637 "gram.y" + { (yyval.list) = NIL; } + break; + + case 409: +#line 2640 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } + break; + + case 410: +#line 2641 "gram.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 352: -#line 2346 "gram.y" - { (yyval.ival) = ((yyvsp[0].ival) << 8) | ((yyvsp[-1].ival) & 0xFF); } + case 411: +#line 2645 "gram.y" + { + (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[0].value)); + } break; - case 353: -#line 2348 "gram.y" - { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } + case 412: +#line 2649 "gram.y" + { + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(TRUE)); + } break; - case 354: -#line 2351 "gram.y" - { (yyval.ival) = (yyvsp[0].ival); } + case 413: +#line 2653 "gram.y" + { + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(FALSE)); + } break; - case 355: -#line 2354 "gram.y" - { (yyval.ival) = (yyvsp[0].ival); } + case 414: +#line 2657 "gram.y" + { + (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[0].value)); + } break; - case 356: -#line 2358 "gram.y" - { (yyval.ival) = FKCONSTR_ACTION_NOACTION; } + case 415: +#line 2661 "gram.y" + { + (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[0].value)); + } break; - case 357: -#line 2359 "gram.y" - { (yyval.ival) = FKCONSTR_ACTION_RESTRICT; } + case 416: +#line 2665 "gram.y" + { + (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[0].value)); + } break; - case 358: -#line 2360 "gram.y" - { (yyval.ival) = FKCONSTR_ACTION_CASCADE; } + case 417: +#line 2669 "gram.y" + { + (yyval.defelt) = makeDefElem("maxvalue", NULL); + } break; - case 359: -#line 2361 "gram.y" - { (yyval.ival) = FKCONSTR_ACTION_SETNULL; } + case 418: +#line 2673 "gram.y" + { + (yyval.defelt) = makeDefElem("minvalue", NULL); + } break; - case 360: -#line 2362 "gram.y" - { (yyval.ival) = FKCONSTR_ACTION_SETDEFAULT; } + case 419: +#line 2677 "gram.y" + { + (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[0].list)); + } break; - case 361: -#line 2365 "gram.y" - { (yyval.list) = (yyvsp[-1].list); } + case 420: +#line 2681 "gram.y" + { + (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[0].value)); + } break; - case 362: -#line 2366 "gram.y" - { (yyval.list) = NIL; } + case 421: +#line 2685 "gram.y" + { + (yyval.defelt) = makeDefElem("restart", NULL); + } break; - case 363: -#line 2371 "gram.y" - { (yyval.list) = (yyvsp[0].list); } + case 422: +#line 2689 "gram.y" + { + (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[0].value)); + } break; - case 364: -#line 2372 "gram.y" - { (yyval.list) = list_make1(defWithOids(true)); } + case 423: +#line 2694 "gram.y" + {} break; - case 365: -#line 2373 "gram.y" - { (yyval.list) = list_make1(defWithOids(false)); } + case 424: +#line 2695 "gram.y" + {} break; - case 366: -#line 2374 "gram.y" - { (yyval.list) = NIL; } + case 425: +#line 2699 "gram.y" + { (yyval.value) = makeFloat((yyvsp[0].str)); } break; - case 367: -#line 2377 "gram.y" - { (yyval.oncommit) = ONCOMMIT_DROP; } + case 426: +#line 2701 "gram.y" + { + (yyval.value) = makeFloat((yyvsp[0].str)); + doNegateFloat((yyval.value)); + } break; - case 368: -#line 2378 "gram.y" - { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; } + case 427: +#line 2705 "gram.y" + { (yyval.value) = makeInteger((yyvsp[0].ival)); } break; - case 369: -#line 2379 "gram.y" - { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; } + case 428: +#line 2718 "gram.y" + { + CreatePLangStmt *n = makeNode(CreatePLangStmt); + n->plname = (yyvsp[0].str); + /* parameters are all to be supplied by system */ + n->plhandler = NIL; + n->plvalidator = NIL; + n->pltrusted = false; + (yyval.node) = (Node *)n; + } break; - case 370: -#line 2380 "gram.y" - { (yyval.oncommit) = ONCOMMIT_NOOP; } + case 429: +#line 2729 "gram.y" + { + CreatePLangStmt *n = makeNode(CreatePLangStmt); + n->plname = (yyvsp[-4].str); + n->plhandler = (yyvsp[-2].list); + n->plvalidator = (yyvsp[-1].list); + n->pltrusted = (yyvsp[-7].boolean); + /* LANCOMPILER is now ignored entirely */ + (yyval.node) = (Node *)n; + } break; - case 371: -#line 2383 "gram.y" - { (yyval.str) = (yyvsp[0].str); } + case 430: +#line 2741 "gram.y" + { (yyval.boolean) = TRUE; } break; - case 372: -#line 2384 "gram.y" - { (yyval.str) = NULL; } + case 431: +#line 2742 "gram.y" + { (yyval.boolean) = FALSE; } break; - case 373: -#line 2387 "gram.y" - { (yyval.str) = (yyvsp[0].str); } + case 432: +#line 2750 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 374: -#line 2388 "gram.y" - { (yyval.str) = NULL; } + case 433: +#line 2751 "gram.y" + { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } break; - case 375: -#line 2399 "gram.y" - { - /* - * When the SelectStmt is a set-operation tree, we must - * stuff the INTO information into the leftmost component - * Select, because that's where analyze.c will expect - * to find it. Similarly, the output column names must - * be attached to that Select's target list. - */ - SelectStmt *n = findLeftmostSelect((SelectStmt *) (yyvsp[0].node)); - if (n->intoClause != NULL) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("CREATE TABLE AS cannot specify INTO"))); - (yyvsp[-2].into)->rel->istemp = (yyvsp[-4].boolean); - n->intoClause = (yyvsp[-2].into); - (yyval.node) = (yyvsp[0].node); - } + case 434: +#line 2755 "gram.y" + { (yyval.list) = (yyvsp[0].list); } break; - case 376: -#line 2420 "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); - } + case 435: +#line 2756 "gram.y" + { (yyval.list) = NIL; } break; - case 377: -#line 2431 "gram.y" - { (yyval.list) = (yyvsp[-1].list); } + case 436: +#line 2760 "gram.y" + { (yyval.list) = (yyvsp[0].list); } break; - case 378: -#line 2432 "gram.y" + case 437: +#line 2761 "gram.y" { (yyval.list) = NIL; } break; - case 379: -#line 2436 "gram.y" - { (yyval.list) = list_make1((yyvsp[0].node)); } + case 438: +#line 2765 "gram.y" + { (yyval.str) = (yyvsp[0].str); } break; - case 380: -#line 2437 "gram.y" - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } + case 439: +#line 2766 "gram.y" + { (yyval.str) = NULL; } break; - case 381: -#line 2442 "gram.y" + case 440: +#line 2771 "gram.y" { - ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[0].str); - n->typename = NULL; - n->inhcount = 0; - n->is_local = true; - n->is_not_null = false; - n->raw_default = NULL; - n->cooked_default = NULL; - n->constraints = NIL; + DropPLangStmt *n = makeNode(DropPLangStmt); + n->plname = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = false; (yyval.node) = (Node *)n; } break; - case 382: -#line 2467 "gram.y" + case 441: +#line 2779 "gram.y" { - CreateSeqStmt *n = makeNode(CreateSeqStmt); - (yyvsp[-1].range)->istemp = (yyvsp[-3].boolean); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + DropPLangStmt *n = makeNode(DropPLangStmt); + n->plname = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = true; (yyval.node) = (Node *)n; } break; - case 383: -#line 2478 "gram.y" + case 442: +#line 2789 "gram.y" + {} + break; + + case 443: +#line 2790 "gram.y" + {} + break; + + case 444: +#line 2801 "gram.y" { - AlterSeqStmt *n = makeNode(AlterSeqStmt); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); - (yyval.node) = (Node *)n; + CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); + n->tablespacename = (yyvsp[-3].str); + n->owner = (yyvsp[-2].str); + n->location = (yyvsp[0].str); + (yyval.node) = (Node *) n; } break; - case 384: -#line 2486 "gram.y" - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } + case 445: +#line 2810 "gram.y" + { (yyval.str) = (yyvsp[0].str); } break; - case 385: -#line 2487 "gram.y" - { (yyval.list) = NIL; } + case 446: +#line 2811 "gram.y" + { (yyval.str) = NULL; } break; - case 386: -#line 2491 "gram.y" + case 447: +#line 2825 "gram.y" { - (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[0].value)); + DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); + n->tablespacename = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (Node *) n; } break; - case 387: -#line 2495 "gram.y" + case 448: +#line 2832 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(TRUE)); + DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); + n->tablespacename = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (Node *) n; } break; - case 388: -#line 2499 "gram.y" + case 449: +#line 2848 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(FALSE)); + CreateFdwStmt *n = makeNode(CreateFdwStmt); + n->fdwname = (yyvsp[-2].str); + n->validator = (yyvsp[-1].list); + n->options = (yyvsp[0].list); + (yyval.node) = (Node *) n; } break; - case 389: -#line 2503 "gram.y" + case 450: +#line 2865 "gram.y" { - (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[0].value)); + DropFdwStmt *n = makeNode(DropFdwStmt); + n->fdwname = (yyvsp[-1].str); + n->missing_ok = false; + n->behavior = (yyvsp[0].dbehavior); + (yyval.node) = (Node *) n; } break; - case 390: -#line 2507 "gram.y" + case 451: +#line 2873 "gram.y" { - (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[0].value)); + DropFdwStmt *n = makeNode(DropFdwStmt); + n->fdwname = (yyvsp[-1].str); + n->missing_ok = true; + n->behavior = (yyvsp[0].dbehavior); + (yyval.node) = (Node *) n; } break; - case 391: -#line 2511 "gram.y" + case 452: +#line 2890 "gram.y" { - (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[0].value)); + AlterFdwStmt *n = makeNode(AlterFdwStmt); + n->fdwname = (yyvsp[-2].str); + n->validator = (yyvsp[-1].list); + n->change_validator = true; + n->options = (yyvsp[0].list); + (yyval.node) = (Node *) n; } break; - case 392: -#line 2515 "gram.y" + case 453: +#line 2899 "gram.y" { - (yyval.defelt) = makeDefElem("maxvalue", NULL); + AlterFdwStmt *n = makeNode(AlterFdwStmt); + n->fdwname = (yyvsp[-1].str); + n->validator = (yyvsp[0].list); + n->change_validator = true; + (yyval.node) = (Node *) n; } break; - case 393: -#line 2519 "gram.y" + case 454: +#line 2907 "gram.y" { - (yyval.defelt) = makeDefElem("minvalue", NULL); + AlterFdwStmt *n = makeNode(AlterFdwStmt); + n->fdwname = (yyvsp[-1].str); + n->options = (yyvsp[0].list); + (yyval.node) = (Node *) n; } break; - case 394: -#line 2523 "gram.y" - { - (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[0].list)); - } + case 455: +#line 2917 "gram.y" + { (yyval.list) = (yyvsp[-1].list); } break; - case 395: -#line 2527 "gram.y" + case 456: +#line 2918 "gram.y" + { (yyval.list) = NIL; } + break; + + case 457: +#line 2923 "gram.y" { - (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[0].value)); + (yyval.list) = list_make1((yyvsp[0].defelt)); } break; - case 396: -#line 2531 "gram.y" + case 458: +#line 2927 "gram.y" { - (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[0].value)); + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } break; - case 397: -#line 2536 "gram.y" - {} + case 459: +#line 2934 "gram.y" + { (yyval.list) = (yyvsp[-1].list); } break; - case 398: -#line 2537 "gram.y" - {} + case 460: +#line 2939 "gram.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } break; - case 399: -#line 2541 "gram.y" - { (yyval.value) = (yyvsp[0].value); } + case 461: +#line 2943 "gram.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } break; - case 400: -#line 2542 "gram.y" - { (yyval.value) = (yyvsp[0].value); } + case 462: +#line 2950 "gram.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + } break; - case 401: -#line 2545 "gram.y" - { (yyval.value) = makeFloat((yyvsp[0].str)); } + case 463: +#line 2954 "gram.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt)->defaction = DEFELEM_SET; + } break; - case 402: -#line 2547 "gram.y" + case 464: +#line 2959 "gram.y" { - (yyval.value) = makeFloat((yyvsp[0].str)); - doNegateFloat((yyval.value)); + (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt)->defaction = DEFELEM_ADD; } break; - case 403: -#line 2553 "gram.y" - { (yyval.value) = makeInteger((yyvsp[0].ival)); } + case 465: +#line 2964 "gram.y" + { + (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[0].str), NULL, DEFELEM_DROP); + } break; - case 404: -#line 2566 "gram.y" + case 466: +#line 2971 "gram.y" { - CreatePLangStmt *n = makeNode(CreatePLangStmt); - n->plname = (yyvsp[0].str); - /* parameters are all to be supplied by system */ - n->plhandler = NIL; - n->plvalidator = NIL; - n->pltrusted = false; - (yyval.node) = (Node *)n; - } + (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node)); + } break; - case 405: -#line 2577 "gram.y" - { - CreatePLangStmt *n = makeNode(CreatePLangStmt); - n->plname = (yyvsp[-4].str); - n->plhandler = (yyvsp[-2].list); - n->plvalidator = (yyvsp[-1].list); - n->pltrusted = (yyvsp[-7].boolean); - /* LANCOMPILER is now ignored entirely */ - (yyval.node) = (Node *)n; - } + case 467: +#line 2977 "gram.y" + { (yyval.str) = (yyvsp[0].str); } break; - case 406: -#line 2589 "gram.y" - { (yyval.boolean) = TRUE; } + case 468: +#line 2982 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } break; - case 407: -#line 2590 "gram.y" - { (yyval.boolean) = FALSE; } + case 469: +#line 2994 "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); + (yyval.node) = (Node *) n; + } break; - case 408: -#line 2598 "gram.y" - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } + case 470: +#line 3006 "gram.y" + { (yyval.str) = (yyvsp[0].str); } break; - case 409: -#line 2599 "gram.y" - { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } + case 471: +#line 3007 "gram.y" + { (yyval.str) = NULL; } break; - case 410: -#line 2603 "gram.y" - { (yyval.list) = (yyvsp[0].list); } + case 472: +#line 3012 "gram.y" + { (yyval.str) = (yyvsp[0].str); } break; - case 411: -#line 2604 "gram.y" - { (yyval.list) = NIL; } + case 473: +#line 3013 "gram.y" + { (yyval.str) = NULL; } break; - case 412: -#line 2608 "gram.y" + case 474: +#line 3017 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 413: -#line 2609 "gram.y" + case 475: +#line 3018 "gram.y" { (yyval.str) = NULL; } break; - case 414: -#line 2614 "gram.y" + case 476: +#line 3029 "gram.y" { - DropPLangStmt *n = makeNode(DropPLangStmt); - n->plname = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + DropForeignServerStmt *n = makeNode(DropForeignServerStmt); + n->servername = (yyvsp[-1].str); n->missing_ok = false; - (yyval.node) = (Node *)n; + n->behavior = (yyvsp[0].dbehavior); + (yyval.node) = (Node *) n; } break; - case 415: -#line 2622 "gram.y" + case 477: +#line 3037 "gram.y" { - DropPLangStmt *n = makeNode(DropPLangStmt); - n->plname = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + DropForeignServerStmt *n = makeNode(DropForeignServerStmt); + n->servername = (yyvsp[-1].str); n->missing_ok = true; - (yyval.node) = (Node *)n; + n->behavior = (yyvsp[0].dbehavior); + (yyval.node) = (Node *) n; } break; - case 416: -#line 2632 "gram.y" - {} + case 478: +#line 3054 "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; + (yyval.node) = (Node *) n; + } break; - case 417: -#line 2633 "gram.y" - {} + case 479: +#line 3063 "gram.y" + { + AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); + n->servername = (yyvsp[-1].str); + n->version = (yyvsp[0].str); + n->has_version = true; + (yyval.node) = (Node *) n; + } break; - case 418: -#line 2644 "gram.y" + case 480: +#line 3071 "gram.y" { - CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); - n->tablespacename = (yyvsp[-3].str); - n->owner = (yyvsp[-2].str); - n->location = (yyvsp[0].str); + AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); + n->servername = (yyvsp[-1].str); + n->options = (yyvsp[0].list); (yyval.node) = (Node *) n; } break; - case 419: -#line 2653 "gram.y" - { (yyval.str) = (yyvsp[0].str); } + case 481: +#line 3087 "gram.y" + { + CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); + n->username = (yyvsp[-3].str); + n->servername = (yyvsp[-1].str); + n->options = (yyvsp[0].list); + (yyval.node) = (Node *) n; + } break; - case 420: -#line 2654 "gram.y" - { (yyval.str) = NULL; } + case 482: +#line 3098 "gram.y" + { (yyval.str) = "current_user"; } break; - case 421: -#line 2668 "gram.y" + case 483: +#line 3099 "gram.y" + { (yyval.str) = "current_user"; } + break; + + case 484: +#line 3100 "gram.y" + { (yyval.str) = (strcmp((yyvsp[0].str), "public") == 0) ? NULL : (yyvsp[0].str); } + break; + + case 485: +#line 3111 "gram.y" { - DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); - n->tablespacename = (yyvsp[0].str); + DropUserMappingStmt *n = makeNode(DropUserMappingStmt); + n->username = (yyvsp[-2].str); + n->servername = (yyvsp[0].str); n->missing_ok = false; (yyval.node) = (Node *) n; } break; - case 422: -#line 2675 "gram.y" + case 486: +#line 3119 "gram.y" { - DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); - n->tablespacename = (yyvsp[0].str); + DropUserMappingStmt *n = makeNode(DropUserMappingStmt); + n->username = (yyvsp[-2].str); + n->servername = (yyvsp[0].str); n->missing_ok = true; (yyval.node) = (Node *) n; } break; - case 423: -#line 2695 "gram.y" + case 487: +#line 3136 "gram.y" + { + AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); + n->username = (yyvsp[-3].str); + n->servername = (yyvsp[-1].str); + n->options = (yyvsp[0].list); + (yyval.node) = (Node *) n; + } + break; + + case 488: +#line 3157 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = (yyvsp[-11].str); @@ -16954,7 +19230,7 @@ yyreduce: n->args = (yyvsp[-1].list); n->before = (yyvsp[-10].boolean); n->row = (yyvsp[-6].boolean); - memcpy(n->actions, (yyvsp[-9].str), 4); + n->events = (yyvsp[-9].ival); n->isconstraint = FALSE; n->deferrable = FALSE; n->initdeferred = FALSE; @@ -16963,8 +19239,8 @@ yyreduce: } break; - case 424: -#line 2715 "gram.y" + case 489: +#line 3177 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = (yyvsp[-15].str); @@ -16973,77 +19249,68 @@ yyreduce: n->args = (yyvsp[-1].list); n->before = FALSE; n->row = TRUE; - memcpy(n->actions, (yyvsp[-13].str), 4); + n->events = (yyvsp[-13].ival); n->isconstraint = TRUE; n->deferrable = ((yyvsp[-9].ival) & 1) != 0; n->initdeferred = ((yyvsp[-9].ival) & 2) != 0; - n->constrrel = (yyvsp[-10].range); (yyval.node) = (Node *)n; } break; - case 425: -#line 2734 "gram.y" + case 490: +#line 3195 "gram.y" { (yyval.boolean) = TRUE; } break; - case 426: -#line 2735 "gram.y" + case 491: +#line 3196 "gram.y" { (yyval.boolean) = FALSE; } break; - case 427: -#line 2740 "gram.y" - { - char *e = palloc(4); - e[0] = (yyvsp[0].chr); e[1] = '\0'; - (yyval.str) = e; - } + case 492: +#line 3201 "gram.y" + { (yyval.ival) = (yyvsp[0].ival); } break; - case 428: -#line 2746 "gram.y" + case 493: +#line 3203 "gram.y" { - char *e = palloc(4); - e[0] = (yyvsp[-2].chr); e[1] = (yyvsp[0].chr); e[2] = '\0'; - (yyval.str) = e; + if ((yyvsp[-2].ival) & (yyvsp[0].ival)) + yyerror("duplicate trigger events specified"); + (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } break; - case 429: -#line 2752 "gram.y" - { - char *e = palloc(4); - e[0] = (yyvsp[-4].chr); e[1] = (yyvsp[-2].chr); e[2] = (yyvsp[0].chr); e[3] = '\0'; - (yyval.str) = e; - } + case 494: +#line 3211 "gram.y" + { (yyval.ival) = TRIGGER_TYPE_INSERT; } break; - case 430: -#line 2760 "gram.y" - { (yyval.chr) = 'i'; } + case 495: +#line 3212 "gram.y" + { (yyval.ival) = TRIGGER_TYPE_DELETE; } break; - case 431: -#line 2761 "gram.y" - { (yyval.chr) = 'd'; } + case 496: +#line 3213 "gram.y" + { (yyval.ival) = TRIGGER_TYPE_UPDATE; } break; - case 432: -#line 2762 "gram.y" - { (yyval.chr) = 'u'; } + case 497: +#line 3214 "gram.y" + { (yyval.ival) = TRIGGER_TYPE_TRUNCATE; } break; - case 433: -#line 2767 "gram.y" + case 498: +#line 3219 "gram.y" { (yyval.boolean) = (yyvsp[0].boolean); } break; - case 434: -#line 2771 "gram.y" + case 499: +#line 3223 "gram.y" { /* * If ROW/STATEMENT not specified, default to @@ -17053,43 +19320,43 @@ yyreduce: } break; - case 435: -#line 2781 "gram.y" + case 500: +#line 3233 "gram.y" {} break; - case 436: -#line 2782 "gram.y" + case 501: +#line 3234 "gram.y" {} break; - case 437: -#line 2786 "gram.y" + case 502: +#line 3238 "gram.y" { (yyval.boolean) = TRUE; } break; - case 438: -#line 2787 "gram.y" + case 503: +#line 3239 "gram.y" { (yyval.boolean) = FALSE; } break; - case 439: -#line 2791 "gram.y" + case 504: +#line 3243 "gram.y" { (yyval.list) = list_make1((yyvsp[0].value)); } break; - case 440: -#line 2792 "gram.y" + case 505: +#line 3244 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].value)); } break; - case 441: -#line 2793 "gram.y" + case 506: +#line 3245 "gram.y" { (yyval.list) = NIL; } break; - case 442: -#line 2798 "gram.y" + case 507: +#line 3250 "gram.y" { char buf[64]; snprintf(buf, sizeof(buf), "%d", (yyvsp[0].ival)); @@ -17097,59 +19364,60 @@ yyreduce: } break; - case 443: -#line 2803 "gram.y" + case 508: +#line 3255 "gram.y" { (yyval.value) = makeString((yyvsp[0].str)); } break; - case 444: -#line 2804 "gram.y" + case 509: +#line 3256 "gram.y" { (yyval.value) = makeString((yyvsp[0].str)); } break; - case 445: -#line 2805 "gram.y" + case 510: +#line 3257 "gram.y" { (yyval.value) = makeString((yyvsp[0].str)); } break; - case 446: -#line 2806 "gram.y" + case 511: +#line 3258 "gram.y" { (yyval.value) = makeString((yyvsp[0].str)); } break; - case 447: -#line 2807 "gram.y" + case 512: +#line 3259 "gram.y" { (yyval.value) = makeString((yyvsp[0].str)); } break; - case 448: -#line 2811 "gram.y" + case 513: +#line 3263 "gram.y" { (yyval.range) = (yyvsp[0].range); } break; - case 449: -#line 2812 "gram.y" + case 514: +#line 3264 "gram.y" { (yyval.range) = NULL; } break; - case 450: -#line 2817 "gram.y" + case 515: +#line 3269 "gram.y" { (yyval.ival) = (yyvsp[0].ival); } break; - case 451: -#line 2819 "gram.y" + case 516: +#line 3271 "gram.y" { if ((yyvsp[-1].ival) == 0 && (yyvsp[0].ival) != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"))); + errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), + scanner_errposition((yylsp[-1])))); (yyval.ival) = (yyvsp[-1].ival) | (yyvsp[0].ival); } break; - case 452: -#line 2827 "gram.y" + case 517: +#line 3280 "gram.y" { if ((yyvsp[0].ival) != 0) (yyval.ival) = 3; @@ -17158,44 +19426,45 @@ yyreduce: } break; - case 453: -#line 2834 "gram.y" + case 518: +#line 3287 "gram.y" { if ((yyvsp[0].ival) == 0 && (yyvsp[-1].ival) != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"))); + errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), + scanner_errposition((yylsp[-1])))); (yyval.ival) = (yyvsp[-1].ival) | (yyvsp[0].ival); } break; - case 454: -#line 2842 "gram.y" + case 519: +#line 3296 "gram.y" { (yyval.ival) = 0; } break; - case 455: -#line 2846 "gram.y" + case 520: +#line 3300 "gram.y" { (yyval.ival) = 0; } break; - case 456: -#line 2847 "gram.y" + case 521: +#line 3301 "gram.y" { (yyval.ival) = 1; } break; - case 457: -#line 2851 "gram.y" + case 522: +#line 3305 "gram.y" { (yyval.ival) = 0; } break; - case 458: -#line 2852 "gram.y" + case 523: +#line 3306 "gram.y" { (yyval.ival) = 2; } break; - case 459: -#line 2858 "gram.y" + case 524: +#line 3312 "gram.y" { DropPropertyStmt *n = makeNode(DropPropertyStmt); n->relation = (yyvsp[-1].range); @@ -17207,8 +19476,8 @@ yyreduce: } break; - case 460: -#line 2868 "gram.y" + case 525: +#line 3322 "gram.y" { DropPropertyStmt *n = makeNode(DropPropertyStmt); n->relation = (yyvsp[-1].range); @@ -17220,8 +19489,8 @@ yyreduce: } break; - case 461: -#line 2891 "gram.y" + case 526: +#line 3345 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = (yyvsp[-5].str); @@ -17238,8 +19507,8 @@ yyreduce: } break; - case 462: -#line 2909 "gram.y" + case 527: +#line 3363 "gram.y" { DropPropertyStmt *n = makeNode(DropPropertyStmt); n->relation = NULL; @@ -17253,8 +19522,8 @@ yyreduce: } break; - case 463: -#line 2932 "gram.y" + case 528: +#line 3386 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; @@ -17266,8 +19535,8 @@ yyreduce: } break; - case 464: -#line 2942 "gram.y" + case 529: +#line 3396 "gram.y" { /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ DefineStmt *n = makeNode(DefineStmt); @@ -17280,8 +19549,8 @@ yyreduce: } break; - case 465: -#line 2953 "gram.y" + case 530: +#line 3407 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_OPERATOR; @@ -17293,8 +19562,8 @@ yyreduce: } break; - case 466: -#line 2963 "gram.y" + case 531: +#line 3417 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; @@ -17306,8 +19575,8 @@ yyreduce: } break; - case 467: -#line 2973 "gram.y" + case 532: +#line 3427 "gram.y" { /* Shell type (identified by lack of definition) */ DefineStmt *n = makeNode(DefineStmt); @@ -17320,8 +19589,8 @@ yyreduce: } break; - case 468: -#line 2984 "gram.y" + case 533: +#line 3438 "gram.y" { CompositeTypeStmt *n = makeNode(CompositeTypeStmt); RangeVar *r = makeNode(RangeVar); @@ -17348,17 +19617,19 @@ yyreduce: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", - NameListToString((yyvsp[-4].list))))); + NameListToString((yyvsp[-4].list))), + scanner_errposition((yylsp[-4])))); break; } + r->location = (yylsp[-4]); n->typevar = r; n->coldeflist = (yyvsp[-1].list); (yyval.node) = (Node *)n; } break; - case 469: -#line 3018 "gram.y" + case 534: +#line 3474 "gram.y" { CreateEnumStmt *n = makeNode(CreateEnumStmt); n->typename = (yyvsp[-5].list); @@ -17367,8 +19638,8 @@ yyreduce: } break; - case 470: -#line 3025 "gram.y" + case 535: +#line 3481 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSPARSER; @@ -17379,8 +19650,8 @@ yyreduce: } break; - case 471: -#line 3034 "gram.y" + case 536: +#line 3490 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSDICTIONARY; @@ -17391,8 +19662,8 @@ yyreduce: } break; - case 472: -#line 3043 "gram.y" + case 537: +#line 3499 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSTEMPLATE; @@ -17403,8 +19674,8 @@ yyreduce: } break; - case 473: -#line 3052 "gram.y" + case 538: +#line 3508 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSCONFIGURATION; @@ -17415,104 +19686,104 @@ yyreduce: } break; - case 474: -#line 3062 "gram.y" + case 539: +#line 3518 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 475: -#line 3065 "gram.y" + case 540: +#line 3521 "gram.y" { (yyval.list) = list_make1((yyvsp[0].defelt)); } break; - case 476: -#line 3066 "gram.y" + case 541: +#line 3522 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } break; - case 477: -#line 3070 "gram.y" + case 542: +#line 3526 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)(yyvsp[0].node)); + (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node)); } break; - case 478: -#line 3074 "gram.y" + case 543: +#line 3530 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL); } break; - case 479: -#line 3080 "gram.y" + case 544: +#line 3536 "gram.y" { (yyval.node) = (Node *)(yyvsp[0].typnam); } break; - case 480: -#line 3081 "gram.y" + case 545: +#line 3537 "gram.y" { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[0].keyword))); } break; - case 481: -#line 3082 "gram.y" + case 546: +#line 3538 "gram.y" { (yyval.node) = (Node *)(yyvsp[0].list); } break; - case 482: -#line 3083 "gram.y" + case 547: +#line 3539 "gram.y" { (yyval.node) = (Node *)(yyvsp[0].value); } break; - case 483: -#line 3084 "gram.y" + case 548: +#line 3540 "gram.y" { (yyval.node) = (Node *)makeString((yyvsp[0].str)); } break; - case 484: -#line 3087 "gram.y" + case 549: +#line 3543 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 485: -#line 3088 "gram.y" + case 550: +#line 3544 "gram.y" { (yyval.list) = NIL; } break; - case 486: -#line 3091 "gram.y" + case 551: +#line 3547 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 487: -#line 3094 "gram.y" + case 552: +#line 3550 "gram.y" { (yyval.list) = list_make1((yyvsp[0].defelt)); } break; - case 488: -#line 3095 "gram.y" + case 553: +#line 3551 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } break; - case 489: -#line 3099 "gram.y" + case 554: +#line 3560 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)(yyvsp[0].node)); } break; - case 490: -#line 3105 "gram.y" + case 555: +#line 3566 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 491: -#line 3107 "gram.y" + case 556: +#line 3568 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } break; - case 492: -#line 3125 "gram.y" + case 557: +#line 3586 "gram.y" { CreateOpClassStmt *n = makeNode(CreateOpClassStmt); n->opclassname = (yyvsp[-9].list); @@ -17525,44 +19796,42 @@ yyreduce: } break; - case 493: -#line 3138 "gram.y" + case 558: +#line 3599 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 494: -#line 3139 "gram.y" + case 559: +#line 3600 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 495: -#line 3144 "gram.y" + case 560: +#line 3605 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; n->name = (yyvsp[-1].list); n->args = NIL; n->number = (yyvsp[-2].ival); - n->recheck = (yyvsp[0].boolean); (yyval.node) = (Node *) n; } break; - case 496: -#line 3154 "gram.y" + case 561: +#line 3614 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; - n->name = (yyvsp[-4].list); - n->args = (yyvsp[-2].list); - n->number = (yyvsp[-5].ival); - n->recheck = (yyvsp[0].boolean); + n->name = (yyvsp[-2].list); + n->args = (yyvsp[-1].list); + n->number = (yyvsp[-3].ival); (yyval.node) = (Node *) n; } break; - case 497: -#line 3164 "gram.y" + case 562: +#line 3623 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; @@ -17573,8 +19842,8 @@ yyreduce: } break; - case 498: -#line 3173 "gram.y" + case 563: +#line 3632 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; @@ -17586,8 +19855,8 @@ yyreduce: } break; - case 499: -#line 3183 "gram.y" + case 564: +#line 3642 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_STORAGETYPE; @@ -17596,38 +19865,45 @@ yyreduce: } break; - case 500: -#line 3191 "gram.y" + case 565: +#line 3650 "gram.y" { (yyval.boolean) = TRUE; } break; - case 501: -#line 3192 "gram.y" + case 566: +#line 3651 "gram.y" { (yyval.boolean) = FALSE; } break; - case 502: -#line 3195 "gram.y" + case 567: +#line 3654 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 503: -#line 3196 "gram.y" + case 568: +#line 3655 "gram.y" { (yyval.list) = NIL; } break; - case 504: -#line 3199 "gram.y" - { (yyval.boolean) = TRUE; } + case 569: +#line 3659 "gram.y" + { + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("RECHECK is no longer supported"), + errhint("Update your data type."), + scanner_errposition((yylsp[0])))); + (yyval.boolean) = TRUE; + } break; - case 505: -#line 3200 "gram.y" + case 570: +#line 3667 "gram.y" { (yyval.boolean) = FALSE; } break; - case 506: -#line 3206 "gram.y" + case 571: +#line 3673 "gram.y" { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); n->opfamilyname = (yyvsp[-2].list); @@ -17636,8 +19912,8 @@ yyreduce: } break; - case 507: -#line 3216 "gram.y" + case 572: +#line 3683 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = (yyvsp[-4].list); @@ -17648,8 +19924,8 @@ yyreduce: } break; - case 508: -#line 3225 "gram.y" + case 573: +#line 3692 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = (yyvsp[-4].list); @@ -17660,18 +19936,18 @@ yyreduce: } break; - case 509: -#line 3236 "gram.y" + case 574: +#line 3703 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 510: -#line 3237 "gram.y" + case 575: +#line 3704 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 511: -#line 3242 "gram.y" + case 576: +#line 3709 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; @@ -17681,8 +19957,8 @@ yyreduce: } break; - case 512: -#line 3250 "gram.y" + case 577: +#line 3717 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; @@ -17692,8 +19968,8 @@ yyreduce: } break; - case 513: -#line 3262 "gram.y" + case 578: +#line 3729 "gram.y" { RemoveOpClassStmt *n = makeNode(RemoveOpClassStmt); n->opclassname = (yyvsp[-3].list); @@ -17704,8 +19980,8 @@ yyreduce: } break; - case 514: -#line 3271 "gram.y" + case 579: +#line 3738 "gram.y" { RemoveOpClassStmt *n = makeNode(RemoveOpClassStmt); n->opclassname = (yyvsp[-3].list); @@ -17716,8 +19992,8 @@ yyreduce: } break; - case 515: -#line 3283 "gram.y" + case 580: +#line 3750 "gram.y" { RemoveOpFamilyStmt *n = makeNode(RemoveOpFamilyStmt); n->opfamilyname = (yyvsp[-3].list); @@ -17728,8 +20004,8 @@ yyreduce: } break; - case 516: -#line 3292 "gram.y" + case 581: +#line 3759 "gram.y" { RemoveOpFamilyStmt *n = makeNode(RemoveOpFamilyStmt); n->opfamilyname = (yyvsp[-3].list); @@ -17740,8 +20016,8 @@ yyreduce: } break; - case 517: -#line 3313 "gram.y" + case 582: +#line 3780 "gram.y" { DropOwnedStmt *n = makeNode(DropOwnedStmt); n->roles = (yyvsp[-1].list); @@ -17750,8 +20026,8 @@ yyreduce: } break; - case 518: -#line 3323 "gram.y" + case 583: +#line 3790 "gram.y" { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); n->roles = (yyvsp[-2].list); @@ -17760,8 +20036,8 @@ yyreduce: } break; - case 519: -#line 3341 "gram.y" + case 584: +#line 3808 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[-4].objtype); @@ -17772,8 +20048,8 @@ yyreduce: } break; - case 520: -#line 3350 "gram.y" + case 585: +#line 3817 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[-2].objtype); @@ -17784,108 +20060,124 @@ yyreduce: } break; - case 521: -#line 3361 "gram.y" + case 586: +#line 3828 "gram.y" { (yyval.objtype) = OBJECT_TABLE; } break; - case 522: -#line 3362 "gram.y" + case 587: +#line 3829 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; } break; - case 523: -#line 3363 "gram.y" + case 588: +#line 3830 "gram.y" { (yyval.objtype) = OBJECT_VIEW; } break; - case 524: -#line 3364 "gram.y" + case 589: +#line 3831 "gram.y" { (yyval.objtype) = OBJECT_INDEX; } break; - case 525: -#line 3365 "gram.y" + case 590: +#line 3832 "gram.y" { (yyval.objtype) = OBJECT_TYPE; } break; - case 526: -#line 3366 "gram.y" + case 591: +#line 3833 "gram.y" { (yyval.objtype) = OBJECT_DOMAIN; } break; - case 527: -#line 3367 "gram.y" + case 592: +#line 3834 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; } break; - case 528: -#line 3368 "gram.y" + case 593: +#line 3835 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; } break; - case 529: -#line 3369 "gram.y" + case 594: +#line 3836 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; } break; - case 530: -#line 3370 "gram.y" + case 595: +#line 3837 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; } break; - case 531: -#line 3371 "gram.y" + case 596: +#line 3838 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; } break; - case 532: -#line 3372 "gram.y" + case 597: +#line 3839 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; } break; - case 533: -#line 3376 "gram.y" + case 598: +#line 3843 "gram.y" { (yyval.list) = list_make1((yyvsp[0].list)); } break; - case 534: -#line 3377 "gram.y" + case 599: +#line 3844 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } break; - case 535: -#line 3380 "gram.y" + case 600: +#line 3847 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 536: -#line 3381 "gram.y" + case 601: +#line 3848 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } break; - case 537: -#line 3385 "gram.y" + case 602: +#line 3852 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 538: -#line 3387 "gram.y" + case 603: +#line 3854 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } break; - case 539: -#line 3400 "gram.y" + case 604: +#line 3867 "gram.y" { TruncateStmt *n = makeNode(TruncateStmt); - n->relations = (yyvsp[-1].list); + n->relations = (yyvsp[-2].list); + n->restart_seqs = (yyvsp[-1].boolean); n->behavior = (yyvsp[0].dbehavior); (yyval.node) = (Node *)n; } break; - case 540: -#line 3431 "gram.y" + case 605: +#line 3877 "gram.y" + { (yyval.boolean) = false; } + break; + + case 606: +#line 3878 "gram.y" + { (yyval.boolean) = true; } + break; + + case 607: +#line 3879 "gram.y" + { (yyval.boolean) = false; } + break; + + case 608: +#line 3905 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = (yyvsp[-3].objtype); @@ -17896,8 +20188,8 @@ yyreduce: } break; - case 541: -#line 3440 "gram.y" + case 609: +#line 3914 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_AGGREGATE; @@ -17908,8 +20200,8 @@ yyreduce: } break; - case 542: -#line 3449 "gram.y" + case 610: +#line 3923 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_FUNCTION; @@ -17920,20 +20212,20 @@ yyreduce: } break; - case 543: -#line 3459 "gram.y" + case 611: +#line 3932 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPERATOR; - n->objname = (yyvsp[-5].list); - n->objargs = (yyvsp[-3].list); + n->objname = (yyvsp[-3].list); + n->objargs = (yyvsp[-2].list); n->comment = (yyvsp[0].str); (yyval.node) = (Node *) n; } break; - case 544: -#line 3468 "gram.y" + case 612: +#line 3941 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_CONSTRAINT; @@ -17944,8 +20236,8 @@ yyreduce: } break; - case 545: -#line 3477 "gram.y" + case 613: +#line 3950 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_RULE; @@ -17956,8 +20248,8 @@ yyreduce: } break; - case 546: -#line 3486 "gram.y" + case 614: +#line 3959 "gram.y" { /* Obsolete syntax supported for awhile for compatibility */ CommentStmt *n = makeNode(CommentStmt); @@ -17969,8 +20261,8 @@ yyreduce: } break; - case 547: -#line 3496 "gram.y" + case 615: +#line 3969 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRIGGER; @@ -17981,8 +20273,8 @@ yyreduce: } break; - case 548: -#line 3505 "gram.y" + case 616: +#line 3978 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPCLASS; @@ -17993,8 +20285,8 @@ yyreduce: } break; - case 549: -#line 3514 "gram.y" + case 617: +#line 3987 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPFAMILY; @@ -18005,8 +20297,8 @@ yyreduce: } break; - case 550: -#line 3523 "gram.y" + case 618: +#line 3996 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LARGEOBJECT; @@ -18017,8 +20309,8 @@ yyreduce: } break; - case 551: -#line 3532 "gram.y" + case 619: +#line 4005 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_CAST; @@ -18029,8 +20321,8 @@ yyreduce: } break; - case 552: -#line 3541 "gram.y" + case 620: +#line 4014 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LANGUAGE; @@ -18041,8 +20333,8 @@ yyreduce: } break; - case 553: -#line 3550 "gram.y" + case 621: +#line 4023 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TSPARSER; @@ -18052,8 +20344,8 @@ yyreduce: } break; - case 554: -#line 3558 "gram.y" + case 622: +#line 4031 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TSDICTIONARY; @@ -18063,8 +20355,8 @@ yyreduce: } break; - case 555: -#line 3566 "gram.y" + case 623: +#line 4039 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TSTEMPLATE; @@ -18074,8 +20366,8 @@ yyreduce: } break; - case 556: -#line 3574 "gram.y" + case 624: +#line 4047 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TSCONFIGURATION; @@ -18085,78 +20377,78 @@ yyreduce: } break; - case 557: -#line 3584 "gram.y" + case 625: +#line 4057 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; } break; - case 558: -#line 3585 "gram.y" + case 626: +#line 4058 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; } break; - case 559: -#line 3586 "gram.y" + case 627: +#line 4059 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; } break; - case 560: -#line 3587 "gram.y" + case 628: +#line 4060 "gram.y" { (yyval.objtype) = OBJECT_INDEX; } break; - case 561: -#line 3588 "gram.y" + case 629: +#line 4061 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; } break; - case 562: -#line 3589 "gram.y" + case 630: +#line 4062 "gram.y" { (yyval.objtype) = OBJECT_TABLE; } break; - case 563: -#line 3590 "gram.y" + case 631: +#line 4063 "gram.y" { (yyval.objtype) = OBJECT_TYPE; } break; - case 564: -#line 3591 "gram.y" + case 632: +#line 4064 "gram.y" { (yyval.objtype) = OBJECT_TYPE; } break; - case 565: -#line 3592 "gram.y" + case 633: +#line 4065 "gram.y" { (yyval.objtype) = OBJECT_VIEW; } break; - case 566: -#line 3593 "gram.y" + case 634: +#line 4066 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; } break; - case 567: -#line 3594 "gram.y" + case 635: +#line 4067 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; } break; - case 568: -#line 3595 "gram.y" + case 636: +#line 4068 "gram.y" { (yyval.objtype) = OBJECT_ROLE; } break; - case 569: -#line 3599 "gram.y" + case 637: +#line 4072 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 570: -#line 3600 "gram.y" + case 638: +#line 4073 "gram.y" { (yyval.str) = NULL; } break; - case 571: -#line 3611 "gram.y" + case 639: +#line 4084 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[-2].node); n->portalname = (yyvsp[0].str); @@ -18165,8 +20457,8 @@ yyreduce: } break; - case 572: -#line 3618 "gram.y" + case 640: +#line 4091 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18177,8 +20469,8 @@ yyreduce: } break; - case 573: -#line 3627 "gram.y" + case 641: +#line 4100 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[-2].node); n->portalname = (yyvsp[0].str); @@ -18187,8 +20479,8 @@ yyreduce: } break; - case 574: -#line 3634 "gram.y" + case 642: +#line 4107 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18199,8 +20491,8 @@ yyreduce: } break; - case 575: -#line 3646 "gram.y" + case 643: +#line 4119 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18209,8 +20501,8 @@ yyreduce: } break; - case 576: -#line 3653 "gram.y" + case 644: +#line 4126 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18219,8 +20511,8 @@ yyreduce: } break; - case 577: -#line 3660 "gram.y" + case 645: +#line 4133 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_BACKWARD; @@ -18229,8 +20521,8 @@ yyreduce: } break; - case 578: -#line 3667 "gram.y" + case 646: +#line 4140 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_ABSOLUTE; @@ -18239,8 +20531,8 @@ yyreduce: } break; - case 579: -#line 3674 "gram.y" + case 647: +#line 4147 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_ABSOLUTE; @@ -18249,8 +20541,8 @@ yyreduce: } break; - case 580: -#line 3681 "gram.y" + case 648: +#line 4154 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_ABSOLUTE; @@ -18259,8 +20551,8 @@ yyreduce: } break; - case 581: -#line 3688 "gram.y" + case 649: +#line 4161 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_RELATIVE; @@ -18269,8 +20561,8 @@ yyreduce: } break; - case 582: -#line 3695 "gram.y" + case 650: +#line 4168 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18279,8 +20571,8 @@ yyreduce: } break; - case 583: -#line 3702 "gram.y" + case 651: +#line 4175 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18289,8 +20581,8 @@ yyreduce: } break; - case 584: -#line 3709 "gram.y" + case 652: +#line 4182 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18299,8 +20591,8 @@ yyreduce: } break; - case 585: -#line 3716 "gram.y" + case 653: +#line 4189 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18309,8 +20601,8 @@ yyreduce: } break; - case 586: -#line 3723 "gram.y" + case 654: +#line 4196 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_FORWARD; @@ -18319,8 +20611,8 @@ yyreduce: } break; - case 587: -#line 3730 "gram.y" + case 655: +#line 4203 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_BACKWARD; @@ -18329,8 +20621,8 @@ yyreduce: } break; - case 588: -#line 3737 "gram.y" + case 656: +#line 4210 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_BACKWARD; @@ -18339,8 +20631,8 @@ yyreduce: } break; - case 589: -#line 3744 "gram.y" + case 657: +#line 4217 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->direction = FETCH_BACKWARD; @@ -18349,18 +20641,18 @@ yyreduce: } break; - case 590: -#line 3752 "gram.y" + case 658: +#line 4225 "gram.y" {} break; - case 591: -#line 3753 "gram.y" + case 659: +#line 4226 "gram.y" {} break; - case 592: -#line 3765 "gram.y" + case 660: +#line 4238 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; @@ -18373,8 +20665,8 @@ yyreduce: } break; - case 593: -#line 3780 "gram.y" + case 661: +#line 4253 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; @@ -18388,8 +20680,8 @@ yyreduce: } break; - case 594: -#line 3793 "gram.y" + case 662: +#line 4266 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; @@ -18403,143 +20695,203 @@ yyreduce: } break; - case 595: -#line 3818 "gram.y" + case 663: +#line 4290 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 596: -#line 3820 "gram.y" + case 664: +#line 4292 "gram.y" { (yyval.list) = NIL; } break; - case 597: -#line 3822 "gram.y" + case 665: +#line 4294 "gram.y" { (yyval.list) = NIL; } break; - case 598: -#line 3826 "gram.y" - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } + case 666: +#line 4296 "gram.y" + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = NULL; + n->cols = (yyvsp[-1].list); + (yyval.list) = list_make1(n); + } break; - case 599: -#line 3828 "gram.y" - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } + case 667: +#line 4303 "gram.y" + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = NULL; + n->cols = (yyvsp[-1].list); + (yyval.list) = list_make1(n); + } break; - case 600: -#line 3831 "gram.y" - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } + case 668: +#line 4311 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].accesspriv)); } break; - case 601: -#line 3832 "gram.y" - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } + case 669: +#line 4312 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].accesspriv)); } break; - case 602: -#line 3833 "gram.y" - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } + case 670: +#line 4316 "gram.y" + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = pstrdup((yyvsp[-1].keyword)); + n->cols = (yyvsp[0].list); + (yyval.accesspriv) = n; + } break; - case 603: -#line 3834 "gram.y" - { (yyval.str) = (yyvsp[0].str); } + case 671: +#line 4323 "gram.y" + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = pstrdup((yyvsp[-1].keyword)); + n->cols = (yyvsp[0].list); + (yyval.accesspriv) = n; + } break; - case 604: -#line 3843 "gram.y" + case 672: +#line 4330 "gram.y" + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = pstrdup((yyvsp[-1].keyword)); + n->cols = (yyvsp[0].list); + (yyval.accesspriv) = n; + } + break; + + case 673: +#line 4337 "gram.y" + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = (yyvsp[-1].str); + n->cols = (yyvsp[0].list); + (yyval.accesspriv) = n; + } + break; + + case 674: +#line 4351 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_RELATION; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 605: -#line 3850 "gram.y" + case 675: +#line 4358 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_RELATION; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 606: -#line 3857 "gram.y" + case 676: +#line 4365 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_SEQUENCE; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 607: -#line 3864 "gram.y" + case 677: +#line 4372 "gram.y" + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->objtype = ACL_OBJECT_FDW; + n->objs = (yyvsp[0].list); + (yyval.privtarget) = n; + } + break; + + case 678: +#line 4379 "gram.y" + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->objtype = ACL_OBJECT_FOREIGN_SERVER; + n->objs = (yyvsp[0].list); + (yyval.privtarget) = n; + } + break; + + case 679: +#line 4386 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_FUNCTION; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 608: -#line 3871 "gram.y" + case 680: +#line 4393 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_DATABASE; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 609: -#line 3878 "gram.y" + case 681: +#line 4400 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_LANGUAGE; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 610: -#line 3885 "gram.y" + case 682: +#line 4407 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_NAMESPACE; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 611: -#line 3892 "gram.y" + case 683: +#line 4414 "gram.y" { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_TABLESPACE; n->objs = (yyvsp[0].list); (yyval.privtarget) = n; } break; - case 612: -#line 3902 "gram.y" + case 684: +#line 4424 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 613: -#line 3903 "gram.y" + case 685: +#line 4425 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 614: -#line 3907 "gram.y" + case 686: +#line 4429 "gram.y" { PrivGrantee *n = makeNode(PrivGrantee); /* This hack lets us avoid reserving PUBLIC as a keyword*/ @@ -18551,8 +20903,8 @@ yyreduce: } break; - case 615: -#line 3917 "gram.y" + case 687: +#line 4439 "gram.y" { PrivGrantee *n = makeNode(PrivGrantee); /* Treat GROUP PUBLIC as a synonym for PUBLIC */ @@ -18564,28 +20916,28 @@ yyreduce: } break; - case 616: -#line 3930 "gram.y" + case 688: +#line 4452 "gram.y" { (yyval.boolean) = TRUE; } break; - case 617: -#line 3931 "gram.y" + case 689: +#line 4453 "gram.y" { (yyval.boolean) = FALSE; } break; - case 618: -#line 3935 "gram.y" + case 690: +#line 4457 "gram.y" { (yyval.list) = list_make1((yyvsp[0].funwithargs)); } break; - case 619: -#line 3937 "gram.y" + case 691: +#line 4459 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].funwithargs)); } break; - case 620: -#line 3942 "gram.y" + case 692: +#line 4464 "gram.y" { FuncWithArgs *n = makeNode(FuncWithArgs); n->funcname = (yyvsp[-1].list); @@ -18594,8 +20946,8 @@ yyreduce: } break; - case 621: -#line 3958 "gram.y" + case 693: +#line 4480 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; @@ -18607,8 +20959,8 @@ yyreduce: } break; - case 622: -#line 3971 "gram.y" + case 694: +#line 4493 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; @@ -18620,8 +20972,8 @@ yyreduce: } break; - case 623: -#line 3981 "gram.y" + case 695: +#line 4503 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; @@ -18633,28 +20985,28 @@ yyreduce: } break; - case 624: -#line 3992 "gram.y" + case 696: +#line 4514 "gram.y" { (yyval.boolean) = TRUE; } break; - case 625: -#line 3993 "gram.y" + case 697: +#line 4515 "gram.y" { (yyval.boolean) = FALSE; } break; - case 626: -#line 3996 "gram.y" + case 698: +#line 4518 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 627: -#line 3997 "gram.y" + case 699: +#line 4519 "gram.y" { (yyval.str) = NULL; } break; - case 628: -#line 4015 "gram.y" + case 700: +#line 4537 "gram.y" { IndexStmt *n = makeNode(IndexStmt); n->unique = (yyvsp[-11].boolean); @@ -18670,8 +21022,8 @@ yyreduce: } break; - case 629: -#line 4031 "gram.y" + case 701: +#line 4553 "gram.y" { IndexStmt *n = makeNode(IndexStmt); n->unique = (yyvsp[-12].boolean); @@ -18687,38 +21039,38 @@ yyreduce: } break; - case 630: -#line 4047 "gram.y" + case 702: +#line 4569 "gram.y" { (yyval.boolean) = TRUE; } break; - case 631: -#line 4048 "gram.y" + case 703: +#line 4570 "gram.y" { (yyval.boolean) = FALSE; } break; - case 632: -#line 4052 "gram.y" + case 704: +#line 4574 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 633: -#line 4053 "gram.y" + case 705: +#line 4575 "gram.y" { (yyval.str) = DEFAULT_INDEX_TYPE; } break; - case 634: -#line 4056 "gram.y" + case 706: +#line 4578 "gram.y" { (yyval.list) = list_make1((yyvsp[0].ielem)); } break; - case 635: -#line 4057 "gram.y" + case 707: +#line 4579 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].ielem)); } break; - case 636: -#line 4066 "gram.y" + case 708: +#line 4588 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = (yyvsp[-3].str); @@ -18729,8 +21081,8 @@ yyreduce: } break; - case 637: -#line 4075 "gram.y" + case 709: +#line 4597 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; @@ -18741,8 +21093,8 @@ yyreduce: } break; - case 638: -#line 4084 "gram.y" + case 710: +#line 4606 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; @@ -18753,53 +21105,53 @@ yyreduce: } break; - case 639: -#line 4094 "gram.y" + case 711: +#line 4616 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 640: -#line 4095 "gram.y" + case 712: +#line 4617 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 641: -#line 4096 "gram.y" + case 713: +#line 4618 "gram.y" { (yyval.list) = NIL; } break; - case 642: -#line 4099 "gram.y" + case 714: +#line 4621 "gram.y" { (yyval.ival) = SORTBY_ASC; } break; - case 643: -#line 4100 "gram.y" + case 715: +#line 4622 "gram.y" { (yyval.ival) = SORTBY_DESC; } break; - case 644: -#line 4101 "gram.y" + case 716: +#line 4623 "gram.y" { (yyval.ival) = SORTBY_DEFAULT; } break; - case 645: -#line 4104 "gram.y" + case 717: +#line 4626 "gram.y" { (yyval.ival) = SORTBY_NULLS_FIRST; } break; - case 646: -#line 4105 "gram.y" + case 718: +#line 4627 "gram.y" { (yyval.ival) = SORTBY_NULLS_LAST; } break; - case 647: -#line 4106 "gram.y" + case 719: +#line 4628 "gram.y" { (yyval.ival) = SORTBY_NULLS_DEFAULT; } break; - case 648: -#line 4124 "gram.y" + case 720: +#line 4646 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->replace = (yyvsp[-7].boolean); @@ -18812,8 +21164,23 @@ yyreduce: } break; - case 649: -#line 4136 "gram.y" + case 721: +#line 4658 "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); + (yyval.node) = (Node *)n; + } + break; + + case 722: +#line 4671 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->replace = (yyvsp[-5].boolean); @@ -18826,113 +21193,143 @@ yyreduce: } break; - case 650: -#line 4149 "gram.y" + case 723: +#line 4684 "gram.y" { (yyval.boolean) = TRUE; } break; - case 651: -#line 4150 "gram.y" + case 724: +#line 4685 "gram.y" { (yyval.boolean) = FALSE; } break; - case 652: -#line 4153 "gram.y" + case 725: +#line 4688 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 653: -#line 4154 "gram.y" + case 726: +#line 4689 "gram.y" { (yyval.list) = NIL; } break; - case 654: -#line 4158 "gram.y" + case 727: +#line 4693 "gram.y" { (yyval.list) = list_make1((yyvsp[0].fun_param)); } break; - case 655: -#line 4159 "gram.y" + case 728: +#line 4694 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } break; - case 656: -#line 4174 "gram.y" + case 729: +#line 4702 "gram.y" + { (yyval.list) = (yyvsp[-1].list); } + break; + + case 730: +#line 4703 "gram.y" + { (yyval.list) = NIL; } + break; + + case 731: +#line 4707 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].fun_param)); } + break; + + case 732: +#line 4709 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } + break; + + case 733: +#line 4724 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[-1].str); n->argType = (yyvsp[0].typnam); n->mode = (yyvsp[-2].fun_param_mode); + n->defexpr = NULL; (yyval.fun_param) = n; } break; - case 657: -#line 4182 "gram.y" + case 734: +#line 4733 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[-2].str); n->argType = (yyvsp[0].typnam); n->mode = (yyvsp[-1].fun_param_mode); + n->defexpr = NULL; (yyval.fun_param) = n; } break; - case 658: -#line 4190 "gram.y" + case 735: +#line 4742 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[-1].str); n->argType = (yyvsp[0].typnam); n->mode = FUNC_PARAM_IN; + n->defexpr = NULL; (yyval.fun_param) = n; } break; - case 659: -#line 4198 "gram.y" + case 736: +#line 4751 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; n->argType = (yyvsp[0].typnam); n->mode = (yyvsp[-1].fun_param_mode); + n->defexpr = NULL; (yyval.fun_param) = n; } break; - case 660: -#line 4206 "gram.y" + case 737: +#line 4760 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; n->argType = (yyvsp[0].typnam); n->mode = FUNC_PARAM_IN; + n->defexpr = NULL; (yyval.fun_param) = n; } break; - case 661: -#line 4216 "gram.y" + case 738: +#line 4771 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_IN; } break; - case 662: -#line 4217 "gram.y" + case 739: +#line 4772 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_OUT; } break; - case 663: -#line 4218 "gram.y" + case 740: +#line 4773 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; } break; - case 664: -#line 4219 "gram.y" + case 741: +#line 4774 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; } break; - case 666: -#line 4230 "gram.y" + case 742: +#line 4775 "gram.y" + { (yyval.fun_param_mode) = FUNC_PARAM_VARIADIC; } + break; + + case 744: +#line 4786 "gram.y" { /* We can catch over-specified results here if we want to, * but for now better to silently swallow typmod, etc. @@ -18942,13 +21339,13 @@ yyreduce: } break; - case 667: -#line 4244 "gram.y" + case 745: +#line 4800 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 668: -#line 4246 "gram.y" + case 746: +#line 4802 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); (yyval.typnam)->pct_type = true; @@ -18956,8 +21353,8 @@ yyreduce: } break; - case 669: -#line 4252 "gram.y" + case 747: +#line 4808 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); (yyval.typnam)->pct_type = true; @@ -18966,153 +21363,209 @@ yyreduce: } break; - case 670: -#line 4263 "gram.y" + case 748: +#line 4818 "gram.y" + { + (yyval.fun_param) = (yyvsp[0].fun_param); + } + break; + + case 749: +#line 4822 "gram.y" + { + (yyval.fun_param) = (yyvsp[-2].fun_param); + (yyval.fun_param)->defexpr = (yyvsp[0].node); + } + break; + + case 750: +#line 4827 "gram.y" + { + (yyval.fun_param) = (yyvsp[-2].fun_param); + (yyval.fun_param)->defexpr = (yyvsp[0].node); + } + break; + + case 751: +#line 4836 "gram.y" { (yyval.list) = list_make1((yyvsp[0].defelt)); } break; - case 671: -#line 4264 "gram.y" + case 752: +#line 4837 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 672: -#line 4272 "gram.y" + case 753: +#line 4845 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(FALSE)); } break; - case 673: -#line 4276 "gram.y" + case 754: +#line 4849 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE)); } break; - case 674: -#line 4280 "gram.y" + case 755: +#line 4853 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE)); } break; - case 675: -#line 4284 "gram.y" + case 756: +#line 4857 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("immutable")); } break; - case 676: -#line 4288 "gram.y" + case 757: +#line 4861 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("stable")); } break; - case 677: -#line 4292 "gram.y" + case 758: +#line 4865 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("volatile")); } break; - case 678: -#line 4296 "gram.y" + case 759: +#line 4869 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE)); } break; - case 679: -#line 4300 "gram.y" + case 760: +#line 4873 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE)); } break; - case 680: -#line 4304 "gram.y" + case 761: +#line 4877 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE)); } break; - case 681: -#line 4308 "gram.y" + case 762: +#line 4881 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE)); } break; - case 682: -#line 4312 "gram.y" + case 763: +#line 4885 "gram.y" { (yyval.defelt) = makeDefElem("cost", (Node *)(yyvsp[0].value)); } break; - case 683: -#line 4316 "gram.y" + case 764: +#line 4889 "gram.y" { (yyval.defelt) = makeDefElem("rows", (Node *)(yyvsp[0].value)); } break; - case 684: -#line 4320 "gram.y" + case 765: +#line 4893 "gram.y" { /* we abuse the normal content of a DefElem here */ (yyval.defelt) = makeDefElem("set", (Node *)(yyvsp[0].vsetstmt)); } break; - case 685: -#line 4328 "gram.y" + case 766: +#line 4901 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[0].list)); } break; - case 686: -#line 4332 "gram.y" + case 767: +#line 4905 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[0].str))); } break; - case 687: -#line 4336 "gram.y" + case 768: +#line 4909 "gram.y" + { + (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(TRUE)); + } + break; + + case 769: +#line 4913 "gram.y" { (yyval.defelt) = (yyvsp[0].defelt); } break; - case 688: -#line 4341 "gram.y" + case 770: +#line 4918 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 689: -#line 4343 "gram.y" + case 771: +#line 4920 "gram.y" { (yyval.list) = list_make2(makeString((yyvsp[-2].str)), makeString((yyvsp[0].str))); } break; - case 690: -#line 4349 "gram.y" + case 772: +#line 4926 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 691: -#line 4350 "gram.y" + case 773: +#line 4927 "gram.y" { (yyval.list) = NIL; } break; - case 692: -#line 4363 "gram.y" + case 774: +#line 4931 "gram.y" + { + FunctionParameter *n = makeNode(FunctionParameter); + n->name = (yyvsp[-1].str); + n->argType = (yyvsp[0].typnam); + n->mode = FUNC_PARAM_TABLE; + n->defexpr = NULL; + (yyval.fun_param) = n; + } + break; + + case 775: +#line 4943 "gram.y" + { + (yyval.list) = list_make1((yyvsp[0].fun_param)); + } + break; + + case 776: +#line 4947 "gram.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); + } + break; + + case 777: +#line 4962 "gram.y" { AlterFunctionStmt *n = makeNode(AlterFunctionStmt); n->func = (yyvsp[-2].funwithargs); @@ -19121,18 +21574,18 @@ yyreduce: } break; - case 693: -#line 4373 "gram.y" + case 778: +#line 4972 "gram.y" { (yyval.list) = list_make1((yyvsp[0].defelt)); } break; - case 694: -#line 4374 "gram.y" + case 779: +#line 4973 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 697: -#line 4396 "gram.y" + case 782: +#line 4995 "gram.y" { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_FUNCTION; @@ -19144,8 +21597,8 @@ yyreduce: } break; - case 698: -#line 4406 "gram.y" + case 783: +#line 5005 "gram.y" { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_FUNCTION; @@ -19157,8 +21610,8 @@ yyreduce: } break; - case 699: -#line 4419 "gram.y" + case 784: +#line 5018 "gram.y" { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_AGGREGATE; @@ -19170,8 +21623,8 @@ yyreduce: } break; - case 700: -#line 4429 "gram.y" + case 785: +#line 5028 "gram.y" { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_AGGREGATE; @@ -19183,108 +21636,124 @@ yyreduce: } break; - case 701: -#line 4442 "gram.y" + case 786: +#line 5041 "gram.y" { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_OPERATOR; - n->name = (yyvsp[-4].list); - n->args = (yyvsp[-2].list); + n->name = (yyvsp[-2].list); + n->args = (yyvsp[-1].list); n->behavior = (yyvsp[0].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; } break; - case 702: -#line 4452 "gram.y" + case 787: +#line 5051 "gram.y" { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_OPERATOR; - n->name = (yyvsp[-4].list); - n->args = (yyvsp[-2].list); + n->name = (yyvsp[-2].list); + n->args = (yyvsp[-1].list); n->behavior = (yyvsp[0].dbehavior); n->missing_ok = true; (yyval.node) = (Node *)n; } break; - case 703: -#line 4465 "gram.y" + case 788: +#line 5064 "gram.y" { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing argument"), - errhint("Use NONE to denote the missing argument of a unary operator."))); + errhint("Use NONE to denote the missing argument of a unary operator."), + scanner_errposition((yylsp[0])))); } break; - case 704: -#line 4472 "gram.y" - { (yyval.list) = list_make2((yyvsp[-2].typnam), (yyvsp[0].typnam)); } + case 789: +#line 5072 "gram.y" + { (yyval.list) = list_make2((yyvsp[-3].typnam), (yyvsp[-1].typnam)); } break; - case 705: -#line 4474 "gram.y" - { (yyval.list) = list_make2(NULL, (yyvsp[0].typnam)); } + case 790: +#line 5074 "gram.y" + { (yyval.list) = list_make2(NULL, (yyvsp[-1].typnam)); } break; - case 706: -#line 4476 "gram.y" - { (yyval.list) = list_make2((yyvsp[-2].typnam), NULL); } + case 791: +#line 5076 "gram.y" + { (yyval.list) = list_make2((yyvsp[-3].typnam), NULL); } break; - case 707: -#line 4481 "gram.y" + case 792: +#line 5081 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 708: -#line 4483 "gram.y" + case 793: +#line 5083 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[-2].str)), (yyvsp[0].list)); } break; - case 709: -#line 4495 "gram.y" + case 794: +#line 5095 "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->inout = false; (yyval.node) = (Node *)n; } break; - case 710: -#line 4505 "gram.y" + case 795: +#line 5106 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); n->sourcetype = (yyvsp[-6].typnam); n->targettype = (yyvsp[-4].typnam); n->func = NULL; n->context = (CoercionContext) (yyvsp[0].ival); + n->inout = false; (yyval.node) = (Node *)n; } break; - case 711: -#line 4515 "gram.y" + case 796: +#line 5117 "gram.y" + { + CreateCastStmt *n = makeNode(CreateCastStmt); + n->sourcetype = (yyvsp[-6].typnam); + n->targettype = (yyvsp[-4].typnam); + n->func = NULL; + n->context = (CoercionContext) (yyvsp[0].ival); + n->inout = true; + (yyval.node) = (Node *)n; + } + break; + + case 797: +#line 5128 "gram.y" { (yyval.ival) = COERCION_IMPLICIT; } break; - case 712: -#line 4516 "gram.y" + case 798: +#line 5129 "gram.y" { (yyval.ival) = COERCION_ASSIGNMENT; } break; - case 713: -#line 4517 "gram.y" + case 799: +#line 5130 "gram.y" { (yyval.ival) = COERCION_EXPLICIT; } break; - case 714: -#line 4522 "gram.y" + case 800: +#line 5135 "gram.y" { DropCastStmt *n = makeNode(DropCastStmt); n->sourcetype = (yyvsp[-4].typnam); @@ -19295,18 +21764,18 @@ yyreduce: } break; - case 715: -#line 4532 "gram.y" + case 801: +#line 5145 "gram.y" { (yyval.boolean) = TRUE; } break; - case 716: -#line 4533 "gram.y" + case 802: +#line 5146 "gram.y" { (yyval.boolean) = FALSE; } break; - case 717: -#line 4548 "gram.y" + case 803: +#line 5161 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[-2].objtype); @@ -19316,8 +21785,8 @@ yyreduce: } break; - case 718: -#line 4556 "gram.y" + case 804: +#line 5169 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = OBJECT_DATABASE; @@ -19329,8 +21798,8 @@ yyreduce: } break; - case 719: -#line 4566 "gram.y" + case 805: +#line 5179 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = OBJECT_DATABASE; @@ -19342,28 +21811,28 @@ yyreduce: } break; - case 720: -#line 4578 "gram.y" + case 806: +#line 5191 "gram.y" { (yyval.objtype) = OBJECT_INDEX; } break; - case 721: -#line 4579 "gram.y" + case 807: +#line 5192 "gram.y" { (yyval.objtype) = OBJECT_TABLE; } break; - case 722: -#line 4582 "gram.y" + case 808: +#line 5195 "gram.y" { (yyval.boolean) = TRUE; } break; - case 723: -#line 4583 "gram.y" + case 809: +#line 5196 "gram.y" { (yyval.boolean) = FALSE; } break; - case 724: -#line 4594 "gram.y" + case 810: +#line 5207 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_AGGREGATE; @@ -19374,8 +21843,8 @@ yyreduce: } break; - case 725: -#line 4603 "gram.y" + case 811: +#line 5216 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_CONVERSION; @@ -19385,8 +21854,8 @@ yyreduce: } break; - case 726: -#line 4611 "gram.y" + case 812: +#line 5224 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DATABASE; @@ -19396,8 +21865,8 @@ yyreduce: } break; - case 727: -#line 4619 "gram.y" + case 813: +#line 5232 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FUNCTION; @@ -19408,8 +21877,8 @@ yyreduce: } break; - case 728: -#line 4628 "gram.y" + case 814: +#line 5241 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; @@ -19419,8 +21888,8 @@ yyreduce: } break; - case 729: -#line 4636 "gram.y" + case 815: +#line 5249 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_LANGUAGE; @@ -19430,8 +21899,8 @@ yyreduce: } break; - case 730: -#line 4644 "gram.y" + case 816: +#line 5257 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPCLASS; @@ -19442,8 +21911,8 @@ yyreduce: } break; - case 731: -#line 4653 "gram.y" + case 817: +#line 5266 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPFAMILY; @@ -19454,8 +21923,8 @@ yyreduce: } break; - case 732: -#line 4662 "gram.y" + case 818: +#line 5275 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SCHEMA; @@ -19465,8 +21934,8 @@ yyreduce: } break; - case 733: -#line 4670 "gram.y" + case 819: +#line 5283 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; @@ -19477,8 +21946,8 @@ yyreduce: } break; - case 734: -#line 4679 "gram.y" + case 820: +#line 5292 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; @@ -19489,8 +21958,8 @@ yyreduce: } break; - case 735: -#line 4688 "gram.y" + case 821: +#line 5301 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; @@ -19501,8 +21970,8 @@ yyreduce: } break; - case 736: -#line 4697 "gram.y" + case 822: +#line 5310 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; @@ -19513,8 +21982,8 @@ yyreduce: } break; - case 737: -#line 4706 "gram.y" + case 823: +#line 5319 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; @@ -19525,8 +21994,8 @@ yyreduce: } break; - case 738: -#line 4715 "gram.y" + case 824: +#line 5328 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TRIGGER; @@ -19537,8 +22006,8 @@ yyreduce: } break; - case 739: -#line 4724 "gram.y" + case 825: +#line 5337 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; @@ -19548,8 +22017,8 @@ yyreduce: } break; - case 740: -#line 4732 "gram.y" + case 826: +#line 5345 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; @@ -19559,8 +22028,8 @@ yyreduce: } break; - case 741: -#line 4740 "gram.y" + case 827: +#line 5353 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLESPACE; @@ -19570,8 +22039,8 @@ yyreduce: } break; - case 742: -#line 4748 "gram.y" + case 828: +#line 5361 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSPARSER; @@ -19581,8 +22050,8 @@ yyreduce: } break; - case 743: -#line 4756 "gram.y" + case 829: +#line 5369 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSDICTIONARY; @@ -19592,8 +22061,8 @@ yyreduce: } break; - case 744: -#line 4764 "gram.y" + case 830: +#line 5377 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSTEMPLATE; @@ -19603,8 +22072,8 @@ yyreduce: } break; - case 745: -#line 4772 "gram.y" + case 831: +#line 5385 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSCONFIGURATION; @@ -19614,18 +22083,39 @@ yyreduce: } break; - case 746: -#line 4781 "gram.y" + case 832: +#line 5393 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_TYPE; + n->object = (yyvsp[-3].list); + n->newname = (yyvsp[0].str); + (yyval.node) = (Node *)n; + } + break; + + case 833: +#line 5402 "gram.y" { (yyval.ival) = COLUMN; } break; - case 747: -#line 4782 "gram.y" + case 834: +#line 5403 "gram.y" { (yyval.ival) = 0; } break; - case 748: -#line 4793 "gram.y" + case 835: +#line 5406 "gram.y" + { (yyval.ival) = 1; } + break; + + case 836: +#line 5407 "gram.y" + { (yyval.ival) = 0; } + break; + + case 837: +#line 5418 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_AGGREGATE; @@ -19636,8 +22126,8 @@ yyreduce: } break; - case 749: -#line 4802 "gram.y" + case 838: +#line 5427 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_DOMAIN; @@ -19647,8 +22137,8 @@ yyreduce: } break; - case 750: -#line 4810 "gram.y" + case 839: +#line 5435 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FUNCTION; @@ -19659,8 +22149,19 @@ yyreduce: } break; - case 751: -#line 4819 "gram.y" + case 840: +#line 5444 "gram.y" + { + AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); + n->objectType = OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + (yyval.node) = (Node *)n; + } + break; + + case 841: +#line 5452 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; @@ -19670,19 +22171,19 @@ yyreduce: } break; - case 752: -#line 4827 "gram.y" + case 842: +#line 5460 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); - n->objectType = OBJECT_TABLE; + n->objectType = OBJECT_VIEW; n->relation = (yyvsp[-3].range); n->newschema = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 753: -#line 4835 "gram.y" + case 843: +#line 5468 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TYPE; @@ -19692,8 +22193,8 @@ yyreduce: } break; - case 754: -#line 4851 "gram.y" + case 844: +#line 5484 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_AGGREGATE; @@ -19704,8 +22205,8 @@ yyreduce: } break; - case 755: -#line 4860 "gram.y" + case 845: +#line 5493 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_CONVERSION; @@ -19715,19 +22216,19 @@ yyreduce: } break; - case 756: -#line 4868 "gram.y" + case 846: +#line 5501 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; - n->object = list_make1((yyvsp[-3].str)); + n->object = list_make1(makeString((yyvsp[-3].str))); n->newowner = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 757: -#line 4876 "gram.y" + case 847: +#line 5509 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DOMAIN; @@ -19737,8 +22238,8 @@ yyreduce: } break; - case 758: -#line 4884 "gram.y" + case 848: +#line 5517 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FUNCTION; @@ -19749,31 +22250,31 @@ yyreduce: } break; - case 759: -#line 4893 "gram.y" + case 849: +#line 5526 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LANGUAGE; - n->object = list_make1((yyvsp[-3].str)); + n->object = list_make1(makeString((yyvsp[-3].str))); n->newowner = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 760: -#line 4901 "gram.y" + case 850: +#line 5534 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPERATOR; - n->object = (yyvsp[-6].list); - n->objarg = (yyvsp[-4].list); + n->object = (yyvsp[-4].list); + n->objarg = (yyvsp[-3].list); n->newowner = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 761: -#line 4910 "gram.y" + case 851: +#line 5543 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPCLASS; @@ -19784,8 +22285,8 @@ yyreduce: } break; - case 762: -#line 4919 "gram.y" + case 852: +#line 5552 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPFAMILY; @@ -19796,19 +22297,19 @@ yyreduce: } break; - case 763: -#line 4928 "gram.y" + case 853: +#line 5561 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SCHEMA; - n->object = list_make1((yyvsp[-3].str)); + n->object = list_make1(makeString((yyvsp[-3].str))); n->newowner = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 764: -#line 4936 "gram.y" + case 854: +#line 5569 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TYPE; @@ -19818,19 +22319,19 @@ yyreduce: } break; - case 765: -#line 4944 "gram.y" + case 855: +#line 5577 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TABLESPACE; - n->object = list_make1((yyvsp[-3].str)); + n->object = list_make1(makeString((yyvsp[-3].str))); n->newowner = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 766: -#line 4952 "gram.y" + case 856: +#line 5585 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSDICTIONARY; @@ -19840,8 +22341,8 @@ yyreduce: } break; - case 767: -#line 4960 "gram.y" + case 857: +#line 5593 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSCONFIGURATION; @@ -19851,13 +22352,35 @@ yyreduce: } break; - case 768: -#line 4977 "gram.y" + case 858: +#line 5601 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_FDW; + n->object = list_make1(makeString((yyvsp[-3].str))); + n->newowner = (yyvsp[0].str); + (yyval.node) = (Node *)n; + } + break; + + case 859: +#line 5609 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_FOREIGN_SERVER; + n->object = list_make1(makeString((yyvsp[-3].str))); + n->newowner = (yyvsp[0].str); + (yyval.node) = (Node *)n; + } + break; + + case 860: +#line 5626 "gram.y" { QueryIsRule=TRUE; } break; - case 769: -#line 4980 "gram.y" + case 861: +#line 5629 "gram.y" { RuleStmt *n = makeNode(RuleStmt); n->replace = (yyvsp[-12].boolean); @@ -19872,23 +22395,23 @@ yyreduce: } break; - case 770: -#line 4995 "gram.y" + case 862: +#line 5644 "gram.y" { (yyval.list) = NIL; } break; - case 771: -#line 4996 "gram.y" + case 863: +#line 5645 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 772: -#line 4997 "gram.y" + case 864: +#line 5646 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 773: -#line 5003 "gram.y" + case 865: +#line 5652 "gram.y" { if ((yyvsp[0].node) != NULL) (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); else @@ -19896,8 +22419,8 @@ yyreduce: } break; - case 774: -#line 5009 "gram.y" + case 866: +#line 5658 "gram.y" { if ((yyvsp[0].node) != NULL) (yyval.list) = list_make1((yyvsp[0].node)); else @@ -19905,53 +22428,53 @@ yyreduce: } break; - case 780: -#line 5025 "gram.y" + case 872: +#line 5674 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 781: -#line 5026 "gram.y" + case 873: +#line 5675 "gram.y" { (yyval.node) = NULL; } break; - case 782: -#line 5029 "gram.y" + case 874: +#line 5678 "gram.y" { (yyval.ival) = CMD_SELECT; } break; - case 783: -#line 5030 "gram.y" + case 875: +#line 5679 "gram.y" { (yyval.ival) = CMD_UPDATE; } break; - case 784: -#line 5031 "gram.y" + case 876: +#line 5680 "gram.y" { (yyval.ival) = CMD_DELETE; } break; - case 785: -#line 5032 "gram.y" + case 877: +#line 5681 "gram.y" { (yyval.ival) = CMD_INSERT; } break; - case 786: -#line 5036 "gram.y" + case 878: +#line 5685 "gram.y" { (yyval.boolean) = TRUE; } break; - case 787: -#line 5037 "gram.y" + case 879: +#line 5686 "gram.y" { (yyval.boolean) = FALSE; } break; - case 788: -#line 5038 "gram.y" + case 880: +#line 5687 "gram.y" { (yyval.boolean) = FALSE; } break; - case 789: -#line 5044 "gram.y" + case 881: +#line 5693 "gram.y" { DropPropertyStmt *n = makeNode(DropPropertyStmt); n->relation = (yyvsp[-1].range); @@ -19963,8 +22486,8 @@ yyreduce: } break; - case 790: -#line 5054 "gram.y" + case 882: +#line 5703 "gram.y" { DropPropertyStmt *n = makeNode(DropPropertyStmt); n->relation = (yyvsp[-1].range); @@ -19976,52 +22499,44 @@ yyreduce: } break; - case 791: -#line 5075 "gram.y" + case 883: +#line 5724 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = (yyvsp[0].str); - n->relation->schemaname = NULL; + n->conditionname = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 792: -#line 5085 "gram.y" + case 884: +#line 5732 "gram.y" { ListenStmt *n = makeNode(ListenStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = (yyvsp[0].str); - n->relation->schemaname = NULL; + n->conditionname = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 793: -#line 5096 "gram.y" + case 885: +#line 5741 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = (yyvsp[0].str); - n->relation->schemaname = NULL; + n->conditionname = (yyvsp[0].str); (yyval.node) = (Node *)n; } break; - case 794: -#line 5104 "gram.y" + case 886: +#line 5747 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = "*"; - n->relation->schemaname = NULL; + n->conditionname = NULL; (yyval.node) = (Node *)n; } break; - case 795: -#line 5125 "gram.y" + case 887: +#line 5766 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; @@ -20030,8 +22545,8 @@ yyreduce: } break; - case 796: -#line 5132 "gram.y" + case 888: +#line 5773 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_BEGIN; @@ -20040,8 +22555,8 @@ yyreduce: } break; - case 797: -#line 5139 "gram.y" + case 889: +#line 5780 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_START; @@ -20050,8 +22565,8 @@ yyreduce: } break; - case 798: -#line 5146 "gram.y" + case 890: +#line 5787 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; @@ -20060,8 +22575,8 @@ yyreduce: } break; - case 799: -#line 5153 "gram.y" + case 891: +#line 5794 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; @@ -20070,8 +22585,8 @@ yyreduce: } break; - case 800: -#line 5160 "gram.y" + case 892: +#line 5801 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; @@ -20080,8 +22595,8 @@ yyreduce: } break; - case 801: -#line 5167 "gram.y" + case 893: +#line 5808 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; @@ -20091,8 +22606,8 @@ yyreduce: } break; - case 802: -#line 5175 "gram.y" + case 894: +#line 5816 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; @@ -20102,8 +22617,8 @@ yyreduce: } break; - case 803: -#line 5183 "gram.y" + case 895: +#line 5824 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; @@ -20113,8 +22628,8 @@ yyreduce: } break; - case 804: -#line 5191 "gram.y" + case 896: +#line 5832 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; @@ -20124,8 +22639,8 @@ yyreduce: } break; - case 805: -#line 5199 "gram.y" + case 897: +#line 5840 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; @@ -20135,8 +22650,8 @@ yyreduce: } break; - case 806: -#line 5207 "gram.y" + case 898: +#line 5848 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_PREPARE; @@ -20145,8 +22660,8 @@ yyreduce: } break; - case 807: -#line 5214 "gram.y" + case 899: +#line 5855 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT_PREPARED; @@ -20155,8 +22670,8 @@ yyreduce: } break; - case 808: -#line 5221 "gram.y" + case 900: +#line 5862 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_PREPARED; @@ -20165,61 +22680,61 @@ yyreduce: } break; - case 809: -#line 5229 "gram.y" + case 901: +#line 5870 "gram.y" {} break; - case 810: -#line 5230 "gram.y" + case 902: +#line 5871 "gram.y" {} break; - case 811: -#line 5231 "gram.y" + case 903: +#line 5872 "gram.y" {} break; - case 812: -#line 5236 "gram.y" + case 904: +#line 5877 "gram.y" { (yyval.defelt) = makeDefElem("transaction_isolation", - makeStringConst((yyvsp[0].str), NULL)); } + makeStringConst((yyvsp[0].str), (yylsp[0]))); } break; - case 813: -#line 5239 "gram.y" + case 905: +#line 5880 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(TRUE)); } + makeIntConst(TRUE, (yylsp[-1]))); } break; - case 814: -#line 5242 "gram.y" + case 906: +#line 5883 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(FALSE)); } + makeIntConst(FALSE, (yylsp[-1]))); } break; - case 815: -#line 5249 "gram.y" + case 907: +#line 5890 "gram.y" { (yyval.list) = list_make1((yyvsp[0].defelt)); } break; - case 816: -#line 5251 "gram.y" + case 908: +#line 5892 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } break; - case 817: -#line 5253 "gram.y" + case 909: +#line 5894 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 819: -#line 5259 "gram.y" + case 911: +#line 5900 "gram.y" { (yyval.list) = NIL; } break; - case 820: -#line 5273 "gram.y" + case 912: +#line 5914 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[-4].range); @@ -20231,8 +22746,8 @@ yyreduce: } break; - case 821: -#line 5284 "gram.y" + case 913: +#line 5925 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[-4].range); @@ -20244,8 +22759,8 @@ yyreduce: } break; - case 822: -#line 5301 "gram.y" + case 914: +#line 5938 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -20253,8 +22768,8 @@ yyreduce: } break; - case 823: -#line 5307 "gram.y" + case 915: +#line 5944 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -20262,8 +22777,8 @@ yyreduce: } break; - case 824: -#line 5313 "gram.y" + case 916: +#line 5950 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -20271,13 +22786,13 @@ yyreduce: } break; - case 825: -#line 5318 "gram.y" + case 917: +#line 5955 "gram.y" { (yyval.list) = NIL; } break; - case 826: -#line 5329 "gram.y" + case 918: +#line 5966 "gram.y" { LoadStmt *n = makeNode(LoadStmt); n->filename = (yyvsp[0].str); @@ -20285,8 +22800,8 @@ yyreduce: } break; - case 827: -#line 5345 "gram.y" + case 919: +#line 5982 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); n->dbname = (yyvsp[-2].str); @@ -20295,112 +22810,140 @@ yyreduce: } break; - case 828: -#line 5354 "gram.y" + case 920: +#line 5991 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 829: -#line 5355 "gram.y" + case 921: +#line 5992 "gram.y" { (yyval.list) = NIL; } break; - case 830: -#line 5360 "gram.y" + case 922: +#line 5997 "gram.y" { (yyval.defelt) = makeDefElem("tablespace", (Node *)makeString((yyvsp[0].str))); } break; - case 831: -#line 5364 "gram.y" + case 923: +#line 6001 "gram.y" { (yyval.defelt) = makeDefElem("tablespace", NULL); } break; - case 832: -#line 5368 "gram.y" + case 924: +#line 6005 "gram.y" { (yyval.defelt) = makeDefElem("location", (Node *)makeString((yyvsp[0].str))); } break; - case 833: -#line 5372 "gram.y" + case 925: +#line 6009 "gram.y" { (yyval.defelt) = makeDefElem("location", NULL); } break; - case 834: -#line 5376 "gram.y" + case 926: +#line 6013 "gram.y" { (yyval.defelt) = makeDefElem("template", (Node *)makeString((yyvsp[0].str))); } break; - case 835: -#line 5380 "gram.y" + case 927: +#line 6017 "gram.y" { (yyval.defelt) = makeDefElem("template", NULL); } break; - case 836: -#line 5384 "gram.y" + case 928: +#line 6021 "gram.y" { (yyval.defelt) = makeDefElem("encoding", (Node *)makeString((yyvsp[0].str))); } break; - case 837: -#line 5388 "gram.y" + case 929: +#line 6025 "gram.y" { (yyval.defelt) = makeDefElem("encoding", (Node *)makeInteger((yyvsp[0].ival))); } break; - case 838: -#line 5392 "gram.y" + case 930: +#line 6029 "gram.y" { (yyval.defelt) = makeDefElem("encoding", NULL); } break; - case 839: -#line 5396 "gram.y" + case 931: +#line 6033 "gram.y" + { + (yyval.defelt) = makeDefElem("lc_collate", (Node *)makeString((yyvsp[0].str))); + } + break; + + case 932: +#line 6037 "gram.y" + { + (yyval.defelt) = makeDefElem("lc_collate", NULL); + } + break; + + case 933: +#line 6041 "gram.y" + { + (yyval.defelt) = makeDefElem("lc_ctype", (Node *)makeString((yyvsp[0].str))); + } + break; + + case 934: +#line 6045 "gram.y" + { + (yyval.defelt) = makeDefElem("lc_ctype", NULL); + } + break; + + case 935: +#line 6049 "gram.y" { (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[0].ival))); } break; - case 840: -#line 5400 "gram.y" + case 936: +#line 6053 "gram.y" { (yyval.defelt) = makeDefElem("owner", (Node *)makeString((yyvsp[0].str))); } break; - case 841: -#line 5404 "gram.y" + case 937: +#line 6057 "gram.y" { (yyval.defelt) = makeDefElem("owner", NULL); } break; - case 842: -#line 5413 "gram.y" + case 938: +#line 6066 "gram.y" {} break; - case 843: -#line 5414 "gram.y" + case 939: +#line 6067 "gram.y" {} break; - case 844: -#line 5426 "gram.y" + case 940: +#line 6079 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[-2].str); @@ -20409,8 +22952,19 @@ yyreduce: } break; - case 845: -#line 5436 "gram.y" + case 941: +#line 6086 "gram.y" + { + AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); + n->dbname = (yyvsp[-3].str); + n->options = list_make1(makeDefElem("tablespace", + (Node *)makeString((yyvsp[0].str)))); + (yyval.node) = (Node *)n; + } + break; + + case 942: +#line 6097 "gram.y" { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); n->dbname = (yyvsp[-1].str); @@ -20419,25 +22973,25 @@ yyreduce: } break; - case 846: -#line 5446 "gram.y" + case 943: +#line 6107 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } break; - case 847: -#line 5447 "gram.y" + case 944: +#line 6108 "gram.y" { (yyval.list) = NIL; } break; - case 848: -#line 5452 "gram.y" + case 945: +#line 6113 "gram.y" { (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[0].ival))); } break; - case 849: -#line 5466 "gram.y" + case 946: +#line 6127 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[0].str); @@ -20446,8 +23000,8 @@ yyreduce: } break; - case 850: -#line 5473 "gram.y" + case 947: +#line 6134 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[0].str); @@ -20456,8 +23010,8 @@ yyreduce: } break; - case 851: -#line 5490 "gram.y" + case 948: +#line 6151 "gram.y" { CreateDomainStmt *n = makeNode(CreateDomainStmt); n->domainname = (yyvsp[-3].list); @@ -20467,8 +23021,8 @@ yyreduce: } break; - case 852: -#line 5502 "gram.y" + case 949: +#line 6163 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'T'; @@ -20478,8 +23032,8 @@ yyreduce: } break; - case 853: -#line 5511 "gram.y" + case 950: +#line 6172 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'N'; @@ -20488,8 +23042,8 @@ yyreduce: } break; - case 854: -#line 5519 "gram.y" + case 951: +#line 6180 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'O'; @@ -20498,8 +23052,8 @@ yyreduce: } break; - case 855: -#line 5527 "gram.y" + case 952: +#line 6188 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'C'; @@ -20509,8 +23063,8 @@ yyreduce: } break; - case 856: -#line 5536 "gram.y" + case 953: +#line 6197 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; @@ -20521,18 +23075,18 @@ yyreduce: } break; - case 857: -#line 5546 "gram.y" + case 954: +#line 6207 "gram.y" {} break; - case 858: -#line 5547 "gram.y" + case 955: +#line 6208 "gram.y" {} break; - case 859: -#line 5559 "gram.y" + case 956: +#line 6220 "gram.y" { AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); n->dictname = (yyvsp[-1].list); @@ -20541,8 +23095,8 @@ yyreduce: } break; - case 860: -#line 5569 "gram.y" + case 957: +#line 6230 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = (yyvsp[-6].list); @@ -20554,8 +23108,8 @@ yyreduce: } break; - case 861: -#line 5579 "gram.y" + case 958: +#line 6240 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = (yyvsp[-6].list); @@ -20567,8 +23121,8 @@ yyreduce: } break; - case 862: -#line 5589 "gram.y" + case 959: +#line 6250 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = (yyvsp[-6].list); @@ -20580,8 +23134,8 @@ yyreduce: } break; - case 863: -#line 5599 "gram.y" + case 960: +#line 6260 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = (yyvsp[-8].list); @@ -20593,8 +23147,8 @@ yyreduce: } break; - case 864: -#line 5609 "gram.y" + case 961: +#line 6270 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = (yyvsp[-4].list); @@ -20604,8 +23158,8 @@ yyreduce: } break; - case 865: -#line 5617 "gram.y" + case 962: +#line 6278 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = (yyvsp[-6].list); @@ -20615,8 +23169,8 @@ yyreduce: } break; - case 866: -#line 5639 "gram.y" + case 963: +#line 6300 "gram.y" { CreateConversionStmt *n = makeNode(CreateConversionStmt); n->conversion_name = (yyvsp[-6].list); @@ -20628,54 +23182,58 @@ yyreduce: } break; - case 867: -#line 5661 "gram.y" + case 964: +#line 6322 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[-1].range); n->indexname = (yyvsp[0].str); + n->verbose = (yyvsp[-2].boolean); (yyval.node) = (Node*)n; } break; - case 868: -#line 5668 "gram.y" + case 965: +#line 6330 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; + n->verbose = (yyvsp[0].boolean); (yyval.node) = (Node*)n; } break; - case 869: -#line 5676 "gram.y" + case 966: +#line 6339 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[0].range); n->indexname = (yyvsp[-2].str); + n->verbose = (yyvsp[-3].boolean); (yyval.node) = (Node*)n; } break; - case 870: -#line 5685 "gram.y" + case 967: +#line 6349 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 871: -#line 5686 "gram.y" + case 968: +#line 6350 "gram.y" { (yyval.str) = NULL; } break; - case 872: -#line 5699 "gram.y" + case 969: +#line 6363 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->vacuum = true; n->analyze = false; n->full = (yyvsp[-2].boolean); n->freeze_min_age = (yyvsp[-1].boolean) ? 0 : -1; + n->freeze_table_age = (yyvsp[-1].boolean) ? 0 : -1; n->verbose = (yyvsp[0].boolean); n->relation = NULL; n->va_cols = NIL; @@ -20683,14 +23241,15 @@ yyreduce: } break; - case 873: -#line 5711 "gram.y" + case 970: +#line 6376 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->vacuum = true; n->analyze = false; n->full = (yyvsp[-3].boolean); n->freeze_min_age = (yyvsp[-2].boolean) ? 0 : -1; + n->freeze_table_age = (yyvsp[-2].boolean) ? 0 : -1; n->verbose = (yyvsp[-1].boolean); n->relation = (yyvsp[0].range); n->va_cols = NIL; @@ -20698,26 +23257,28 @@ yyreduce: } break; - case 874: -#line 5723 "gram.y" + case 971: +#line 6389 "gram.y" { VacuumStmt *n = (VacuumStmt *) (yyvsp[0].node); n->vacuum = true; n->full = (yyvsp[-3].boolean); n->freeze_min_age = (yyvsp[-2].boolean) ? 0 : -1; + n->freeze_table_age = (yyvsp[-2].boolean) ? 0 : -1; n->verbose |= (yyvsp[-1].boolean); (yyval.node) = (Node *)n; } break; - case 875: -#line 5735 "gram.y" + case 972: +#line 6402 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->vacuum = false; n->analyze = true; n->full = false; n->freeze_min_age = -1; + n->freeze_table_age = -1; n->verbose = (yyvsp[0].boolean); n->relation = NULL; n->va_cols = NIL; @@ -20725,14 +23286,15 @@ yyreduce: } break; - case 876: -#line 5747 "gram.y" + case 973: +#line 6415 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->vacuum = false; n->analyze = true; n->full = false; n->freeze_min_age = -1; + n->freeze_table_age = -1; n->verbose = (yyvsp[-2].boolean); n->relation = (yyvsp[-1].range); n->va_cols = (yyvsp[0].list); @@ -20740,58 +23302,58 @@ yyreduce: } break; - case 877: -#line 5761 "gram.y" + case 974: +#line 6430 "gram.y" {} break; - case 878: -#line 5762 "gram.y" + case 975: +#line 6431 "gram.y" {} break; - case 879: -#line 5766 "gram.y" + case 976: +#line 6435 "gram.y" { (yyval.boolean) = TRUE; } break; - case 880: -#line 5767 "gram.y" + case 977: +#line 6436 "gram.y" { (yyval.boolean) = FALSE; } break; - case 881: -#line 5770 "gram.y" + case 978: +#line 6439 "gram.y" { (yyval.boolean) = TRUE; } break; - case 882: -#line 5771 "gram.y" + case 979: +#line 6440 "gram.y" { (yyval.boolean) = FALSE; } break; - case 883: -#line 5774 "gram.y" + case 980: +#line 6443 "gram.y" { (yyval.boolean) = TRUE; } break; - case 884: -#line 5775 "gram.y" + case 981: +#line 6444 "gram.y" { (yyval.boolean) = FALSE; } break; - case 885: -#line 5779 "gram.y" + case 982: +#line 6448 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 886: -#line 5780 "gram.y" + case 983: +#line 6449 "gram.y" { (yyval.list) = NIL; } break; - case 887: -#line 5792 "gram.y" + case 984: +#line 6461 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->analyze = (yyvsp[-2].boolean); @@ -20801,18 +23363,18 @@ yyreduce: } break; - case 894: -#line 5811 "gram.y" + case 992: +#line 6481 "gram.y" { (yyval.boolean) = TRUE; } break; - case 895: -#line 5812 "gram.y" + case 993: +#line 6482 "gram.y" { (yyval.boolean) = FALSE; } break; - case 896: -#line 5823 "gram.y" + case 994: +#line 6493 "gram.y" { PrepareStmt *n = makeNode(PrepareStmt); n->name = (yyvsp[-3].str); @@ -20822,18 +23384,18 @@ yyreduce: } break; - case 897: -#line 5832 "gram.y" + case 995: +#line 6502 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 898: -#line 5833 "gram.y" + case 996: +#line 6503 "gram.y" { (yyval.list) = NIL; } break; - case 903: -#line 5851 "gram.y" + case 1001: +#line 6521 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[-1].str); @@ -20843,8 +23405,8 @@ yyreduce: } break; - case 904: -#line 5860 "gram.y" + case 1002: +#line 6530 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[-1].str); @@ -20860,18 +23422,18 @@ yyreduce: } break; - case 905: -#line 5875 "gram.y" + case 1003: +#line 6545 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 906: -#line 5876 "gram.y" + case 1004: +#line 6546 "gram.y" { (yyval.list) = NIL; } break; - case 907: -#line 5887 "gram.y" + case 1005: +#line 6557 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[0].str); @@ -20879,8 +23441,8 @@ yyreduce: } break; - case 908: -#line 5893 "gram.y" + case 1006: +#line 6563 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[0].str); @@ -20888,8 +23450,8 @@ yyreduce: } break; - case 909: -#line 5899 "gram.y" + case 1007: +#line 6569 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; @@ -20897,8 +23459,8 @@ yyreduce: } break; - case 910: -#line 5905 "gram.y" + case 1008: +#line 6575 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; @@ -20906,8 +23468,8 @@ yyreduce: } break; - case 911: -#line 5921 "gram.y" + case 1009: +#line 6591 "gram.y" { (yyvsp[-1].istmt)->relation = (yyvsp[-2].range); (yyvsp[-1].istmt)->returningList = (yyvsp[0].list); @@ -20915,8 +23477,8 @@ yyreduce: } break; - case 912: -#line 5930 "gram.y" + case 1010: +#line 6600 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; @@ -20924,8 +23486,8 @@ yyreduce: } break; - case 913: -#line 5936 "gram.y" + case 1011: +#line 6606 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = (yyvsp[-2].list); @@ -20933,8 +23495,8 @@ yyreduce: } break; - case 914: -#line 5942 "gram.y" + case 1012: +#line 6612 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; @@ -20942,39 +23504,39 @@ yyreduce: } break; - case 915: -#line 5951 "gram.y" + case 1013: +#line 6621 "gram.y" { (yyval.list) = list_make1((yyvsp[0].target)); } break; - case 916: -#line 5953 "gram.y" + case 1014: +#line 6623 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } break; - case 917: -#line 5958 "gram.y" + case 1015: +#line 6628 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[-1].str); - (yyval.target)->indirection = (yyvsp[0].list); + (yyval.target)->indirection = check_indirection((yyvsp[0].list)); (yyval.target)->val = NULL; (yyval.target)->location = (yylsp[-1]); } break; - case 918: -#line 5968 "gram.y" + case 1016: +#line 6638 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 919: -#line 5969 "gram.y" + case 1017: +#line 6639 "gram.y" { (yyval.list) = NIL; } break; - case 920: -#line 5982 "gram.y" + case 1018: +#line 6652 "gram.y" { DeleteStmt *n = makeNode(DeleteStmt); n->relation = (yyvsp[-3].range); @@ -20985,18 +23547,18 @@ yyreduce: } break; - case 921: -#line 5993 "gram.y" + case 1019: +#line 6663 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 922: -#line 5994 "gram.y" + case 1020: +#line 6664 "gram.y" { (yyval.list) = NIL; } break; - case 923: -#line 5998 "gram.y" + case 1021: +#line 6676 "gram.y" { LockStmt *n = makeNode(LockStmt); @@ -21007,68 +23569,68 @@ yyreduce: } break; - case 924: -#line 6008 "gram.y" + case 1022: +#line 6686 "gram.y" { (yyval.ival) = (yyvsp[-1].ival); } break; - case 925: -#line 6009 "gram.y" + case 1023: +#line 6687 "gram.y" { (yyval.ival) = AccessExclusiveLock; } break; - case 926: -#line 6012 "gram.y" + case 1024: +#line 6690 "gram.y" { (yyval.ival) = AccessShareLock; } break; - - case 927: -#line 6013 "gram.y" + + case 1025: +#line 6691 "gram.y" { (yyval.ival) = RowShareLock; } break; - case 928: -#line 6014 "gram.y" + case 1026: +#line 6692 "gram.y" { (yyval.ival) = RowExclusiveLock; } break; - case 929: -#line 6015 "gram.y" + case 1027: +#line 6693 "gram.y" { (yyval.ival) = ShareUpdateExclusiveLock; } break; - case 930: -#line 6016 "gram.y" + case 1028: +#line 6694 "gram.y" { (yyval.ival) = ShareLock; } break; - case 931: -#line 6017 "gram.y" + case 1029: +#line 6695 "gram.y" { (yyval.ival) = ShareRowExclusiveLock; } break; - case 932: -#line 6018 "gram.y" + case 1030: +#line 6696 "gram.y" { (yyval.ival) = ExclusiveLock; } break; - case 933: -#line 6019 "gram.y" + case 1031: +#line 6697 "gram.y" { (yyval.ival) = AccessExclusiveLock; } break; - case 934: -#line 6022 "gram.y" + case 1032: +#line 6700 "gram.y" { (yyval.boolean) = TRUE; } break; - case 935: -#line 6023 "gram.y" + case 1033: +#line 6701 "gram.y" { (yyval.boolean) = FALSE; } break; - case 936: -#line 6039 "gram.y" + case 1034: +#line 6717 "gram.y" { UpdateStmt *n = makeNode(UpdateStmt); n->relation = (yyvsp[-5].range); @@ -21080,36 +23642,36 @@ yyreduce: } break; - case 937: -#line 6051 "gram.y" + case 1035: +#line 6729 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 938: -#line 6052 "gram.y" + case 1036: +#line 6730 "gram.y" { (yyval.list) = list_concat((yyvsp[-2].list),(yyvsp[0].list)); } break; - case 939: -#line 6056 "gram.y" + case 1037: +#line 6734 "gram.y" { (yyval.list) = list_make1((yyvsp[0].target)); } break; - case 940: -#line 6057 "gram.y" + case 1038: +#line 6735 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 941: -#line 6062 "gram.y" + case 1039: +#line 6740 "gram.y" { (yyval.target) = (yyvsp[-2].target); (yyval.target)->val = (Node *) (yyvsp[0].node); } break; - case 942: -#line 6070 "gram.y" + case 1040: +#line 6748 "gram.y" { ListCell *col_cell; ListCell *val_cell; @@ -21122,7 +23684,8 @@ yyreduce: 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"))); + errmsg("number of columns does not match number of values"), + scanner_errposition((yylsp[-4])))); forboth(col_cell, (yyvsp[-3].list), val_cell, (yyvsp[0].list)) { ResTarget *res_col = (ResTarget *) lfirst(col_cell); @@ -21135,29 +23698,29 @@ yyreduce: } break; - case 943: -#line 6097 "gram.y" + case 1041: +#line 6776 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[-1].str); - (yyval.target)->indirection = (yyvsp[0].list); + (yyval.target)->indirection = check_indirection((yyvsp[0].list)); (yyval.target)->val = NULL; /* upper production sets this */ (yyval.target)->location = (yylsp[-1]); } break; - case 944: -#line 6107 "gram.y" + case 1042: +#line 6786 "gram.y" { (yyval.list) = list_make1((yyvsp[0].target)); } break; - case 945: -#line 6108 "gram.y" + case 1043: +#line 6787 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].target)); } break; - case 946: -#line 6119 "gram.y" + case 1044: +#line 6798 "gram.y" { DeclareCursorStmt *n = makeNode(DeclareCursorStmt); n->portalname = (yyvsp[-5].str); @@ -21168,141 +23731,248 @@ yyreduce: } break; - case 947: -#line 6129 "gram.y" + case 1045: +#line 6808 "gram.y" { (yyval.ival) = 0; } break; - case 948: -#line 6130 "gram.y" + case 1046: +#line 6809 "gram.y" { (yyval.ival) = (yyvsp[-2].ival) | CURSOR_OPT_NO_SCROLL; } break; - case 949: -#line 6131 "gram.y" + case 1047: +#line 6810 "gram.y" { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_SCROLL; } break; - case 950: -#line 6132 "gram.y" + case 1048: +#line 6811 "gram.y" { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_BINARY; } break; - case 951: -#line 6133 "gram.y" + case 1049: +#line 6812 "gram.y" { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_INSENSITIVE; } break; - case 952: -#line 6136 "gram.y" + case 1050: +#line 6815 "gram.y" { (yyval.ival) = 0; } break; - case 953: -#line 6137 "gram.y" + case 1051: +#line 6816 "gram.y" { (yyval.ival) = CURSOR_OPT_HOLD; } break; - case 954: -#line 6138 "gram.y" + case 1052: +#line 6817 "gram.y" { (yyval.ival) = 0; } break; - case 957: -#line 6191 "gram.y" + case 1055: +#line 6870 "gram.y" { (yyval.node) = (yyvsp[-1].node); } break; - case 958: -#line 6192 "gram.y" + case 1056: +#line 6871 "gram.y" { (yyval.node) = (yyvsp[-1].node); } break; - case 959: -#line 6202 "gram.y" + case 1057: +#line 6885 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 960: -#line 6204 "gram.y" + case 1058: +#line 6887 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, - NULL, NULL); + NULL, NULL, NULL); (yyval.node) = (yyvsp[-1].node); } break; - case 961: -#line 6210 "gram.y" + case 1059: +#line 6893 "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)); + list_nth((yyvsp[0].list), 0), list_nth((yyvsp[0].list), 1), + NULL); (yyval.node) = (yyvsp[-3].node); } break; - case 962: -#line 6216 "gram.y" + case 1060: +#line 6900 "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)); + list_nth((yyvsp[-1].list), 0), list_nth((yyvsp[-1].list), 1), + NULL); (yyval.node) = (yyvsp[-3].node); } break; - case 963: -#line 6224 "gram.y" + case 1061: +#line 6907 "gram.y" + { + insertSelectOptions((SelectStmt *) (yyvsp[0].node), NULL, NIL, + NULL, NULL, + (yyvsp[-1].with)); + (yyval.node) = (yyvsp[0].node); + } + break; + + case 1062: +#line 6914 "gram.y" + { + insertSelectOptions((SelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + NULL, NULL, + (yyvsp[-2].with)); + (yyval.node) = (yyvsp[-1].node); + } + break; + + case 1063: +#line 6921 "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)); + (yyval.node) = (yyvsp[-3].node); + } + break; + + case 1064: +#line 6928 "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)); + (yyval.node) = (yyvsp[-3].node); + } + break; + + case 1065: +#line 6937 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 964: -#line 6225 "gram.y" + case 1066: +#line 6938 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 965: -#line 6255 "gram.y" + case 1067: +#line 6968 "gram.y" { SelectStmt *n = makeNode(SelectStmt); - n->distinctClause = (yyvsp[-6].list); - n->targetList = (yyvsp[-5].list); - n->intoClause = (yyvsp[-4].into); - n->fromClause = (yyvsp[-3].list); - n->whereClause = (yyvsp[-2].node); - n->groupClause = (yyvsp[-1].list); - n->havingClause = (yyvsp[0].node); + 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); (yyval.node) = (Node *)n; } break; - case 966: -#line 6266 "gram.y" + case 1068: +#line 6980 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 967: -#line 6268 "gram.y" + case 1069: +#line 6982 "gram.y" + { + /* same as SELECT * FROM relation_expr */ + ColumnRef *cr = makeNode(ColumnRef); + ResTarget *rt = makeNode(ResTarget); + SelectStmt *n = makeNode(SelectStmt); + + cr->fields = list_make1(makeNode(A_Star)); + cr->location = -1; + + rt->name = NULL; + rt->indirection = NIL; + rt->val = (Node *)cr; + rt->location = -1; + + n->targetList = list_make1(rt); + n->fromClause = list_make1((yyvsp[0].range)); + (yyval.node) = (Node *)n; + } + break; + + case 1070: +#line 7001 "gram.y" { (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); } break; - case 968: -#line 6272 "gram.y" + case 1071: +#line 7005 "gram.y" { (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); } break; - case 969: -#line 6276 "gram.y" + case 1072: +#line 7009 "gram.y" { (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); } break; - case 970: -#line 6283 "gram.y" + case 1073: +#line 7024 "gram.y" + { + (yyval.with) = makeNode(WithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = false; + (yyval.with)->location = (yylsp[-1]); + } + break; + + case 1074: +#line 7031 "gram.y" + { + (yyval.with) = makeNode(WithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = true; + (yyval.with)->location = (yylsp[-2]); + } + break; + + case 1075: +#line 7040 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } + break; + + case 1076: +#line 7041 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } + break; + + case 1077: +#line 7045 "gram.y" + { + CommonTableExpr *n = makeNode(CommonTableExpr); + n->ctename = (yyvsp[-3].str); + n->aliascolnames = (yyvsp[-2].list); + n->ctequery = (yyvsp[0].node); + n->location = (yylsp[-3]); + (yyval.node) = (Node *) n; + } + break; + + case 1078: +#line 7057 "gram.y" { (yyval.into) = makeNode(IntoClause); (yyval.into)->rel = (yyvsp[0].range); @@ -21313,280 +23983,336 @@ yyreduce: } break; - case 971: -#line 6292 "gram.y" + case 1079: +#line 7066 "gram.y" { (yyval.into) = NULL; } break; - case 972: -#line 6301 "gram.y" + case 1080: +#line 7075 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = true; } break; - case 973: -#line 6306 "gram.y" + case 1081: +#line 7080 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = true; } break; - case 974: -#line 6311 "gram.y" + case 1082: +#line 7085 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = true; } break; - case 975: -#line 6316 "gram.y" + case 1083: +#line 7090 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = true; } break; - case 976: -#line 6321 "gram.y" + case 1084: +#line 7095 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = true; } break; - case 977: -#line 6326 "gram.y" + case 1085: +#line 7100 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = true; } break; - case 978: -#line 6331 "gram.y" + case 1086: +#line 7105 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = false; } break; - case 979: -#line 6336 "gram.y" + case 1087: +#line 7110 "gram.y" { (yyval.range) = (yyvsp[0].range); (yyval.range)->istemp = false; } break; - case 980: -#line 6342 "gram.y" + case 1088: +#line 7116 "gram.y" {} break; - case 981: -#line 6343 "gram.y" + case 1089: +#line 7117 "gram.y" {} break; - case 982: -#line 6346 "gram.y" + case 1090: +#line 7120 "gram.y" { (yyval.boolean) = TRUE; } break; - case 983: -#line 6347 "gram.y" + case 1091: +#line 7121 "gram.y" { (yyval.boolean) = FALSE; } break; - case 984: -#line 6348 "gram.y" + case 1092: +#line 7122 "gram.y" { (yyval.boolean) = FALSE; } break; - case 985: -#line 6355 "gram.y" + case 1093: +#line 7129 "gram.y" { (yyval.list) = list_make1(NIL); } break; - case 986: -#line 6356 "gram.y" + case 1094: +#line 7130 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 987: -#line 6357 "gram.y" + case 1095: +#line 7131 "gram.y" { (yyval.list) = NIL; } break; - case 988: -#line 6358 "gram.y" + case 1096: +#line 7132 "gram.y" { (yyval.list) = NIL; } break; - case 989: -#line 6362 "gram.y" + case 1097: +#line 7136 "gram.y" { (yyval.list) = (yyvsp[0].list);} break; - case 990: -#line 6363 "gram.y" + case 1098: +#line 7137 "gram.y" { (yyval.list) = NIL; } break; - case 991: -#line 6367 "gram.y" + case 1099: +#line 7141 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 992: -#line 6371 "gram.y" + case 1100: +#line 7145 "gram.y" { (yyval.list) = list_make1((yyvsp[0].sortby)); } break; - case 993: -#line 6372 "gram.y" + case 1101: +#line 7146 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].sortby)); } break; - case 994: -#line 6376 "gram.y" + case 1102: +#line 7150 "gram.y" { (yyval.sortby) = makeNode(SortBy); (yyval.sortby)->node = (yyvsp[-3].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]); } break; - case 995: -#line 6384 "gram.y" + case 1103: +#line 7159 "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)->useOp = NIL; + (yyval.sortby)->location = -1; /* no operator */ } break; - case 996: -#line 6396 "gram.y" + case 1104: +#line 7172 "gram.y" { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-2].node)); } break; - case 997: -#line 6398 "gram.y" + case 1105: +#line 7174 "gram.y" { (yyval.list) = list_make2((yyvsp[-2].node), (yyvsp[0].node)); } break; - case 998: -#line 6400 "gram.y" - { (yyval.list) = list_make2(NULL, (yyvsp[0].node)); } + case 1106: +#line 7176 "gram.y" + { (yyval.list) = list_make2(NULL, (yyvsp[0].node)); } + break; + + case 1107: +#line 7178 "gram.y" + { (yyval.list) = list_make2((yyvsp[0].node), NULL); } + break; + + case 1108: +#line 7180 "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."), + scanner_errposition((yylsp[-3])))); + } + break; + + case 1109: +#line 7190 "gram.y" + { (yyval.list) = list_make2((yyvsp[-1].node), NULL); } + break; + + case 1110: +#line 7192 "gram.y" + { (yyval.list) = list_make2(NULL, (yyvsp[-2].node)); } + break; + + case 1111: +#line 7194 "gram.y" + { (yyval.list) = list_make2((yyvsp[-6].node), (yyvsp[-2].node)); } + break; + + case 1112: +#line 7198 "gram.y" + { (yyval.list) = (yyvsp[0].list); } + break; + + case 1113: +#line 7200 "gram.y" + { (yyval.list) = list_make2(NULL,NULL); } + break; + + case 1114: +#line 7204 "gram.y" + { (yyval.node) = (yyvsp[0].node); } + break; + + case 1115: +#line 7206 "gram.y" + { + /* LIMIT ALL is represented as a NULL constant */ + (yyval.node) = makeNullAConst((yylsp[0])); + } + break; + + case 1116: +#line 7218 "gram.y" + { (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); } + break; + + case 1117: +#line 7219 "gram.y" + { (yyval.node) = (yyvsp[-1].node); } break; - case 999: -#line 6402 "gram.y" - { (yyval.list) = list_make2((yyvsp[0].node), NULL); } + case 1118: +#line 7220 "gram.y" + { (yyval.node) = makeIntConst(1, -1); } break; - case 1000: -#line 6404 "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."))); - } + case 1119: +#line 7224 "gram.y" + { (yyval.node) = (yyvsp[0].node); } break; - case 1001: -#line 6414 "gram.y" - { (yyval.list) = (yyvsp[0].list); } + case 1120: +#line 7232 "gram.y" + { (yyval.node) = (yyvsp[0].node); } break; - case 1002: -#line 6416 "gram.y" - { (yyval.list) = list_make2(NULL,NULL); } + case 1121: +#line 7237 "gram.y" + { (yyval.ival) = 0; } break; - case 1003: -#line 6420 "gram.y" - { (yyval.node) = (yyvsp[0].node); } + case 1122: +#line 7238 "gram.y" + { (yyval.ival) = 0; } break; - case 1004: -#line 6422 "gram.y" - { - /* LIMIT ALL is represented as a NULL constant */ - A_Const *n = makeNode(A_Const); - n->val.type = T_Null; - (yyval.node) = (Node *)n; - } + case 1123: +#line 7243 "gram.y" + { (yyval.ival) = 0; } break; - case 1005: -#line 6431 "gram.y" - { (yyval.node) = (yyvsp[0].node); } + case 1124: +#line 7244 "gram.y" + { (yyval.ival) = 0; } break; - case 1006: -#line 6435 "gram.y" + case 1125: +#line 7248 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1007: -#line 6436 "gram.y" + case 1126: +#line 7249 "gram.y" { (yyval.list) = NIL; } break; - case 1008: -#line 6440 "gram.y" + case 1127: +#line 7253 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1009: -#line 6441 "gram.y" + case 1128: +#line 7254 "gram.y" { (yyval.node) = NULL; } break; - case 1010: -#line 6445 "gram.y" + case 1129: +#line 7258 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1011: -#line 6446 "gram.y" + case 1130: +#line 7259 "gram.y" { (yyval.list) = NIL; } break; - case 1012: -#line 6450 "gram.y" + case 1131: +#line 7263 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1013: -#line 6451 "gram.y" + case 1132: +#line 7264 "gram.y" { (yyval.list) = NIL; } break; - case 1014: -#line 6455 "gram.y" + case 1133: +#line 7268 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 1015: -#line 6456 "gram.y" + case 1134: +#line 7269 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } break; - case 1016: -#line 6461 "gram.y" + case 1135: +#line 7274 "gram.y" { LockingClause *n = makeNode(LockingClause); n->lockedRels = (yyvsp[-1].list); @@ -21596,8 +24322,8 @@ yyreduce: } break; - case 1017: -#line 6469 "gram.y" + case 1136: +#line 7282 "gram.y" { LockingClause *n = makeNode(LockingClause); n->lockedRels = (yyvsp[-1].list); @@ -21607,18 +24333,18 @@ yyreduce: } break; - case 1018: -#line 6479 "gram.y" + case 1137: +#line 7292 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1019: -#line 6480 "gram.y" + case 1138: +#line 7293 "gram.y" { (yyval.list) = NIL; } break; - case 1020: -#line 6486 "gram.y" + case 1139: +#line 7299 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->valuesLists = list_make1((yyvsp[0].list)); @@ -21626,8 +24352,8 @@ yyreduce: } break; - case 1021: -#line 6492 "gram.y" + case 1140: +#line 7305 "gram.y" { SelectStmt *n = (SelectStmt *) (yyvsp[-2].node); n->valuesLists = lappend(n->valuesLists, (yyvsp[0].list)); @@ -21635,43 +24361,43 @@ yyreduce: } break; - case 1022: -#line 6509 "gram.y" + case 1141: +#line 7322 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1023: -#line 6510 "gram.y" + case 1142: +#line 7323 "gram.y" { (yyval.list) = NIL; } break; - case 1024: -#line 6514 "gram.y" + case 1143: +#line 7327 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 1025: -#line 6515 "gram.y" + case 1144: +#line 7328 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 1026: -#line 6526 "gram.y" + case 1145: +#line 7339 "gram.y" { (yyval.node) = (Node *) (yyvsp[0].range); } break; - case 1027: -#line 6530 "gram.y" + case 1146: +#line 7343 "gram.y" { (yyvsp[-1].range)->alias = (yyvsp[0].alias); (yyval.node) = (Node *) (yyvsp[-1].range); } break; - case 1028: -#line 6535 "gram.y" + case 1147: +#line 7348 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->funccallnode = (yyvsp[0].node); @@ -21680,8 +24406,8 @@ yyreduce: } break; - case 1029: -#line 6542 "gram.y" + case 1148: +#line 7355 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->funccallnode = (yyvsp[-1].node); @@ -21691,8 +24417,8 @@ yyreduce: } break; - case 1030: -#line 6550 "gram.y" + case 1149: +#line 7363 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->funccallnode = (yyvsp[-4].node); @@ -21701,8 +24427,8 @@ yyreduce: } break; - case 1031: -#line 6557 "gram.y" + case 1150: +#line 7370 "gram.y" { RangeFunction *n = makeNode(RangeFunction); Alias *a = makeNode(Alias); @@ -21714,8 +24440,8 @@ yyreduce: } break; - case 1032: -#line 6567 "gram.y" + case 1151: +#line 7380 "gram.y" { RangeFunction *n = makeNode(RangeFunction); Alias *a = makeNode(Alias); @@ -21727,8 +24453,8 @@ yyreduce: } break; - case 1033: -#line 6577 "gram.y" + case 1152: +#line 7390 "gram.y" { /* * The SQL spec does not permit a subselect @@ -21746,18 +24472,20 @@ yyreduce: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), - errhint("For example, FROM (VALUES ...) [AS] foo."))); + errhint("For example, FROM (VALUES ...) [AS] foo."), + scanner_errposition((yylsp[0])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), - errhint("For example, FROM (SELECT ...) [AS] foo."))); + errhint("For example, FROM (SELECT ...) [AS] foo."), + scanner_errposition((yylsp[0])))); (yyval.node) = NULL; } break; - case 1034: -#line 6603 "gram.y" + case 1153: +#line 7418 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->subquery = (yyvsp[-1].node); @@ -21766,30 +24494,30 @@ yyreduce: } break; - case 1035: -#line 6610 "gram.y" + case 1154: +#line 7425 "gram.y" { (yyval.node) = (Node *) (yyvsp[0].jexpr); } break; - case 1036: -#line 6614 "gram.y" + case 1155: +#line 7429 "gram.y" { (yyvsp[-2].jexpr)->alias = (yyvsp[0].alias); (yyval.node) = (Node *) (yyvsp[-2].jexpr); } break; - case 1037: -#line 6640 "gram.y" + case 1156: +#line 7455 "gram.y" { (yyval.jexpr) = (yyvsp[-1].jexpr); } break; - case 1038: -#line 6644 "gram.y" + case 1157: +#line 7459 "gram.y" { /* CROSS JOIN is same as unqualified inner join */ JoinExpr *n = makeNode(JoinExpr); @@ -21803,8 +24531,8 @@ yyreduce: } break; - case 1039: -#line 6656 "gram.y" + case 1158: +#line 7471 "gram.y" { JoinExpr *n = makeNode(JoinExpr); n->jointype = (yyvsp[-3].jtype); @@ -21819,8 +24547,8 @@ yyreduce: } break; - case 1040: -#line 6669 "gram.y" + case 1159: +#line 7484 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); @@ -21836,8 +24564,8 @@ yyreduce: } break; - case 1041: -#line 6683 "gram.y" + case 1160: +#line 7498 "gram.y" { JoinExpr *n = makeNode(JoinExpr); n->jointype = (yyvsp[-2].jtype); @@ -21850,8 +24578,8 @@ yyreduce: } break; - case 1042: -#line 6694 "gram.y" + case 1161: +#line 7509 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); @@ -21865,8 +24593,8 @@ yyreduce: } break; - case 1043: -#line 6709 "gram.y" + case 1162: +#line 7524 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[-3].str); @@ -21874,16 +24602,16 @@ yyreduce: } break; - case 1044: -#line 6715 "gram.y" + case 1163: +#line 7530 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[0].str); } break; - case 1045: -#line 6720 "gram.y" + case 1164: +#line 7535 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[-3].str); @@ -21891,56 +24619,56 @@ yyreduce: } break; - case 1046: -#line 6726 "gram.y" + case 1165: +#line 7541 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[0].str); } break; - case 1047: -#line 6732 "gram.y" + case 1166: +#line 7547 "gram.y" { (yyval.jtype) = JOIN_FULL; } break; - case 1048: -#line 6733 "gram.y" + case 1167: +#line 7548 "gram.y" { (yyval.jtype) = JOIN_LEFT; } break; - case 1049: -#line 6734 "gram.y" + case 1168: +#line 7549 "gram.y" { (yyval.jtype) = JOIN_RIGHT; } break; - case 1050: -#line 6735 "gram.y" + case 1169: +#line 7550 "gram.y" { (yyval.jtype) = JOIN_INNER; } break; - case 1051: -#line 6739 "gram.y" + case 1170: +#line 7554 "gram.y" { (yyval.node) = NULL; } break; - case 1052: -#line 6740 "gram.y" + case 1171: +#line 7555 "gram.y" { (yyval.node) = NULL; } break; - case 1053: -#line 6752 "gram.y" + case 1172: +#line 7567 "gram.y" { (yyval.node) = (Node *) (yyvsp[-1].list); } break; - case 1054: -#line 6753 "gram.y" + case 1173: +#line 7568 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1055: -#line 6759 "gram.y" + case 1174: +#line 7574 "gram.y" { /* default inheritance */ (yyval.range) = (yyvsp[0].range); @@ -21949,8 +24677,8 @@ yyreduce: } break; - case 1056: -#line 6766 "gram.y" + case 1175: +#line 7581 "gram.y" { /* inheritance query */ (yyval.range) = (yyvsp[-1].range); @@ -21959,8 +24687,8 @@ yyreduce: } break; - case 1057: -#line 6773 "gram.y" + case 1176: +#line 7588 "gram.y" { /* no inheritance */ (yyval.range) = (yyvsp[0].range); @@ -21969,8 +24697,8 @@ yyreduce: } break; - case 1058: -#line 6780 "gram.y" + case 1177: +#line 7595 "gram.y" { /* no inheritance, SQL99-style syntax */ (yyval.range) = (yyvsp[-1].range); @@ -21979,15 +24707,25 @@ yyreduce: } break; - case 1059: -#line 6799 "gram.y" + case 1178: +#line 7605 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].range)); } + break; + + case 1179: +#line 7606 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } + break; + + case 1180: +#line 7620 "gram.y" { (yyval.range) = (yyvsp[0].range); } break; - case 1060: -#line 6803 "gram.y" + case 1181: +#line 7624 "gram.y" { Alias *alias = makeNode(Alias); alias->aliasname = (yyvsp[0].str); @@ -21996,8 +24734,8 @@ yyreduce: } break; - case 1061: -#line 6810 "gram.y" + case 1182: +#line 7631 "gram.y" { Alias *alias = makeNode(Alias); alias->aliasname = (yyvsp[0].str); @@ -22006,28 +24744,28 @@ yyreduce: } break; - case 1062: -#line 6819 "gram.y" + case 1183: +#line 7640 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1063: -#line 6824 "gram.y" + case 1184: +#line 7645 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1064: -#line 6825 "gram.y" + case 1185: +#line 7646 "gram.y" { (yyval.node) = NULL; } break; - case 1065: -#line 6830 "gram.y" + case 1186: +#line 7651 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1066: -#line 6832 "gram.y" + case 1187: +#line 7653 "gram.y" { CurrentOfExpr *n = makeNode(CurrentOfExpr); /* cvarno is filled in by parse analysis */ @@ -22037,8 +24775,8 @@ yyreduce: } break; - case 1067: -#line 6840 "gram.y" + case 1188: +#line 7661 "gram.y" { CurrentOfExpr *n = makeNode(CurrentOfExpr); /* cvarno is filled in by parse analysis */ @@ -22048,27 +24786,27 @@ yyreduce: } break; - case 1068: -#line 6847 "gram.y" + case 1189: +#line 7668 "gram.y" { (yyval.node) = NULL; } break; - case 1069: -#line 6853 "gram.y" + case 1190: +#line 7674 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 1070: -#line 6857 "gram.y" + case 1191: +#line 7678 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 1071: -#line 6863 "gram.y" + case 1192: +#line 7684 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[-1].str); @@ -22079,16 +24817,16 @@ yyreduce: } break; - case 1072: -#line 6884 "gram.y" + case 1193: +#line 7705 "gram.y" { (yyval.typnam) = (yyvsp[-1].typnam); (yyval.typnam)->arrayBounds = (yyvsp[0].list); } break; - case 1073: -#line 6889 "gram.y" + case 1194: +#line 7710 "gram.y" { (yyval.typnam) = (yyvsp[-1].typnam); (yyval.typnam)->arrayBounds = (yyvsp[0].list); @@ -22096,105 +24834,129 @@ yyreduce: } break; - case 1074: -#line 6895 "gram.y" + case 1195: +#line 7717 "gram.y" { - /* SQL99's redundant syntax */ (yyval.typnam) = (yyvsp[-4].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); } break; - case 1075: -#line 6901 "gram.y" + case 1196: +#line 7722 "gram.y" { - /* SQL99's redundant syntax */ (yyval.typnam) = (yyvsp[-4].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); (yyval.typnam)->setof = TRUE; } break; - case 1076: -#line 6911 "gram.y" + case 1197: +#line 7728 "gram.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); + } + break; + + case 1198: +#line 7733 "gram.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); + (yyval.typnam)->setof = TRUE; + } + break; + + case 1199: +#line 7742 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), makeInteger(-1)); } break; - case 1077: -#line 6913 "gram.y" + case 1200: +#line 7744 "gram.y" { (yyval.list) = lappend((yyvsp[-3].list), makeInteger((yyvsp[-1].ival))); } break; - case 1078: -#line 6915 "gram.y" + case 1201: +#line 7746 "gram.y" { (yyval.list) = NIL; } break; - case 1079: -#line 6919 "gram.y" + case 1202: +#line 7750 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1080: -#line 6920 "gram.y" + case 1203: +#line 7751 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1081: -#line 6921 "gram.y" + case 1204: +#line 7752 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1082: -#line 6922 "gram.y" + case 1205: +#line 7753 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1083: -#line 6923 "gram.y" + case 1206: +#line 7754 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1084: -#line 6925 "gram.y" + case 1207: +#line 7756 "gram.y" { (yyval.typnam) = (yyvsp[-1].typnam); - if ((yyvsp[0].ival) != INTERVAL_FULL_RANGE) - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[0].ival))); + (yyval.typnam)->typmods = (yyvsp[0].list); } break; - case 1085: -#line 6931 "gram.y" + case 1208: +#line 7761 "gram.y" { (yyval.typnam) = (yyvsp[-4].typnam); - (yyval.typnam)->typmods = list_make2(makeIntConst((yyvsp[0].ival)), - makeIntConst((yyvsp[-2].ival))); + if ((yyvsp[0].list) != NIL) + { + if (list_length((yyvsp[0].list)) != 1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("interval precision specified twice"), + scanner_errposition((yylsp[-4])))); + (yyval.typnam)->typmods = lappend((yyvsp[0].list), makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); + } + else + (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); } break; - case 1086: -#line 6950 "gram.y" + case 1209: +#line 7790 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1087: -#line 6951 "gram.y" + case 1210: +#line 7791 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1088: -#line 6952 "gram.y" + case 1211: +#line 7792 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1089: -#line 6953 "gram.y" + case 1212: +#line 7793 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1090: -#line 6965 "gram.y" + case 1213: +#line 7805 "gram.y" { (yyval.typnam) = makeTypeName((yyvsp[-1].str)); (yyval.typnam)->typmods = (yyvsp[0].list); @@ -22202,8 +24964,8 @@ yyreduce: } break; - case 1091: -#line 6971 "gram.y" + case 1214: +#line 7811 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-2].str)), (yyvsp[-1].list))); (yyval.typnam)->typmods = (yyvsp[0].list); @@ -22211,74 +24973,74 @@ yyreduce: } break; - case 1092: -#line 6978 "gram.y" + case 1215: +#line 7818 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 1093: -#line 6979 "gram.y" + case 1216: +#line 7819 "gram.y" { (yyval.list) = NIL; } break; - case 1094: -#line 6986 "gram.y" + case 1217: +#line 7826 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[0]); } break; - case 1095: -#line 6991 "gram.y" + case 1218: +#line 7831 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[0]); } break; - case 1096: -#line 6996 "gram.y" + case 1219: +#line 7836 "gram.y" { (yyval.typnam) = SystemTypeName("int2"); (yyval.typnam)->location = (yylsp[0]); } break; - case 1097: -#line 7001 "gram.y" + case 1220: +#line 7841 "gram.y" { (yyval.typnam) = SystemTypeName("int8"); (yyval.typnam)->location = (yylsp[0]); } break; - case 1098: -#line 7006 "gram.y" + case 1221: +#line 7846 "gram.y" { (yyval.typnam) = SystemTypeName("float4"); (yyval.typnam)->location = (yylsp[0]); } break; - case 1099: -#line 7011 "gram.y" + case 1222: +#line 7851 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); (yyval.typnam)->location = (yylsp[-1]); } break; - case 1100: -#line 7016 "gram.y" + case 1223: +#line 7856 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); (yyval.typnam)->location = (yylsp[-1]); } break; - case 1101: -#line 7021 "gram.y" + case 1224: +#line 7861 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[0].list); @@ -22286,8 +25048,8 @@ yyreduce: } break; - case 1102: -#line 7027 "gram.y" + case 1225: +#line 7867 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[0].list); @@ -22295,8 +25057,8 @@ yyreduce: } break; - case 1103: -#line 7033 "gram.y" + case 1226: +#line 7873 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[0].list); @@ -22304,16 +25066,16 @@ yyreduce: } break; - case 1104: -#line 7039 "gram.y" + case 1227: +#line 7879 "gram.y" { (yyval.typnam) = SystemTypeName("bool"); (yyval.typnam)->location = (yylsp[0]); } break; - case 1105: -#line 7046 "gram.y" + case 1228: +#line 7886 "gram.y" { /* * Check FLOAT() precision limits assuming IEEE floating @@ -22322,7 +25084,8 @@ yyreduce: if ((yyvsp[-1].ival) < 1) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be at least 1 bit"))); + errmsg("precision for type float must be at least 1 bit"), + scanner_errposition((yylsp[-1])))); else if ((yyvsp[-1].ival) <= 24) (yyval.typnam) = SystemTypeName("float4"); else if ((yyvsp[-1].ival) <= 53) @@ -22330,48 +25093,49 @@ yyreduce: else ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be less than 54 bits"))); + errmsg("precision for type float must be less than 54 bits"), + scanner_errposition((yylsp[-1])))); } break; - case 1106: -#line 7065 "gram.y" + case 1229: +#line 7907 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); } break; - case 1107: -#line 7075 "gram.y" + case 1230: +#line 7917 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1108: -#line 7079 "gram.y" + case 1231: +#line 7921 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1109: -#line 7087 "gram.y" + case 1232: +#line 7929 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1110: -#line 7091 "gram.y" + case 1233: +#line 7933 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); (yyval.typnam)->typmods = NIL; } break; - case 1111: -#line 7099 "gram.y" + case 1234: +#line 7941 "gram.y" { char *typname; @@ -22382,8 +25146,8 @@ yyreduce: } break; - case 1112: -#line 7111 "gram.y" + case 1235: +#line 7953 "gram.y" { /* bit defaults to bit(1), varbit to no limit */ if ((yyvsp[0].boolean)) @@ -22393,35 +25157,35 @@ yyreduce: else { (yyval.typnam) = SystemTypeName("bit"); - (yyval.typnam)->typmods = list_make1(makeIntConst(1)); + (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); } (yyval.typnam)->location = (yylsp[-1]); } break; - case 1113: -#line 7132 "gram.y" + case 1236: +#line 7974 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1114: -#line 7136 "gram.y" + case 1237: +#line 7978 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1115: -#line 7142 "gram.y" + case 1238: +#line 7984 "gram.y" { (yyval.typnam) = (yyvsp[0].typnam); } break; - case 1116: -#line 7146 "gram.y" + case 1239: +#line 7988 "gram.y" { /* Length was not specified so allow to be unrestricted. * This handles problems with fixed-length (bpchar) strings @@ -22434,8 +25198,8 @@ yyreduce: } break; - case 1117: -#line 7159 "gram.y" + case 1240: +#line 8001 "gram.y" { if (((yyvsp[0].str) != NULL) && (strcmp((yyvsp[0].str), "sql_text") != 0)) { @@ -22449,13 +25213,13 @@ yyreduce: } (yyval.typnam) = SystemTypeName((yyvsp[-4].str)); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival))); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); (yyval.typnam)->location = (yylsp[-4]); } break; - case 1118: -#line 7178 "gram.y" + case 1241: +#line 8020 "gram.y" { if (((yyvsp[0].str) != NULL) && (strcmp((yyvsp[0].str), "sql_text") != 0)) { @@ -22472,107 +25236,99 @@ yyreduce: /* char defaults to char(1), varchar to no limit */ if (strcmp((yyvsp[-1].str), "char") == 0) - (yyval.typnam)->typmods = list_make1(makeIntConst(1)); + (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); (yyval.typnam)->location = (yylsp[-1]); } break; - case 1119: -#line 7201 "gram.y" + case 1242: +#line 8043 "gram.y" { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "char"; } break; - case 1120: -#line 7203 "gram.y" + case 1243: +#line 8045 "gram.y" { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "char"; } break; - case 1121: -#line 7205 "gram.y" + case 1244: +#line 8047 "gram.y" { (yyval.str) = "varchar"; } break; - case 1122: -#line 7207 "gram.y" + case 1245: +#line 8049 "gram.y" { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "char"; } break; - case 1123: -#line 7209 "gram.y" + case 1246: +#line 8051 "gram.y" { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "char"; } break; - case 1124: -#line 7211 "gram.y" + case 1247: +#line 8053 "gram.y" { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "char"; } break; - case 1125: -#line 7215 "gram.y" + case 1248: +#line 8057 "gram.y" { (yyval.boolean) = TRUE; } break; - case 1126: -#line 7216 "gram.y" + case 1249: +#line 8058 "gram.y" { (yyval.boolean) = FALSE; } break; - case 1127: -#line 7220 "gram.y" + case 1250: +#line 8062 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1128: -#line 7221 "gram.y" + case 1251: +#line 8063 "gram.y" { (yyval.str) = NULL; } break; - case 1129: -#line 7229 "gram.y" + case 1252: +#line 8071 "gram.y" { if ((yyvsp[0].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); - /* XXX the timezone field seems to be unused - * - thomas 2001-09-06 - */ - (yyval.typnam)->timezone = (yyvsp[0].boolean); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival))); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); (yyval.typnam)->location = (yylsp[-4]); } break; - case 1130: -#line 7242 "gram.y" + case 1253: +#line 8080 "gram.y" { if ((yyvsp[0].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); - /* XXX the timezone field seems to be unused - * - thomas 2001-09-06 - */ - (yyval.typnam)->timezone = (yyvsp[0].boolean); (yyval.typnam)->location = (yylsp[-1]); } break; - case 1131: -#line 7254 "gram.y" + case 1254: +#line 8088 "gram.y" { if ((yyvsp[0].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival))); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); (yyval.typnam)->location = (yylsp[-4]); } break; - case 1132: -#line 7263 "gram.y" + case 1255: +#line 8097 "gram.y" { if ((yyvsp[0].boolean)) (yyval.typnam) = SystemTypeName("timetz"); @@ -22582,340 +25338,394 @@ yyreduce: } break; - case 1133: -#line 7274 "gram.y" + case 1256: +#line 8108 "gram.y" { (yyval.typnam) = SystemTypeName("interval"); (yyval.typnam)->location = (yylsp[0]); } break; - case 1134: -#line 7281 "gram.y" + case 1257: +#line 8115 "gram.y" { (yyval.boolean) = TRUE; } break; - case 1135: -#line 7282 "gram.y" + case 1258: +#line 8116 "gram.y" { (yyval.boolean) = FALSE; } break; - case 1136: -#line 7283 "gram.y" + case 1259: +#line 8117 "gram.y" { (yyval.boolean) = FALSE; } break; - case 1137: -#line 7287 "gram.y" - { (yyval.ival) = INTERVAL_MASK(YEAR); } + case 1260: +#line 8122 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[0]))); } break; - case 1138: -#line 7288 "gram.y" - { (yyval.ival) = INTERVAL_MASK(MONTH); } + case 1261: +#line 8124 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[0]))); } break; - case 1139: -#line 7289 "gram.y" - { (yyval.ival) = INTERVAL_MASK(DAY); } + case 1262: +#line 8126 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[0]))); } break; - case 1140: -#line 7290 "gram.y" - { (yyval.ival) = INTERVAL_MASK(HOUR); } + case 1263: +#line 8128 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[0]))); } break; - case 1141: -#line 7291 "gram.y" - { (yyval.ival) = INTERVAL_MASK(MINUTE); } + case 1264: +#line 8130 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[0]))); } break; - case 1142: -#line 7292 "gram.y" - { (yyval.ival) = INTERVAL_MASK(SECOND); } + case 1265: +#line 8132 "gram.y" + { (yyval.list) = (yyvsp[0].list); } break; - case 1143: -#line 7294 "gram.y" - { (yyval.ival) = INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH); } + case 1266: +#line 8134 "gram.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | + INTERVAL_MASK(MONTH), (yylsp[-2]))); + } break; - case 1144: -#line 7296 "gram.y" - { (yyval.ival) = INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR); } + case 1267: +#line 8139 "gram.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR), (yylsp[-2]))); + } break; - case 1145: -#line 7298 "gram.y" - { (yyval.ival) = INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) - | INTERVAL_MASK(MINUTE); } + case 1268: +#line 8144 "gram.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), (yylsp[-2]))); + } break; - case 1146: -#line 7301 "gram.y" - { (yyval.ival) = INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) - | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND); } + case 1269: +#line 8150 "gram.y" + { + (yyval.list) = (yyvsp[0].list); + linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2])); + } break; - case 1147: -#line 7304 "gram.y" - { (yyval.ival) = INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE); } + case 1270: +#line 8158 "gram.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), (yylsp[-2]))); + } break; - case 1148: -#line 7306 "gram.y" - { (yyval.ival) = INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) - | INTERVAL_MASK(SECOND); } + case 1271: +#line 8163 "gram.y" + { + (yyval.list) = (yyvsp[0].list); + linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2])); + } break; - case 1149: -#line 7309 "gram.y" - { (yyval.ival) = INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND); } + case 1272: +#line 8170 "gram.y" + { + (yyval.list) = (yyvsp[0].list); + linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2])); + } break; - case 1150: -#line 7310 "gram.y" - { (yyval.ival) = INTERVAL_FULL_RANGE; } + case 1273: +#line 8176 "gram.y" + { (yyval.list) = NIL; } break; - case 1151: -#line 7336 "gram.y" + case 1274: +#line 8181 "gram.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[0]))); + } + break; + + case 1275: +#line 8185 "gram.y" + { + (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[-3])), + makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + } + break; + + case 1276: +#line 8214 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1152: -#line 7338 "gram.y" - { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam)); } + case 1277: +#line 8216 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), (yylsp[-1])); } break; - case 1153: -#line 7340 "gram.y" + case 1278: +#line 8218 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("timezone"); n->args = list_make2((yyvsp[0].node), (yyvsp[-4].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-3]); (yyval.node) = (Node *) n; } break; - case 1154: -#line 7359 "gram.y" + case 1279: +#line 8239 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } break; - case 1155: -#line 7361 "gram.y" + case 1280: +#line 8241 "gram.y" { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } break; - case 1156: -#line 7363 "gram.y" + case 1281: +#line 8243 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1157: -#line 7365 "gram.y" + case 1282: +#line 8245 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1158: -#line 7367 "gram.y" + case 1283: +#line 8247 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1159: -#line 7369 "gram.y" + case 1284: +#line 8249 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1160: -#line 7371 "gram.y" + case 1285: +#line 8251 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1161: -#line 7373 "gram.y" + case 1286: +#line 8253 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1162: -#line 7375 "gram.y" + case 1287: +#line 8255 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1163: -#line 7377 "gram.y" + case 1288: +#line 8257 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1164: -#line 7379 "gram.y" + case 1289: +#line 8259 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1165: -#line 7382 "gram.y" + case 1290: +#line 8262 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1166: -#line 7384 "gram.y" + case 1291: +#line 8264 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } break; - case 1167: -#line 7386 "gram.y" + case 1292: +#line 8266 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } break; - case 1168: -#line 7389 "gram.y" + case 1293: +#line 8269 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_AND, NIL, (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1169: -#line 7391 "gram.y" + case 1294: +#line 8271 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OR, NIL, (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1170: -#line 7393 "gram.y" + case 1295: +#line 8273 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, (yyvsp[0].node), (yylsp[-1])); } break; - case 1171: -#line 7396 "gram.y" + case 1296: +#line 8276 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1172: -#line 7398 "gram.y" + case 1297: +#line 8278 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("like_escape"); n->args = list_make2((yyvsp[-2].node), (yyvsp[0].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-1]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", (yyvsp[-4].node), (Node *) n, (yylsp[-3])); } break; - case 1173: -#line 7408 "gram.y" + case 1298: +#line 8290 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); } break; - case 1174: -#line 7410 "gram.y" + case 1299: +#line 8292 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("like_escape"); n->args = list_make2((yyvsp[-2].node), (yyvsp[0].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-1]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", (yyvsp[-5].node), (Node *) n, (yylsp[-4])); } break; - case 1175: -#line 7420 "gram.y" + case 1300: +#line 8304 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1176: -#line 7422 "gram.y" + case 1301: +#line 8306 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("like_escape"); n->args = list_make2((yyvsp[-2].node), (yyvsp[0].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-1]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", (yyvsp[-4].node), (Node *) n, (yylsp[-3])); } break; - case 1177: -#line 7432 "gram.y" + case 1302: +#line 8318 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); } break; - case 1178: -#line 7434 "gram.y" + case 1303: +#line 8320 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("like_escape"); n->args = list_make2((yyvsp[-2].node), (yyvsp[0].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-1]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", (yyvsp[-5].node), (Node *) n, (yylsp[-4])); } break; - case 1179: -#line 7445 "gram.y" + case 1304: +#line 8333 "gram.y" { - A_Const *c = makeNode(A_Const); FuncCall *n = makeNode(FuncCall); - c->val.type = T_Null; n->funcname = SystemFuncName("similar_escape"); - n->args = list_make2((yyvsp[0].node), (Node *) c); + n->args = list_make2((yyvsp[0].node), makeNullAConst(-1)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-2]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", (yyvsp[-3].node), (Node *) n, (yylsp[-2])); } break; - case 1180: -#line 7457 "gram.y" + case 1305: +#line 8345 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("similar_escape"); n->args = list_make2((yyvsp[-2].node), (yyvsp[0].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-1]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", (yyvsp[-5].node), (Node *) n, (yylsp[-4])); } break; - case 1181: -#line 7467 "gram.y" + case 1306: +#line 8357 "gram.y" { - A_Const *c = makeNode(A_Const); FuncCall *n = makeNode(FuncCall); - c->val.type = T_Null; n->funcname = SystemFuncName("similar_escape"); - n->args = list_make2((yyvsp[0].node), (Node *) c); + n->args = list_make2((yyvsp[0].node), makeNullAConst(-1)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[0]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", (yyvsp[-4].node), (Node *) n, (yylsp[-3])); } break; - case 1182: -#line 7479 "gram.y" + case 1307: +#line 8369 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("similar_escape"); n->args = list_make2((yyvsp[-2].node), (yyvsp[0].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-1]); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", (yyvsp[-6].node), (Node *) n, (yylsp[-5])); } break; - case 1183: -#line 7499 "gram.y" + case 1308: +#line 8391 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[-2].node); @@ -22924,8 +25734,8 @@ yyreduce: } break; - case 1184: -#line 7506 "gram.y" + case 1309: +#line 8398 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[-1].node); @@ -22934,8 +25744,8 @@ yyreduce: } break; - case 1185: -#line 7513 "gram.y" + case 1310: +#line 8405 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[-3].node); @@ -22944,8 +25754,8 @@ yyreduce: } break; - case 1186: -#line 7520 "gram.y" + case 1311: +#line 8412 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[-1].node); @@ -22954,15 +25764,15 @@ yyreduce: } break; - case 1187: -#line 7527 "gram.y" + case 1312: +#line 8419 "gram.y" { (yyval.node) = (Node *)makeOverlaps((yyvsp[-2].list), (yyvsp[0].list), (yylsp[-1])); } break; - case 1188: -#line 7531 "gram.y" + case 1313: +#line 8423 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[-2].node); @@ -22971,8 +25781,8 @@ yyreduce: } break; - case 1189: -#line 7538 "gram.y" + case 1314: +#line 8430 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[-3].node); @@ -22981,8 +25791,8 @@ yyreduce: } break; - case 1190: -#line 7545 "gram.y" + case 1315: +#line 8437 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[-2].node); @@ -22991,8 +25801,8 @@ yyreduce: } break; - case 1191: -#line 7552 "gram.y" + case 1316: +#line 8444 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[-3].node); @@ -23001,8 +25811,8 @@ yyreduce: } break; - case 1192: -#line 7559 "gram.y" + case 1317: +#line 8451 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[-2].node); @@ -23011,8 +25821,8 @@ yyreduce: } break; - case 1193: -#line 7566 "gram.y" + case 1318: +#line 8458 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[-3].node); @@ -23021,15 +25831,15 @@ yyreduce: } break; - case 1194: -#line 7573 "gram.y" + case 1319: +#line 8465 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); } break; - case 1195: -#line 7577 "gram.y" + case 1320: +#line 8469 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, @@ -23039,22 +25849,22 @@ yyreduce: } break; - case 1196: -#line 7585 "gram.y" + case 1321: +#line 8477 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[-5].node), (Node *) (yyvsp[-1].list), (yylsp[-4])); } break; - case 1197: -#line 7589 "gram.y" + case 1322: +#line 8481 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[-6].node), (Node *) (yyvsp[-1].list), (yylsp[-5])); } break; - case 1198: -#line 7593 "gram.y" + case 1323: +#line 8490 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_AND, NIL, (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[-5].node), (yyvsp[-2].node), (yylsp[-4])), @@ -23063,8 +25873,8 @@ yyreduce: } break; - case 1199: -#line 7600 "gram.y" + case 1324: +#line 8497 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OR, NIL, (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[-6].node), (yyvsp[-2].node), (yylsp[-5])), @@ -23073,8 +25883,8 @@ yyreduce: } break; - case 1200: -#line 7607 "gram.y" + case 1325: +#line 8504 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OR, NIL, (Node *) makeA_Expr(AEXPR_AND, NIL, @@ -23089,8 +25899,8 @@ yyreduce: } break; - case 1201: -#line 7620 "gram.y" + case 1326: +#line 8517 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_AND, NIL, (Node *) makeA_Expr(AEXPR_OR, NIL, @@ -23105,8 +25915,8 @@ yyreduce: } break; - case 1202: -#line 7633 "gram.y" + case 1327: +#line 8530 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ if (IsA((yyvsp[0].node), SubLink)) @@ -23116,6 +25926,7 @@ yyreduce: n->subLinkType = ANY_SUBLINK; n->testexpr = (yyvsp[-2].node); n->operName = list_make1(makeString("=")); + n->location = (yylsp[-1]); (yyval.node) = (Node *)n; } else @@ -23126,8 +25937,8 @@ yyreduce: } break; - case 1203: -#line 7651 "gram.y" + case 1328: +#line 8549 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ if (IsA((yyvsp[0].node), SubLink)) @@ -23138,6 +25949,7 @@ yyreduce: n->subLinkType = ANY_SUBLINK; n->testexpr = (yyvsp[-3].node); n->operName = list_make1(makeString("=")); + n->location = (yylsp[-1]); /* Stick a NOT on top */ (yyval.node) = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, (Node *) n, (yylsp[-2])); } @@ -23149,20 +25961,21 @@ yyreduce: } break; - case 1204: -#line 7671 "gram.y" + case 1329: +#line 8570 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = (yyvsp[-1].ival); n->testexpr = (yyvsp[-3].node); n->operName = (yyvsp[-2].list); n->subselect = (yyvsp[0].node); + n->location = (yylsp[-2]); (yyval.node) = (Node *)n; } break; - case 1205: -#line 7680 "gram.y" + case 1330: +#line 8580 "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])); @@ -23171,8 +25984,8 @@ yyreduce: } break; - case 1206: -#line 7687 "gram.y" + case 1331: +#line 8587 "gram.y" { /* Not sure how to get rid of the parentheses * but there are lots of shift/reduce errors without them. @@ -23185,171 +25998,177 @@ yyreduce: */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("UNIQUE predicate is not yet implemented"))); + errmsg("UNIQUE predicate is not yet implemented"), + scanner_errposition((yylsp[-1])))); } break; - case 1207: -#line 7702 "gram.y" + case 1332: +#line 8603 "gram.y" { - (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[-2].node))); + (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1((yyvsp[-2].node)), (yylsp[-1])); } break; - case 1208: -#line 7706 "gram.y" + case 1333: +#line 8608 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, - makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[-3].node))), + makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1((yyvsp[-3].node)), (yylsp[-2])), (yylsp[-2])); } break; - case 1209: -#line 7723 "gram.y" + case 1334: +#line 8626 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1210: -#line 7725 "gram.y" - { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam)); } + case 1335: +#line 8628 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), (yylsp[-1])); } break; - case 1211: -#line 7727 "gram.y" + case 1336: +#line 8630 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } break; - case 1212: -#line 7729 "gram.y" + case 1337: +#line 8632 "gram.y" { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } break; - case 1213: -#line 7731 "gram.y" + case 1338: +#line 8634 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1214: -#line 7733 "gram.y" + case 1339: +#line 8636 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1215: -#line 7735 "gram.y" + case 1340: +#line 8638 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1216: -#line 7737 "gram.y" + case 1341: +#line 8640 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1217: -#line 7739 "gram.y" + case 1342: +#line 8642 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1218: -#line 7741 "gram.y" + case 1343: +#line 8644 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1219: -#line 7743 "gram.y" + case 1344: +#line 8646 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1220: -#line 7745 "gram.y" + case 1345: +#line 8648 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1221: -#line 7747 "gram.y" + case 1346: +#line 8650 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1222: -#line 7749 "gram.y" + case 1347: +#line 8652 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } break; - case 1223: -#line 7751 "gram.y" + case 1348: +#line 8654 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } break; - case 1224: -#line 7753 "gram.y" + case 1349: +#line 8656 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } break; - case 1225: -#line 7755 "gram.y" + case 1350: +#line 8658 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); } break; - case 1226: -#line 7759 "gram.y" + case 1351: +#line 8662 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])), (yylsp[-4])); } break; - case 1227: -#line 7764 "gram.y" + case 1352: +#line 8667 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[-5].node), (Node *) (yyvsp[-1].list), (yylsp[-4])); } break; - case 1228: -#line 7768 "gram.y" + case 1353: +#line 8671 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[-6].node), (Node *) (yyvsp[-1].list), (yylsp[-5])); } break; - case 1229: -#line 7772 "gram.y" + case 1354: +#line 8675 "gram.y" { - (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[-2].node))); + (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1((yyvsp[-2].node)), (yylsp[-1])); } break; - case 1230: -#line 7776 "gram.y" + case 1355: +#line 8680 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, - makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[-3].node))), + makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1((yyvsp[-3].node)), (yylsp[-2])), (yylsp[-2])); } break; - case 1231: -#line 7791 "gram.y" + case 1356: +#line 8696 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1232: -#line 7792 "gram.y" + case 1357: +#line 8697 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1233: -#line 7794 "gram.y" + case 1358: +#line 8699 "gram.y" { ParamRef *p = makeNode(ParamRef); p->number = (yyvsp[-1].ival); + p->location = (yylsp[-1]); if ((yyvsp[0].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (Node *) p; - n->indirection = (yyvsp[0].list); + n->indirection = check_indirection((yyvsp[0].list)); (yyval.node) = (Node *) n; } else @@ -23357,14 +26176,14 @@ yyreduce: } break; - case 1234: -#line 7808 "gram.y" + case 1359: +#line 8714 "gram.y" { if ((yyvsp[0].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (yyvsp[-2].node); - n->indirection = (yyvsp[0].list); + n->indirection = check_indirection((yyvsp[0].list)); (yyval.node) = (Node *)n; } else @@ -23372,125 +26191,173 @@ yyreduce: } break; - case 1235: -#line 7820 "gram.y" + case 1360: +#line 8726 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1236: -#line 7822 "gram.y" + case 1361: +#line 8728 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1237: -#line 7824 "gram.y" + case 1362: +#line 8730 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXPR_SUBLINK; n->testexpr = NULL; n->operName = NIL; n->subselect = (yyvsp[0].node); + n->location = (yylsp[0]); (yyval.node) = (Node *)n; } break; - case 1238: -#line 7833 "gram.y" + case 1363: +#line 8740 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXISTS_SUBLINK; n->testexpr = NULL; n->operName = NIL; n->subselect = (yyvsp[0].node); + n->location = (yylsp[-1]); (yyval.node) = (Node *)n; } break; - case 1239: -#line 7842 "gram.y" + case 1364: +#line 8750 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = ARRAY_SUBLINK; n->testexpr = NULL; n->operName = NIL; n->subselect = (yyvsp[0].node); + n->location = (yylsp[-1]); (yyval.node) = (Node *)n; } break; - case 1240: -#line 7851 "gram.y" - { (yyval.node) = (yyvsp[0].node); } + case 1365: +#line 8760 "gram.y" + { + A_ArrayExpr *n = (A_ArrayExpr *) (yyvsp[0].node); + Assert(IsA(n, A_ArrayExpr)); + /* point outermost A_ArrayExpr to the ARRAY keyword */ + n->location = (yylsp[-1]); + (yyval.node) = (Node *)n; + } break; - case 1241: -#line 7853 "gram.y" + case 1366: +#line 8768 "gram.y" { RowExpr *r = makeNode(RowExpr); r->args = (yyvsp[0].list); - r->row_typeid = 0; /* not analyzed yet */ + r->row_typeid = InvalidOid; /* not analyzed yet */ + r->location = (yylsp[0]); (yyval.node) = (Node *)r; } break; - case 1242: -#line 7870 "gram.y" + case 1367: +#line 8786 "gram.y" { FuncCall *n = makeNode(FuncCall); - n->funcname = (yyvsp[-2].list); + n->funcname = (yyvsp[-3].list); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; - n->location = (yylsp[-2]); + n->func_variadic = FALSE; + n->over = (yyvsp[0].windef); + n->location = (yylsp[-3]); (yyval.node) = (Node *)n; } break; - case 1243: -#line 7880 "gram.y" + case 1368: +#line 8798 "gram.y" { FuncCall *n = makeNode(FuncCall); - n->funcname = (yyvsp[-3].list); - n->args = (yyvsp[-1].list); + n->funcname = (yyvsp[-4].list); + n->args = (yyvsp[-2].list); n->agg_star = FALSE; n->agg_distinct = FALSE; - n->location = (yylsp[-3]); + n->func_variadic = FALSE; + n->over = (yyvsp[0].windef); + n->location = (yylsp[-4]); (yyval.node) = (Node *)n; } break; - case 1244: -#line 7890 "gram.y" + case 1369: +#line 8810 "gram.y" { FuncCall *n = makeNode(FuncCall); - n->funcname = (yyvsp[-4].list); - n->args = (yyvsp[-1].list); + n->funcname = (yyvsp[-5].list); + n->args = list_make1((yyvsp[-2].node)); + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = TRUE; + n->over = (yyvsp[0].windef); + n->location = (yylsp[-5]); + (yyval.node) = (Node *)n; + } + break; + + case 1370: +#line 8822 "gram.y" + { + FuncCall *n = makeNode(FuncCall); + n->funcname = (yyvsp[-7].list); + n->args = lappend((yyvsp[-5].list), (yyvsp[-2].node)); + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = TRUE; + n->over = (yyvsp[0].windef); + n->location = (yylsp[-7]); + (yyval.node) = (Node *)n; + } + break; + + case 1371: +#line 8834 "gram.y" + { + FuncCall *n = makeNode(FuncCall); + n->funcname = (yyvsp[-5].list); + n->args = (yyvsp[-2].list); n->agg_star = FALSE; n->agg_distinct = FALSE; /* 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. */ - n->location = (yylsp[-4]); + n->func_variadic = FALSE; + n->over = (yyvsp[0].windef); + n->location = (yylsp[-5]); (yyval.node) = (Node *)n; } break; - case 1245: -#line 7904 "gram.y" + case 1372: +#line 8850 "gram.y" { FuncCall *n = makeNode(FuncCall); - n->funcname = (yyvsp[-4].list); - n->args = (yyvsp[-1].list); + n->funcname = (yyvsp[-5].list); + n->args = (yyvsp[-2].list); n->agg_star = FALSE; n->agg_distinct = TRUE; - n->location = (yylsp[-4]); + n->func_variadic = FALSE; + n->over = (yyvsp[0].windef); + n->location = (yylsp[-5]); (yyval.node) = (Node *)n; } break; - case 1246: -#line 7914 "gram.y" + case 1373: +#line 8862 "gram.y" { /* * We consider AGGREGATE(*) to invoke a parameterless @@ -23503,17 +26370,19 @@ yyreduce: * really was. */ FuncCall *n = makeNode(FuncCall); - n->funcname = (yyvsp[-3].list); + n->funcname = (yyvsp[-4].list); n->args = NIL; n->agg_star = TRUE; n->agg_distinct = FALSE; - n->location = (yylsp[-3]); + n->func_variadic = FALSE; + n->over = (yyvsp[0].windef); + n->location = (yylsp[-4]); (yyval.node) = (Node *)n; } break; - case 1247: -#line 7934 "gram.y" + case 1374: +#line 8884 "gram.y" { /* * Translate as "'now'::text::date". @@ -23530,61 +26399,43 @@ yyreduce: * that is actually possible, but not clear that we want * to rely on it.) */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("date"); - - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", (yylsp[0]), SystemTypeName("text")); + (yyval.node) = makeTypeCast(n, SystemTypeName("date"), -1); } break; - case 1248: -#line 7962 "gram.y" + case 1375: +#line 8905 "gram.y" { /* * Translate as "'now'::text::timetz". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("timetz"); - - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", (yylsp[0]), SystemTypeName("text")); + (yyval.node) = makeTypeCast(n, SystemTypeName("timetz"), -1); } break; - case 1249: -#line 7979 "gram.y" + case 1376: +#line 8915 "gram.y" { /* * Translate as "'now'::text::timetz(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); + n = makeStringConstCast("now", (yylsp[-3]), SystemTypeName("text")); d = SystemTypeName("timetz"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival))); - - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.node) = makeTypeCast(n, d, -1); } break; - case 1250: -#line 7996 "gram.y" + case 1377: +#line 8928 "gram.y" { /* * Translate as "now()", since we have a function that @@ -23595,185 +26446,199 @@ yyreduce: n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[0]); (yyval.node) = (Node *)n; } break; - case 1251: -#line 8010 "gram.y" + case 1378: +#line 8944 "gram.y" { /* * Translate as "'now'::text::timestamptz(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - + n = makeStringConstCast("now", (yylsp[-3]), SystemTypeName("text")); d = SystemTypeName("timestamptz"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival))); - - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.node) = makeTypeCast(n, d, -1); } break; - case 1252: -#line 8028 "gram.y" + case 1379: +#line 8957 "gram.y" { /* * Translate as "'now'::text::time". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("time"); - - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", (yylsp[0]), SystemTypeName("text")); + (yyval.node) = makeTypeCast((Node *)n, SystemTypeName("time"), -1); } break; - case 1253: -#line 8045 "gram.y" + case 1380: +#line 8967 "gram.y" { /* * Translate as "'now'::text::time(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); + n = makeStringConstCast("now", (yylsp[-3]), SystemTypeName("text")); d = SystemTypeName("time"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival))); - - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.node) = makeTypeCast((Node *)n, d, -1); } break; - case 1254: -#line 8062 "gram.y" + case 1381: +#line 8980 "gram.y" { /* * Translate as "'now'::text::timestamp". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("timestamp"); - - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", (yylsp[0]), SystemTypeName("text")); + (yyval.node) = makeTypeCast(n, SystemTypeName("timestamp"), -1); } break; - case 1255: -#line 8079 "gram.y" + case 1382: +#line 8990 "gram.y" { /* * Translate as "'now'::text::timestamp(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - + n = makeStringConstCast("now", (yylsp[-3]), SystemTypeName("text")); d = SystemTypeName("timestamp"); - d->typmods = list_make1(makeIntConst((yyvsp[-1].ival))); + d->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.node) = makeTypeCast(n, d, -1); + } + break; + + case 1383: +#line 9003 "gram.y" + { + FuncCall *n = makeNode(FuncCall); + n->funcname = SystemFuncName("current_user"); + n->args = NIL; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; + n->location = (yylsp[0]); + (yyval.node) = (Node *)n; + } + break; - (yyval.node) = (Node *)makeTypeCast((Node *)s, d); + case 1384: +#line 9015 "gram.y" + { + FuncCall *n = makeNode(FuncCall); + n->funcname = SystemFuncName("current_user"); + n->args = NIL; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; + n->location = (yylsp[0]); + (yyval.node) = (Node *)n; } break; - case 1256: -#line 8097 "gram.y" + case 1385: +#line 9027 "gram.y" { FuncCall *n = makeNode(FuncCall); - n->funcname = SystemFuncName("current_user"); + n->funcname = SystemFuncName("session_user"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[0]); (yyval.node) = (Node *)n; } break; - case 1257: -#line 8107 "gram.y" + case 1386: +#line 9039 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("current_user"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[0]); (yyval.node) = (Node *)n; } break; - case 1258: -#line 8117 "gram.y" + case 1387: +#line 9051 "gram.y" { FuncCall *n = makeNode(FuncCall); - n->funcname = SystemFuncName("session_user"); + n->funcname = SystemFuncName("current_database"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[0]); (yyval.node) = (Node *)n; } break; - case 1259: -#line 8127 "gram.y" + case 1388: +#line 9063 "gram.y" { FuncCall *n = makeNode(FuncCall); - n->funcname = SystemFuncName("current_user"); + n->funcname = SystemFuncName("current_schema"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[0]); (yyval.node) = (Node *)n; } break; - case 1260: -#line 8137 "gram.y" - { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam)); } + case 1389: +#line 9075 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam), (yylsp[-5])); } break; - case 1261: -#line 8139 "gram.y" + case 1390: +#line 9077 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("date_part"); n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-3]); (yyval.node) = (Node *)n; } break; - case 1262: -#line 8149 "gram.y" + case 1391: +#line 9089 "gram.y" { /* overlay(A PLACING B FROM C FOR D) is converted to * substring(A, 1, C-1) || B || substring(A, C+1, C+D) @@ -23785,13 +26650,15 @@ yyreduce: n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-3]); (yyval.node) = (Node *)n; } break; - case 1263: -#line 8164 "gram.y" + case 1392: +#line 9106 "gram.y" { /* position(A in B) is converted to position(B, A) */ FuncCall *n = makeNode(FuncCall); @@ -23799,13 +26666,15 @@ yyreduce: n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-3]); (yyval.node) = (Node *)n; } break; - case 1264: -#line 8175 "gram.y" + case 1393: +#line 9119 "gram.y" { /* substring(A from B for C) is converted to * substring(A, B, C) - thomas 2000-11-28 @@ -23815,13 +26684,15 @@ yyreduce: n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-3]); (yyval.node) = (Node *)n; } break; - case 1265: -#line 8188 "gram.y" + case 1394: +#line 9134 "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. @@ -23837,13 +26708,15 @@ yyreduce: n->args = list_make1((yyvsp[-3].node)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-5]); (yyval.node) = (Node *)n; } break; - case 1266: -#line 8207 "gram.y" + case 1395: +#line 9155 "gram.y" { /* various trim expressions are defined in SQL92 * - thomas 1997-07-19 @@ -23853,563 +26726,741 @@ yyreduce: n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-4]); (yyval.node) = (Node *)n; } break; - case 1267: -#line 8220 "gram.y" + case 1396: +#line 9170 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("ltrim"); n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-4]); (yyval.node) = (Node *)n; } break; - case 1268: -#line 8230 "gram.y" + case 1397: +#line 9182 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("rtrim"); n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-4]); (yyval.node) = (Node *)n; } break; - case 1269: -#line 8240 "gram.y" + case 1398: +#line 9194 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("btrim"); n->args = (yyvsp[-1].list); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = (yylsp[-3]); (yyval.node) = (Node *)n; } break; - case 1270: -#line 8250 "gram.y" + case 1399: +#line 9206 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[-3].node), (yyvsp[-1].node), (yylsp[-5])); } break; - case 1271: -#line 8254 "gram.y" + case 1400: +#line 9210 "gram.y" { CoalesceExpr *c = makeNode(CoalesceExpr); c->args = (yyvsp[-1].list); + c->location = (yylsp[-3]); (yyval.node) = (Node *)c; } break; - case 1272: -#line 8260 "gram.y" + case 1401: +#line 9217 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); v->args = (yyvsp[-1].list); v->op = IS_GREATEST; + v->location = (yylsp[-3]); (yyval.node) = (Node *)v; } break; - case 1273: -#line 8267 "gram.y" + case 1402: +#line 9225 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); v->args = (yyvsp[-1].list); v->op = IS_LEAST; + v->location = (yylsp[-3]); (yyval.node) = (Node *)v; } break; - case 1274: -#line 8274 "gram.y" + case 1403: +#line 9233 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[-1].list)); + (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[-1].list), (yylsp[-3])); } break; - case 1275: -#line 8278 "gram.y" + case 1404: +#line 9237 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-1].str), NIL, NIL); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-1].str), NIL, NIL, (yylsp[-4])); } break; - case 1276: -#line 8282 "gram.y" + case 1405: +#line 9241 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), (yyvsp[-1].list), NIL); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), (yyvsp[-1].list), NIL, (yylsp[-6])); } break; - case 1277: -#line 8286 "gram.y" + case 1406: +#line 9245 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), NIL, (yyvsp[-1].list)); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), NIL, (yyvsp[-1].list), (yylsp[-6])); } break; - case 1278: -#line 8290 "gram.y" + case 1407: +#line 9249 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-5].str), (yyvsp[-3].list), (yyvsp[-1].list)); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-5].str), (yyvsp[-3].list), (yyvsp[-1].list), (yylsp[-8])); } break; - case 1279: -#line 8294 "gram.y" + case 1408: +#line 9253 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[-1].list), NIL); + (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[-1].list), NIL, (yylsp[-3])); } break; - case 1280: -#line 8298 "gram.y" + case 1409: +#line 9257 "gram.y" { - XmlExpr *x = (XmlExpr *) makeXmlExpr(IS_XMLPARSE, NULL, NIL, - list_make2((yyvsp[-2].node), - makeBoolAConst((yyvsp[-1].boolean)))); + 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); (yyval.node) = (Node *)x; } break; - case 1281: -#line 8306 "gram.y" + case 1410: +#line 9266 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-1].str), NULL, NIL); + (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-1].str), NULL, NIL, (yylsp[-4])); } break; - case 1282: -#line 8310 "gram.y" + case 1411: +#line 9270 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-3].str), NULL, list_make1((yyvsp[-1].node))); + (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-3].str), NULL, list_make1((yyvsp[-1].node)), (yylsp[-6])); } break; - case 1283: -#line 8314 "gram.y" + case 1412: +#line 9274 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLROOT, NULL, NIL, - list_make3((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node))); + list_make3((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node)), (yylsp[-6])); } break; - case 1284: -#line 8319 "gram.y" + case 1413: +#line 9279 "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]); (yyval.node) = (Node *)n; } break; - case 1285: -#line 8332 "gram.y" + case 1414: +#line 9293 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1286: -#line 8334 "gram.y" - { - A_Const *val = makeNode(A_Const); - val->val.type = T_Null; - (yyval.node) = (Node *) val; - } + case 1415: +#line 9295 "gram.y" + { (yyval.node) = makeNullAConst(-1); } break; - case 1287: -#line 8342 "gram.y" - { (yyval.node) = (Node *) makeIntConst(XML_STANDALONE_YES); } + case 1416: +#line 9299 "gram.y" + { (yyval.node) = makeIntConst(XML_STANDALONE_YES, -1); } break; - case 1288: -#line 8344 "gram.y" - { (yyval.node) = (Node *) makeIntConst(XML_STANDALONE_NO); } + case 1417: +#line 9301 "gram.y" + { (yyval.node) = makeIntConst(XML_STANDALONE_NO, -1); } break; - case 1289: -#line 8346 "gram.y" - { (yyval.node) = (Node *) makeIntConst(XML_STANDALONE_NO_VALUE); } + case 1418: +#line 9303 "gram.y" + { (yyval.node) = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } break; - case 1290: -#line 8348 "gram.y" - { (yyval.node) = (Node *) makeIntConst(XML_STANDALONE_OMITTED); } + case 1419: +#line 9305 "gram.y" + { (yyval.node) = makeIntConst(XML_STANDALONE_OMITTED, -1); } break; - case 1291: -#line 8351 "gram.y" + case 1420: +#line 9308 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 1292: -#line 8354 "gram.y" + case 1421: +#line 9311 "gram.y" { (yyval.list) = list_make1((yyvsp[0].target)); } break; - case 1293: -#line 8355 "gram.y" + case 1422: +#line 9312 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } break; - case 1294: -#line 8359 "gram.y" + case 1423: +#line 9316 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[0].str); - (yyval.target)->indirection = NULL; + (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *) (yyvsp[-2].node); (yyval.target)->location = (yylsp[-2]); } break; - case 1295: -#line 8367 "gram.y" + case 1424: +#line 9324 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; - (yyval.target)->indirection = NULL; + (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *) (yyvsp[0].node); (yyval.target)->location = (yylsp[0]); } break; - case 1296: -#line 8376 "gram.y" + case 1425: +#line 9333 "gram.y" { (yyval.ival) = XMLOPTION_DOCUMENT; } break; - case 1297: -#line 8377 "gram.y" + case 1426: +#line 9334 "gram.y" { (yyval.ival) = XMLOPTION_CONTENT; } break; - case 1298: -#line 8380 "gram.y" + case 1427: +#line 9337 "gram.y" { (yyval.boolean) = TRUE; } break; - case 1299: -#line 8381 "gram.y" + case 1428: +#line 9338 "gram.y" { (yyval.boolean) = FALSE; } break; - case 1300: -#line 8382 "gram.y" + case 1429: +#line 9339 "gram.y" { (yyval.boolean) = FALSE; } break; - case 1301: -#line 8395 "gram.y" + case 1430: +#line 9346 "gram.y" + { (yyval.list) = (yyvsp[0].list); } + break; + + case 1431: +#line 9347 "gram.y" + { (yyval.list) = NIL; } + break; + + case 1432: +#line 9351 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].windef)); } + break; + + case 1433: +#line 9353 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].windef)); } + break; + + case 1434: +#line 9358 "gram.y" + { + WindowDef *n = (yyvsp[0].windef); + n->name = (yyvsp[-2].str); + (yyval.windef) = n; + } + break; + + case 1435: +#line 9366 "gram.y" + { (yyval.windef) = (yyvsp[0].windef); } + break; + + case 1436: +#line 9368 "gram.y" + { + WindowDef *n = makeNode(WindowDef); + n->name = (yyvsp[0].str); + n->refname = NULL; + n->partitionClause = NIL; + n->orderClause = NIL; + n->frameOptions = FRAMEOPTION_DEFAULTS; + n->location = (yylsp[0]); + (yyval.windef) = n; + } + break; + + case 1437: +#line 9379 "gram.y" + { (yyval.windef) = NULL; } + break; + + case 1438: +#line 9384 "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->frameOptions = (yyvsp[-1].ival); + n->location = (yylsp[-5]); + (yyval.windef) = n; + } + break; + + case 1439: +#line 9406 "gram.y" + { (yyval.str) = (yyvsp[0].str); } + break; + + case 1440: +#line 9407 "gram.y" + { (yyval.str) = NULL; } + break; + + case 1441: +#line 9410 "gram.y" + { (yyval.list) = (yyvsp[0].list); } + break; + + case 1442: +#line 9411 "gram.y" + { (yyval.list) = NIL; } + break; + + case 1443: +#line 9421 "gram.y" + { + (yyval.ival) = FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE | (yyvsp[0].ival); + } + break; + + case 1444: +#line 9425 "gram.y" + { + (yyval.ival) = FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS | (yyvsp[0].ival); + } + break; + + case 1445: +#line 9429 "gram.y" + { (yyval.ival) = FRAMEOPTION_DEFAULTS; } + break; + + case 1446: +#line 9433 "gram.y" + { + /* reject invalid cases */ + if ((yyvsp[0].ival) & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + scanner_errposition((yylsp[0])))); + if ((yyvsp[0].ival) & FRAMEOPTION_START_CURRENT_ROW) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("frame start at CURRENT ROW is not implemented"), + scanner_errposition((yylsp[0])))); + (yyval.ival) = (yyvsp[0].ival) | FRAMEOPTION_END_CURRENT_ROW; + } + break; + + case 1447: +#line 9448 "gram.y" + { + /* reject invalid cases */ + if ((yyvsp[-2].ival) & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + scanner_errposition((yylsp[-2])))); + if ((yyvsp[-2].ival) & FRAMEOPTION_START_CURRENT_ROW) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("frame start at CURRENT ROW is not implemented"), + scanner_errposition((yylsp[-2])))); + if ((yyvsp[0].ival) & FRAMEOPTION_START_UNBOUNDED_PRECEDING) + ereport(ERROR, + (errcode(ERRCODE_WINDOWING_ERROR), + errmsg("frame end cannot be UNBOUNDED PRECEDING"), + scanner_errposition((yylsp[0])))); + /* shift converts START_ options to END_ options */ + (yyval.ival) = FRAMEOPTION_BETWEEN | (yyvsp[-2].ival) | ((yyvsp[0].ival) << 1); + } + break; + + case 1448: +#line 9477 "gram.y" + { + (yyval.ival) = FRAMEOPTION_START_UNBOUNDED_PRECEDING; + } + break; + + case 1449: +#line 9481 "gram.y" + { + (yyval.ival) = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; + } + break; + + case 1450: +#line 9485 "gram.y" + { + (yyval.ival) = FRAMEOPTION_START_CURRENT_ROW; + } + break; + + case 1451: +#line 9501 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 1302: -#line 8396 "gram.y" + case 1452: +#line 9502 "gram.y" { (yyval.list) = NIL; } break; - case 1303: -#line 8397 "gram.y" + case 1453: +#line 9503 "gram.y" { (yyval.list) = lappend((yyvsp[-3].list), (yyvsp[-1].node)); } break; - case 1304: -#line 8400 "gram.y" + case 1454: +#line 9506 "gram.y" { (yyval.ival) = ANY_SUBLINK; } break; - case 1305: -#line 8401 "gram.y" + case 1455: +#line 9507 "gram.y" { (yyval.ival) = ANY_SUBLINK; } break; - case 1306: -#line 8402 "gram.y" + case 1456: +#line 9508 "gram.y" { (yyval.ival) = ALL_SUBLINK; } break; - case 1307: -#line 8405 "gram.y" + case 1457: +#line 9511 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1308: -#line 8406 "gram.y" + case 1458: +#line 9512 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1309: -#line 8409 "gram.y" + case 1459: +#line 9515 "gram.y" { (yyval.str) = "+"; } break; - case 1310: -#line 8410 "gram.y" + case 1460: +#line 9516 "gram.y" { (yyval.str) = "-"; } break; - case 1311: -#line 8411 "gram.y" + case 1461: +#line 9517 "gram.y" { (yyval.str) = "*"; } break; - case 1312: -#line 8412 "gram.y" + case 1462: +#line 9518 "gram.y" { (yyval.str) = "/"; } break; - case 1313: -#line 8413 "gram.y" + case 1463: +#line 9519 "gram.y" { (yyval.str) = "%"; } break; - case 1314: -#line 8414 "gram.y" + case 1464: +#line 9520 "gram.y" { (yyval.str) = "^"; } break; - case 1315: -#line 8415 "gram.y" + case 1465: +#line 9521 "gram.y" { (yyval.str) = "<"; } break; - case 1316: -#line 8416 "gram.y" + case 1466: +#line 9522 "gram.y" { (yyval.str) = ">"; } break; - case 1317: -#line 8417 "gram.y" + case 1467: +#line 9523 "gram.y" { (yyval.str) = "="; } break; - case 1318: -#line 8421 "gram.y" + case 1468: +#line 9527 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 1319: -#line 8423 "gram.y" + case 1469: +#line 9529 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 1320: -#line 8428 "gram.y" + case 1470: +#line 9534 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 1321: -#line 8430 "gram.y" + case 1471: +#line 9536 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 1322: -#line 8435 "gram.y" + case 1472: +#line 9541 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 1323: -#line 8437 "gram.y" + case 1473: +#line 9543 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 1324: -#line 8439 "gram.y" + case 1474: +#line 9545 "gram.y" { (yyval.list) = list_make1(makeString("~~")); } break; - case 1325: -#line 8441 "gram.y" + case 1475: +#line 9547 "gram.y" { (yyval.list) = list_make1(makeString("!~~")); } break; - case 1326: -#line 8443 "gram.y" + case 1476: +#line 9549 "gram.y" { (yyval.list) = list_make1(makeString("~~*")); } break; - case 1327: -#line 8445 "gram.y" + case 1477: +#line 9551 "gram.y" { (yyval.list) = list_make1(makeString("!~~*")); } break; - case 1328: -#line 8457 "gram.y" + case 1478: +#line 9563 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 1329: -#line 8461 "gram.y" + case 1479: +#line 9567 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 1330: -#line 8468 "gram.y" - { - A_Const *n = makeNode(A_Const); - n->val.type = T_String; - n->val.val.str = (yyvsp[-2].str); - (yyval.list) = list_make2((Node *) n, (yyvsp[0].node)); - } - break; - - case 1331: -#line 8474 "gram.y" - { (yyval.list) = NIL; } - break; - - case 1332: -#line 8477 "gram.y" + case 1480: +#line 9572 "gram.y" { (yyval.list) = list_make1((yyvsp[0].typnam)); } break; - case 1333: -#line 8478 "gram.y" + case 1481: +#line 9573 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].typnam)); } break; - case 1334: -#line 8482 "gram.y" - { (yyval.list) = list_make1((yyvsp[0].node)); } + case 1482: +#line 9577 "gram.y" + { + (yyval.node) = makeAArrayExpr((yyvsp[-1].list), (yylsp[-2])); + } break; - case 1335: -#line 8484 "gram.y" - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } + case 1483: +#line 9581 "gram.y" + { + (yyval.node) = makeAArrayExpr((yyvsp[-1].list), (yylsp[-2])); + } break; - case 1336: -#line 8488 "gram.y" + case 1484: +#line 9585 "gram.y" { - ArrayExpr *n = makeNode(ArrayExpr); - n->elements = (yyvsp[-1].list); - (yyval.node) = (Node *)n; + (yyval.node) = makeAArrayExpr(NIL, (yylsp[-1])); } break; - case 1337: -#line 8494 "gram.y" + case 1485: +#line 9590 "gram.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } + break; + + case 1486: +#line 9591 "gram.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } + break; + + case 1487: +#line 9597 "gram.y" { - ArrayExpr *n = makeNode(ArrayExpr); - n->elements = (yyvsp[-1].list); - (yyval.node) = (Node *)n; + (yyval.list) = list_make2(makeStringConst((yyvsp[-2].str), (yylsp[-2])), (yyvsp[0].node)); } break; - case 1338: -#line 8506 "gram.y" + case 1488: +#line 9600 "gram.y" + { (yyval.list) = NIL; } + break; + + case 1489: +#line 9607 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1339: -#line 8507 "gram.y" + case 1490: +#line 9608 "gram.y" { (yyval.str) = "year"; } break; - case 1340: -#line 8508 "gram.y" + case 1491: +#line 9609 "gram.y" { (yyval.str) = "month"; } break; - case 1341: -#line 8509 "gram.y" + case 1492: +#line 9610 "gram.y" { (yyval.str) = "day"; } break; - case 1342: -#line 8510 "gram.y" + case 1493: +#line 9611 "gram.y" { (yyval.str) = "hour"; } break; - case 1343: -#line 8511 "gram.y" + case 1494: +#line 9612 "gram.y" { (yyval.str) = "minute"; } break; - case 1344: -#line 8512 "gram.y" + case 1495: +#line 9613 "gram.y" { (yyval.str) = "second"; } break; - case 1345: -#line 8513 "gram.y" + case 1496: +#line 9614 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1346: -#line 8523 "gram.y" + case 1497: +#line 9624 "gram.y" { (yyval.list) = list_make4((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); } break; - case 1347: -#line 8527 "gram.y" + case 1498: +#line 9628 "gram.y" { (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); } break; - case 1348: -#line 8534 "gram.y" + case 1499: +#line 9635 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1349: -#line 8540 "gram.y" + case 1500: +#line 9641 "gram.y" { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-2].node)); } break; - case 1350: -#line 8541 "gram.y" + case 1501: +#line 9642 "gram.y" { (yyval.list) = NIL; } break; - case 1351: -#line 8558 "gram.y" + case 1502: +#line 9659 "gram.y" { (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); } break; - case 1352: -#line 8562 "gram.y" + case 1503: +#line 9663 "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)); } break; - case 1353: -#line 8567 "gram.y" + case 1504: +#line 9668 "gram.y" { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); } break; - case 1354: -#line 8571 "gram.y" + case 1505: +#line 9672 "gram.y" { /* * Since there are no cases where this syntax allows @@ -24420,53 +27471,51 @@ yyreduce: * which it is likely to do if the second argument * is unknown or doesn't have an implicit cast to int4. */ - A_Const *n = makeNode(A_Const); - n->val.type = T_Integer; - n->val.val.ival = 1; - (yyval.list) = list_make3((yyvsp[-1].node), (Node *) n, - makeTypeCast((yyvsp[0].node), SystemTypeName("int4"))); + (yyval.list) = list_make3((yyvsp[-1].node), makeIntConst(1, -1), + makeTypeCast((yyvsp[0].node), + SystemTypeName("int4"), -1)); } break; - case 1355: -#line 8588 "gram.y" + case 1506: +#line 9687 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1356: -#line 8592 "gram.y" + case 1507: +#line 9691 "gram.y" { (yyval.list) = NIL; } break; - case 1357: -#line 8596 "gram.y" + case 1508: +#line 9695 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1358: -#line 8599 "gram.y" + case 1509: +#line 9698 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1359: -#line 8602 "gram.y" + case 1510: +#line 9701 "gram.y" { (yyval.list) = lappend((yyvsp[0].list), (yyvsp[-2].node)); } break; - case 1360: -#line 8603 "gram.y" + case 1511: +#line 9702 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1361: -#line 8604 "gram.y" + case 1512: +#line 9703 "gram.y" { (yyval.list) = (yyvsp[0].list); } break; - case 1362: -#line 8608 "gram.y" + case 1513: +#line 9707 "gram.y" { SubLink *n = makeNode(SubLink); n->subselect = (yyvsp[0].node); @@ -24475,93 +27524,95 @@ yyreduce: } break; - case 1363: -#line 8614 "gram.y" + case 1514: +#line 9713 "gram.y" { (yyval.node) = (Node *)(yyvsp[-1].list); } break; - case 1364: -#line 8625 "gram.y" + case 1515: +#line 9724 "gram.y" { CaseExpr *c = makeNode(CaseExpr); - c->casetype = 0; /* not analyzed yet */ + 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]); (yyval.node) = (Node *)c; } break; - case 1365: -#line 8637 "gram.y" + case 1516: +#line 9737 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 1366: -#line 8638 "gram.y" + case 1517: +#line 9738 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } break; - case 1367: -#line 8643 "gram.y" + case 1518: +#line 9743 "gram.y" { CaseWhen *w = makeNode(CaseWhen); w->expr = (Expr *) (yyvsp[-2].node); w->result = (Expr *) (yyvsp[0].node); + w->location = (yylsp[-3]); (yyval.node) = (Node *)w; } break; - case 1368: -#line 8652 "gram.y" + case 1519: +#line 9753 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1369: -#line 8653 "gram.y" + case 1520: +#line 9754 "gram.y" { (yyval.node) = NULL; } break; - case 1370: -#line 8656 "gram.y" + case 1521: +#line 9757 "gram.y" { (yyval.node) = (yyvsp[0].node); } break; - case 1371: -#line 8657 "gram.y" + case 1522: +#line 9758 "gram.y" { (yyval.node) = NULL; } break; - case 1372: -#line 8666 "gram.y" + case 1523: +#line 9767 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[0].str), NIL, (yylsp[0])); } break; - case 1373: -#line 8670 "gram.y" + case 1524: +#line 9771 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[-1].str), (yyvsp[0].list), (yylsp[-1])); } break; - case 1374: -#line 8677 "gram.y" + case 1525: +#line 9778 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } break; - case 1375: -#line 8681 "gram.y" + case 1526: +#line 9782 "gram.y" { - (yyval.node) = (Node *) makeString("*"); + (yyval.node) = (Node *) makeNode(A_Star); } break; - case 1376: -#line 8685 "gram.y" + case 1527: +#line 9786 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->lidx = NULL; @@ -24570,8 +27621,8 @@ yyreduce: } break; - case 1377: -#line 8692 "gram.y" + case 1528: +#line 9793 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->lidx = (yyvsp[-3].node); @@ -24580,63 +27631,67 @@ yyreduce: } break; - case 1378: -#line 8701 "gram.y" + case 1529: +#line 9802 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 1379: -#line 8702 "gram.y" + case 1530: +#line 9803 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } break; - case 1380: -#line 8706 "gram.y" + case 1531: +#line 9807 "gram.y" { (yyval.list) = NIL; } break; - case 1381: -#line 8707 "gram.y" + case 1532: +#line 9808 "gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } break; - case 1384: -#line 8722 "gram.y" + case 1535: +#line 9823 "gram.y" { (yyval.node) = (Node *) (yyvsp[0].node); } break; - case 1385: -#line 8723 "gram.y" - { (yyval.node) = (Node *) makeNode(SetToDefault); } + case 1536: +#line 9825 "gram.y" + { + SetToDefault *n = makeNode(SetToDefault); + n->location = (yylsp[0]); + (yyval.node) = (Node *) n; + } break; - case 1386: -#line 8727 "gram.y" + case 1537: +#line 9833 "gram.y" { (yyval.list) = list_make1((yyvsp[0].node)); } break; - case 1387: -#line 8728 "gram.y" + case 1538: +#line 9834 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } break; - case 1388: -#line 8736 "gram.y" + case 1539: +#line 9842 "gram.y" { (yyval.list) = (yyvsp[-1].list); } break; - case 1389: -#line 8747 "gram.y" + case 1540: +#line 9853 "gram.y" { (yyval.list) = list_make1((yyvsp[0].target)); } break; - case 1390: -#line 8748 "gram.y" + case 1541: +#line 9854 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } break; - case 1391: -#line 8753 "gram.y" + case 1542: +#line 9858 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[0].str); @@ -24646,8 +27701,19 @@ yyreduce: } break; - case 1392: -#line 8761 "gram.y" + case 1543: +#line 9874 "gram.y" + { + (yyval.target) = makeNode(ResTarget); + (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->indirection = NIL; + (yyval.target)->val = (Node *)(yyvsp[-1].node); + (yyval.target)->location = (yylsp[-1]); + } + break; + + case 1544: +#line 9882 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; @@ -24657,11 +27723,11 @@ yyreduce: } break; - case 1393: -#line 8769 "gram.y" + case 1545: +#line 9890 "gram.y" { ColumnRef *n = makeNode(ColumnRef); - n->fields = list_make1(makeString("*")); + n->fields = list_make1(makeNode(A_Star)); n->location = (yylsp[0]); (yyval.target) = makeNode(ResTarget); @@ -24672,38 +27738,39 @@ yyreduce: } break; - case 1394: -#line 8790 "gram.y" + case 1546: +#line 9911 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1395: -#line 8791 "gram.y" + case 1547: +#line 9912 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1396: -#line 8795 "gram.y" + case 1548: +#line 9916 "gram.y" { (yyval.list) = list_make1((yyvsp[0].range)); } break; - case 1397: -#line 8796 "gram.y" + case 1549: +#line 9917 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } break; - case 1398: -#line 8808 "gram.y" + case 1550: +#line 9929 "gram.y" { (yyval.range) = makeNode(RangeVar); (yyval.range)->catalogname = NULL; (yyval.range)->schemaname = NULL; (yyval.range)->relname = (yyvsp[0].str); + (yyval.range)->location = (yylsp[0]); } break; - case 1399: -#line 8815 "gram.y" + case 1551: +#line 9937 "gram.y" { check_qualified_name((yyvsp[0].list)); (yyval.range) = makeNode(RangeVar); @@ -24723,306 +27790,290 @@ yyreduce: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", - NameListToString(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)))))); + NameListToString(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)))), + scanner_errposition((yylsp[-1])))); break; } + (yyval.range)->location = (yylsp[-1]); } break; - case 1400: -#line 8841 "gram.y" + case 1552: +#line 9965 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 1401: -#line 8843 "gram.y" + case 1553: +#line 9967 "gram.y" { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } break; - case 1402: -#line 8847 "gram.y" + case 1554: +#line 9971 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1403: -#line 8850 "gram.y" + case 1555: +#line 9974 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1404: -#line 8853 "gram.y" + case 1556: +#line 9977 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1405: -#line 8855 "gram.y" + case 1557: +#line 9979 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1406: -#line 8857 "gram.y" + case 1558: +#line 9981 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1407: -#line 8859 "gram.y" + case 1559: +#line 9983 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1408: -#line 8870 "gram.y" + case 1560: +#line 9994 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } break; - case 1409: -#line 8872 "gram.y" + case 1561: +#line 9996 "gram.y" { (yyval.list) = check_func_name(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list))); } break; - case 1410: -#line 8880 "gram.y" + case 1562: +#line 10004 "gram.y" { - A_Const *n = makeNode(A_Const); - n->val.type = T_Integer; - n->val.val.ival = (yyvsp[0].ival); - (yyval.node) = (Node *)n; + (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); } break; - case 1411: -#line 8887 "gram.y" + case 1563: +#line 10008 "gram.y" { - A_Const *n = makeNode(A_Const); - n->val.type = T_Float; - n->val.val.str = (yyvsp[0].str); - (yyval.node) = (Node *)n; + (yyval.node) = makeFloatConst((yyvsp[0].str), (yylsp[0])); } break; - case 1412: -#line 8894 "gram.y" + case 1564: +#line 10012 "gram.y" { - A_Const *n = makeNode(A_Const); - n->val.type = T_String; - n->val.val.str = (yyvsp[0].str); - (yyval.node) = (Node *)n; + (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } break; - case 1413: -#line 8901 "gram.y" + case 1565: +#line 10016 "gram.y" { - A_Const *n = makeNode(A_Const); - n->val.type = T_BitString; - n->val.val.str = (yyvsp[0].str); - (yyval.node) = (Node *)n; + (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); } break; - case 1414: -#line 8908 "gram.y" + case 1566: +#line 10020 "gram.y" { /* This is a bit constant per SQL99: * Without Feature F511, "BIT data type", * a <general literal> shall not be a * <bit string literal> or a <hex string literal>. */ - A_Const *n = makeNode(A_Const); - n->val.type = T_BitString; - n->val.val.str = (yyvsp[0].str); - (yyval.node) = (Node *)n; + (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); } break; - case 1415: -#line 8920 "gram.y" + case 1567: +#line 10029 "gram.y" { /* generic type 'literal' syntax */ - A_Const *n = makeNode(A_Const); - n->typename = makeTypeNameFromNameList((yyvsp[-1].list)); - n->typename->location = (yylsp[-1]); - n->val.type = T_String; - n->val.val.str = (yyvsp[0].str); - (yyval.node) = (Node *)n; + TypeName *t = makeTypeNameFromNameList((yyvsp[-1].list)); + t->location = (yylsp[-1]); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); } break; - case 1416: -#line 8930 "gram.y" + case 1568: +#line 10036 "gram.y" { /* generic syntax with a type modifier */ - A_Const *n = makeNode(A_Const); - n->typename = makeTypeNameFromNameList((yyvsp[-4].list)); - n->typename->typmods = (yyvsp[-2].list); - n->typename->location = (yylsp[-4]); - n->val.type = T_String; - n->val.val.str = (yyvsp[0].str); - (yyval.node) = (Node *)n; + TypeName *t = makeTypeNameFromNameList((yyvsp[-4].list)); + t->typmods = (yyvsp[-2].list); + t->location = (yylsp[-4]); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); } break; - case 1417: -#line 8941 "gram.y" + case 1569: +#line 10044 "gram.y" { - A_Const *n = makeNode(A_Const); - n->typename = (yyvsp[-1].typnam); - n->val.type = T_String; - n->val.val.str = (yyvsp[0].str); - (yyval.node) = (Node *)n; + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), (yyvsp[-1].typnam)); } break; - case 1418: -#line 8949 "gram.y" + case 1570: +#line 10048 "gram.y" { - A_Const *n = makeNode(A_Const); - n->typename = (yyvsp[-2].typnam); - n->val.type = T_String; - n->val.val.str = (yyvsp[-1].str); - /* precision is not specified, but fields may be... */ - if ((yyvsp[0].ival) != INTERVAL_FULL_RANGE) - n->typename->typmods = list_make1(makeIntConst((yyvsp[0].ival))); - (yyval.node) = (Node *)n; + TypeName *t = (yyvsp[-2].typnam); + t->typmods = (yyvsp[0].list); + (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); } break; - case 1419: -#line 8960 "gram.y" + case 1571: +#line 10054 "gram.y" { - A_Const *n = makeNode(A_Const); - n->typename = (yyvsp[-5].typnam); - n->val.type = T_String; - n->val.val.str = (yyvsp[-1].str); - n->typename->typmods = list_make2(makeIntConst((yyvsp[0].ival)), - makeIntConst((yyvsp[-3].ival))); - (yyval.node) = (Node *)n; + TypeName *t = (yyvsp[-5].typnam); + if ((yyvsp[0].list) != NIL) + { + if (list_length((yyvsp[0].list)) != 1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("interval precision specified twice"), + scanner_errposition((yylsp[-5])))); + t->typmods = lappend((yyvsp[0].list), makeIntConst((yyvsp[-3].ival), (yylsp[-3]))); + } + else + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[-3].ival), (yylsp[-3]))); + (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); } break; - case 1420: -#line 8970 "gram.y" + case 1572: +#line 10071 "gram.y" { - (yyval.node) = (Node *)makeBoolAConst(TRUE); + (yyval.node) = makeBoolAConst(TRUE, (yylsp[0])); } break; - case 1421: -#line 8974 "gram.y" + case 1573: +#line 10075 "gram.y" { - (yyval.node) = (Node *)makeBoolAConst(FALSE); + (yyval.node) = makeBoolAConst(FALSE, (yylsp[0])); } break; - case 1422: -#line 8978 "gram.y" + case 1574: +#line 10079 "gram.y" { - A_Const *n = makeNode(A_Const); - n->val.type = T_Null; - (yyval.node) = (Node *)n; + (yyval.node) = makeNullAConst((yylsp[0])); } break; - case 1423: -#line 8985 "gram.y" + case 1575: +#line 10084 "gram.y" { (yyval.ival) = (yyvsp[0].ival); } break; - case 1424: -#line 8986 "gram.y" + case 1576: +#line 10085 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1425: -#line 8987 "gram.y" + case 1577: +#line 10086 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1426: -#line 8989 "gram.y" + case 1578: +#line 10088 "gram.y" { (yyval.ival) = (yyvsp[0].ival); } break; - case 1427: -#line 8990 "gram.y" + case 1579: +#line 10089 "gram.y" + { (yyval.ival) = + (yyvsp[0].ival); } + break; + + case 1580: +#line 10090 "gram.y" { (yyval.ival) = - (yyvsp[0].ival); } break; - case 1428: -#line 9006 "gram.y" + case 1581: +#line 10106 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1429: -#line 9007 "gram.y" + case 1582: +#line 10107 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1430: -#line 9008 "gram.y" + case 1583: +#line 10108 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1431: -#line 9013 "gram.y" + case 1584: +#line 10113 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1432: -#line 9014 "gram.y" + case 1585: +#line 10114 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1433: -#line 9015 "gram.y" + case 1586: +#line 10115 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1434: -#line 9021 "gram.y" + case 1587: +#line 10121 "gram.y" { (yyval.str) = (yyvsp[0].str); } break; - case 1435: -#line 9022 "gram.y" + case 1588: +#line 10122 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1436: -#line 9023 "gram.y" + case 1589: +#line 10123 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1437: -#line 9024 "gram.y" + case 1590: +#line 10124 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1438: -#line 9025 "gram.y" + case 1591: +#line 10125 "gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } break; - case 1811: -#line 9457 "gram.y" + case 1984: +#line 10577 "gram.y" { if (QueryIsRule) (yyval.str) = "*OLD*"; else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("OLD used in query that is not in a rule"))); + errmsg("OLD used in query that is not in a rule"), + scanner_errposition((yylsp[0])))); } break; - case 1812: -#line 9466 "gram.y" + case 1985: +#line 10587 "gram.y" { if (QueryIsRule) (yyval.str) = "*NEW*"; else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("NEW used in query that is not in a rule"))); + errmsg("NEW used in query that is not in a rule"), + scanner_errposition((yylsp[0])))); } break; @@ -25031,7 +28082,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 25035 "gram.c" +#line 28086 "gram.c" yyvsp -= yylen; yyssp -= yylen; @@ -25306,11 +28357,11 @@ yyreturn: } -#line 9476 "gram.y" +#line 10598 "gram.y" static Node * -makeColumnRef(char *relname, List *indirection, int location) +makeColumnRef(char *colname, List *indirection, int location) { /* * Generate a ColumnRef node, with an A_Indirection node added if there @@ -25332,95 +28383,128 @@ makeColumnRef(char *relname, List *indirection, int location) if (nfields == 0) { /* easy case - all indirection goes to A_Indirection */ - c->fields = list_make1(makeString(relname)); - i->indirection = indirection; + c->fields = list_make1(makeString(colname)); + i->indirection = check_indirection(indirection); } else { /* got to split the list in two */ - i->indirection = list_copy_tail(indirection, nfields); + i->indirection = check_indirection(list_copy_tail(indirection, + nfields)); indirection = list_truncate(indirection, nfields); - c->fields = lcons(makeString(relname), indirection); + c->fields = lcons(makeString(colname), indirection); } i->arg = (Node *) c; return (Node *) i; } + else if (IsA(lfirst(l), A_Star)) + { + /* We only allow '*' at the end of a ColumnRef */ + if (lnext(l) != NULL) + yyerror("improper use of \"*\""); + } nfields++; } /* No subscripting, so all indirection gets added to field list */ - c->fields = lcons(makeString(relname), indirection); + c->fields = lcons(makeString(colname), indirection); return (Node *) c; } static Node * -makeTypeCast(Node *arg, TypeName *typename) +makeTypeCast(Node *arg, TypeName *typename, int location) { - /* - * Simply generate a TypeCast node. - * - * Earlier we would determine whether an A_Const would - * be acceptable, however Domains require coerce_type() - * to process them -- applying constraints as required. - */ TypeCast *n = makeNode(TypeCast); n->arg = arg; n->typename = typename; + n->location = location; return (Node *) n; } static Node * -makeStringConst(char *str, TypeName *typename) +makeStringConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_String; n->val.val.str = str; - n->typename = typename; + n->location = location; return (Node *)n; } static Node * -makeIntConst(int val) +makeStringConstCast(char *str, int location, TypeName *typename) +{ + Node *s = makeStringConst(str, location); + + return makeTypeCast(s, typename, -1); +} + +static Node * +makeIntConst(int val, int location) { A_Const *n = makeNode(A_Const); + n->val.type = T_Integer; n->val.val.ival = val; - n->typename = SystemTypeName("int4"); + n->location = location; return (Node *)n; } static Node * -makeFloatConst(char *str) +makeFloatConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_Float; n->val.val.str = str; - n->typename = SystemTypeName("float8"); + n->location = location; + + return (Node *)n; +} + +static Node * +makeBitStringConst(char *str, int location) +{ + A_Const *n = makeNode(A_Const); + + n->val.type = T_BitString; + n->val.val.str = str; + n->location = location; + + return (Node *)n; +} + +static Node * +makeNullAConst(int location) +{ + A_Const *n = makeNode(A_Const); + + n->val.type = T_Null; + n->location = location; return (Node *)n; } static Node * -makeAConst(Value *v) +makeAConst(Value *v, int location) { Node *n; switch (v->type) { case T_Float: - n = makeFloatConst(v->val.str); + n = makeFloatConst(v->val.str, location); break; case T_Integer: - n = makeIntConst(v->val.ival); + n = makeIntConst(v->val.ival, location); break; case T_String: default: - n = makeStringConst(v->val.str, NULL); + n = makeStringConst(v->val.str, location); break; } @@ -25428,16 +28512,18 @@ makeAConst(Value *v) } /* makeBoolAConst() - * Create an A_Const node and initialize to a boolean constant. + * Create an A_Const string node and put it inside a boolean cast. */ -static A_Const * -makeBoolAConst(bool state) +static Node * +makeBoolAConst(bool state, int location) { A_Const *n = makeNode(A_Const); + n->val.type = T_String; - n->val.val.str = (state? "t": "f"); - n->typename = SystemTypeName("bool"); - return n; + n->val.val.str = (state ? "t" : "f"); + n->location = location; + + return makeTypeCast((Node *)n, SystemTypeName("bool"), -1); } /* makeOverlaps() @@ -25454,16 +28540,20 @@ makeOverlaps(List *largs, List *rargs, int location) else if (list_length(largs) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on left side of OVERLAPS expression"))); + errmsg("wrong number of parameters on left side of OVERLAPS expression"), + scanner_errposition(location))); if (list_length(rargs) == 1) rargs = lappend(rargs, rargs); else if (list_length(rargs) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on right side of OVERLAPS expression"))); + errmsg("wrong number of parameters on right side of OVERLAPS expression"), + scanner_errposition(location))); n->args = list_concat(largs, rargs); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = location; return n; } @@ -25482,8 +28572,6 @@ check_qualified_name(List *names) { if (!IsA(lfirst(i), String)) yyerror("syntax error"); - else if (strcmp(strVal(lfirst(i)), "*") == 0) - yyerror("syntax error"); } } @@ -25501,12 +28589,31 @@ check_func_name(List *names) { if (!IsA(lfirst(i), String)) yyerror("syntax error"); - else if (strcmp(strVal(lfirst(i)), "*") == 0) - yyerror("syntax error"); } return names; } +/* check_indirection --- check the result of indirection production + * + * We only allow '*' at the end of the list, but it's hard to enforce that + * in the grammar, so do it here. + */ +static List * +check_indirection(List *indirection) +{ + ListCell *l; + + foreach(l, indirection) + { + if (IsA(lfirst(l), A_Star)) + { + if (lnext(l) != NULL) + yyerror("improper use of \"*\""); + } + } + return indirection; +} + /* extractArgTypes() * Given a list of FunctionParameter nodes, extract a list of just the * argument types (TypeNames) for input parameters only. This is what @@ -25523,7 +28630,7 @@ extractArgTypes(List *parameters) { FunctionParameter *p = (FunctionParameter *) lfirst(i); - if (p->mode != FUNC_PARAM_OUT) /* keep if IN or INOUT */ + if (p->mode != FUNC_PARAM_OUT && p->mode != FUNC_PARAM_TABLE) result = lappend(result, p->argType); } return result; @@ -25548,8 +28655,11 @@ findLeftmostSelect(SelectStmt *node) static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, - Node *limitOffset, Node *limitCount) + Node *limitOffset, Node *limitCount, + WithClause *withClause) { + Assert(IsA(stmt, SelectStmt)); + /* * Tests here are to reject constructs like * (SELECT foo ORDER BY bar) ORDER BY baz @@ -25559,7 +28669,8 @@ insertSelectOptions(SelectStmt *stmt, if (stmt->sortClause) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("multiple ORDER BY clauses not allowed"))); + errmsg("multiple ORDER BY clauses not allowed"), + scanner_errposition(exprLocation((Node *) sortClause)))); stmt->sortClause = sortClause; } /* We can handle multiple locking clauses, though */ @@ -25569,7 +28680,8 @@ insertSelectOptions(SelectStmt *stmt, if (stmt->limitOffset) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("multiple OFFSET clauses not allowed"))); + errmsg("multiple OFFSET clauses not allowed"), + scanner_errposition(exprLocation(limitOffset)))); stmt->limitOffset = limitOffset; } if (limitCount) @@ -25577,9 +28689,19 @@ insertSelectOptions(SelectStmt *stmt, if (stmt->limitCount) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("multiple LIMIT clauses not allowed"))); + errmsg("multiple LIMIT clauses not allowed"), + scanner_errposition(exprLocation(limitCount)))); stmt->limitCount = limitCount; } + if (withClause) + { + if (stmt->withClause) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("multiple WITH clauses not allowed"), + scanner_errposition(exprLocation((Node *) withClause)))); + stmt->withClause = withClause; + } } static Node * @@ -25607,20 +28729,13 @@ SystemFuncName(char *name) * Build a properly-qualified reference to a built-in type. * * typmod is defaulted, but may be changed afterwards by caller. + * Likewise for the location. */ TypeName * SystemTypeName(char *name) { - return makeTypeNameFromNameList(list_make1(makeString(name))); -} - -/* parser_init() - * Initialize to parse one query string - */ -void -parser_init(void) -{ - QueryIsRule = FALSE; + return makeTypeNameFromNameList(list_make2(makeString("pg_catalog"), + makeString(name))); } /* exprIsNullConstant() @@ -25633,8 +28748,7 @@ exprIsNullConstant(Node *arg) { A_Const *con = (A_Const *) arg; - if (con->val.type == T_Null && - con->typename == NULL) + if (con->val.type == T_Null) return TRUE; } return FALSE; @@ -25660,6 +28774,9 @@ doNegate(Node *n, int location) { A_Const *con = (A_Const *)n; + /* report the constant's location as that of the '-' sign */ + con->location = location; + if (con->val.type == T_Integer) { con->val.val.ival = -con->val.val.ival; @@ -25695,7 +28812,18 @@ doNegateFloat(Value *v) } static Node * -makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args) +makeAArrayExpr(List *elements, int location) +{ + A_ArrayExpr *n = makeNode(A_ArrayExpr); + + n->elements = elements; + n->location = location; + return (Node *) n; +} + +static Node * +makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, + int location) { XmlExpr *x = makeNode(XmlExpr); @@ -25708,9 +28836,66 @@ makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args) x->named_args = named_args; x->arg_names = NIL; x->args = args; + /* xmloption, if relevant, must be filled in by caller */ + /* type and typmod will be filled in during parse analysis */ + x->location = location; return (Node *) x; } +/* parser_init() + * Initialize to parse one query string + */ +void +parser_init(void) +{ + QueryIsRule = FALSE; +} + +/* + * Merge the input and output parameters of a table function. + */ +static List * +mergeTableFuncParameters(List *func_args, List *columns) +{ + ListCell *lc; + + /* Explicit OUT and INOUT parameters shouldn't be used in this syntax */ + foreach(lc, func_args) + { + FunctionParameter *p = (FunctionParameter *) lfirst(lc); + + if (p->mode != FUNC_PARAM_IN && p->mode != FUNC_PARAM_VARIADIC) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("OUT and INOUT arguments aren't allowed in TABLE functions"))); + } + + return list_concat(func_args, columns); +} + +/* + * Determine return type of a TABLE function. A single result column + * returns setof that column's type; otherwise return setof record. + */ +static TypeName * +TableFuncTypeName(List *columns) +{ + TypeName *result; + + if (list_length(columns) == 1) + { + FunctionParameter *p = (FunctionParameter *) linitial(columns); + + result = (TypeName *) copyObject(p->argType); + } + else + result = SystemTypeName("record"); + + result->setof = true; + + return result; +} + /* * Create a DefElem setting "oids" to the specified value. */ diff --git a/parser/gram.h b/parser/gram.h index 31682e446..43de21fd4 100644 --- a/parser/gram.h +++ b/parser/gram.h @@ -69,354 +69,372 @@ CASCADED = 295, CASE = 296, CAST = 297, - CHAIN = 298, - CHAR_P = 299, - CHARACTER = 300, - CHARACTERISTICS = 301, - CHECK = 302, - CHECKPOINT = 303, - CLASS = 304, - CLOSE = 305, - CLUSTER = 306, - COALESCE = 307, - COLLATE = 308, - COLUMN = 309, - COMMENT = 310, - COMMIT = 311, - COMMITTED = 312, - CONCURRENTLY = 313, - CONFIGURATION = 314, - CONNECTION = 315, - CONSTRAINT = 316, - CONSTRAINTS = 317, - CONTENT_P = 318, - CONVERSION_P = 319, - COPY = 320, - COST = 321, - CREATE = 322, - CREATEDB = 323, - CREATEROLE = 324, - CREATEUSER = 325, - CROSS = 326, - CSV = 327, - CURRENT_P = 328, - CURRENT_DATE = 329, - CURRENT_ROLE = 330, - CURRENT_TIME = 331, - CURRENT_TIMESTAMP = 332, - CURRENT_USER = 333, - CURSOR = 334, - CYCLE = 335, - DATABASE = 336, - DAY_P = 337, - DEALLOCATE = 338, - DEC = 339, - DECIMAL_P = 340, - DECLARE = 341, - DEFAULT = 342, - DEFAULTS = 343, - DEFERRABLE = 344, - DEFERRED = 345, - DEFINER = 346, - DELETE_P = 347, - DELIMITER = 348, - DELIMITERS = 349, - DESC = 350, - DICTIONARY = 351, - DISABLE_P = 352, - DISCARD = 353, - DISTINCT = 354, - DO = 355, - DOCUMENT_P = 356, - DOMAIN_P = 357, - DOUBLE_P = 358, - DROP = 359, - EACH = 360, - ELSE = 361, - ENABLE_P = 362, - ENCODING = 363, - ENCRYPTED = 364, - END_P = 365, - ENUM_P = 366, - ESCAPE = 367, - EXCEPT = 368, - EXCLUDING = 369, - EXCLUSIVE = 370, - EXECUTE = 371, - EXISTS = 372, - EXPLAIN = 373, - EXTERNAL = 374, - EXTRACT = 375, - FALSE_P = 376, - FAMILY = 377, - FETCH = 378, - FIRST_P = 379, - FLOAT_P = 380, - FOR = 381, - FORCE = 382, - FOREIGN = 383, - FORWARD = 384, - FREEZE = 385, - FROM = 386, - FULL = 387, - FUNCTION = 388, - GLOBAL = 389, - GRANT = 390, - GRANTED = 391, - GREATEST = 392, - GROUP_P = 393, - HANDLER = 394, - HAVING = 395, - HEADER_P = 396, - HOLD = 397, - HOUR_P = 398, - IF_P = 399, - ILIKE = 400, - IMMEDIATE = 401, - IMMUTABLE = 402, - IMPLICIT_P = 403, - IN_P = 404, - INCLUDING = 405, - INCREMENT = 406, - INDEX = 407, - INDEXES = 408, - INHERIT = 409, - INHERITS = 410, - INITIALLY = 411, - INNER_P = 412, - INOUT = 413, - INPUT_P = 414, - INSENSITIVE = 415, - INSERT = 416, - INSTEAD = 417, - INT_P = 418, - INTEGER = 419, - INTERSECT = 420, - INTERVAL = 421, - INTO = 422, - INVOKER = 423, - IS = 424, - ISNULL = 425, - ISOLATION = 426, - JOIN = 427, - KEY = 428, - LANCOMPILER = 429, - LANGUAGE = 430, - LARGE_P = 431, - LAST_P = 432, - LEADING = 433, - LEAST = 434, - LEFT = 435, - LEVEL = 436, - LIKE = 437, - LIMIT = 438, - LISTEN = 439, - LOAD = 440, - LOCAL = 441, - LOCALTIME = 442, - LOCALTIMESTAMP = 443, - LOCATION = 444, - LOCK_P = 445, - LOGIN_P = 446, - MAPPING = 447, - MATCH = 448, - MAXVALUE = 449, - MINUTE_P = 450, - MINVALUE = 451, - MODE = 452, - MONTH_P = 453, - MOVE = 454, - NAME_P = 455, - NAMES = 456, - NATIONAL = 457, - NATURAL = 458, - NCHAR = 459, - NEW = 460, - NEXT = 461, - NO = 462, - NOCREATEDB = 463, - NOCREATEROLE = 464, - NOCREATEUSER = 465, - NOINHERIT = 466, - NOLOGIN_P = 467, - NONE = 468, - NOSUPERUSER = 469, - NOT = 470, - NOTHING = 471, - NOTIFY = 472, - NOTNULL = 473, - NOWAIT = 474, - NULL_P = 475, - NULLIF = 476, - NULLS_P = 477, - NUMERIC = 478, - OBJECT_P = 479, - OF = 480, - OFF = 481, - OFFSET = 482, - OIDS = 483, - OLD = 484, - ON = 485, - ONLY = 486, - OPERATOR = 487, - OPTION = 488, - OR = 489, - ORDER = 490, - OUT_P = 491, - OUTER_P = 492, - OVERLAPS = 493, - OVERLAY = 494, - OWNED = 495, - OWNER = 496, - PARSER = 497, - PARTIAL = 498, - PASSWORD = 499, - PLACING = 500, - PLANS = 501, - POSITION = 502, - PRECISION = 503, - PRESERVE = 504, - PREPARE = 505, - PREPARED = 506, - PRIMARY = 507, - PRIOR = 508, - PRIVILEGES = 509, - PROCEDURAL = 510, - PROCEDURE = 511, - QUOTE = 512, - READ = 513, - REAL = 514, - REASSIGN = 515, - RECHECK = 516, - REFERENCES = 517, - REINDEX = 518, - RELATIVE_P = 519, - RELEASE = 520, - RENAME = 521, - REPEATABLE = 522, - REPLACE = 523, - REPLICA = 524, - RESET = 525, - RESTART = 526, - RESTRICT = 527, - RETURNING = 528, - RETURNS = 529, - REVOKE = 530, - RIGHT = 531, - ROLE = 532, - ROLLBACK = 533, - ROW = 534, - ROWS = 535, - RULE = 536, - SAVEPOINT = 537, - SCHEMA = 538, - SCROLL = 539, - SEARCH = 540, - SECOND_P = 541, - SECURITY = 542, - SELECT = 543, - SEQUENCE = 544, - SERIALIZABLE = 545, - SESSION = 546, - SESSION_USER = 547, - SET = 548, - SETOF = 549, - SHARE = 550, - SHOW = 551, - SIMILAR = 552, - SIMPLE = 553, - SMALLINT = 554, - SOME = 555, - STABLE = 556, - STANDALONE_P = 557, - START = 558, - STATEMENT = 559, - STATISTICS = 560, - STDIN = 561, - STDOUT = 562, - STORAGE = 563, - STRICT_P = 564, - STRIP_P = 565, - SUBSTRING = 566, - SUPERUSER_P = 567, - SYMMETRIC = 568, - SYSID = 569, - SYSTEM_P = 570, - TABLE = 571, - TABLESPACE = 572, - TEMP = 573, - TEMPLATE = 574, - TEMPORARY = 575, - TEXT_P = 576, - THEN = 577, - TIME = 578, - TIMESTAMP = 579, - TO = 580, - TRAILING = 581, - TRANSACTION = 582, - TREAT = 583, - TRIGGER = 584, - TRIM = 585, - TRUE_P = 586, - TRUNCATE = 587, - TRUSTED = 588, - TYPE_P = 589, - UNCOMMITTED = 590, - UNENCRYPTED = 591, - UNION = 592, - UNIQUE = 593, - UNKNOWN = 594, - UNLISTEN = 595, - UNTIL = 596, - UPDATE = 597, - USER = 598, - USING = 599, - VACUUM = 600, - VALID = 601, - VALIDATOR = 602, - VALUE_P = 603, - VALUES = 604, - VARCHAR = 605, - VARYING = 606, - VERBOSE = 607, - VERSION_P = 608, - VIEW = 609, - VOLATILE = 610, - WHEN = 611, - WHERE = 612, - WHITESPACE_P = 613, - WITH = 614, - WITHOUT = 615, - WORK = 616, - WRITE = 617, - XML_P = 618, - XMLATTRIBUTES = 619, - XMLCONCAT = 620, - XMLELEMENT = 621, - XMLFOREST = 622, - XMLPARSE = 623, - XMLPI = 624, - XMLROOT = 625, - XMLSERIALIZE = 626, - YEAR_P = 627, - YES_P = 628, - ZONE = 629, - NULLS_FIRST = 630, - NULLS_LAST = 631, - WITH_CASCADED = 632, - WITH_LOCAL = 633, - WITH_CHECK = 634, - IDENT = 635, - FCONST = 636, - SCONST = 637, - BCONST = 638, - XCONST = 639, - Op = 640, - ICONST = 641, - PARAM = 642, - POSTFIXOP = 643, - UMINUS = 644, - TYPECAST = 645 + CATALOG_P = 298, + CHAIN = 299, + CHAR_P = 300, + CHARACTER = 301, + CHARACTERISTICS = 302, + CHECK = 303, + CHECKPOINT = 304, + CLASS = 305, + CLOSE = 306, + CLUSTER = 307, + COALESCE = 308, + COLLATE = 309, + COLUMN = 310, + COMMENT = 311, + COMMIT = 312, + COMMITTED = 313, + CONCURRENTLY = 314, + CONFIGURATION = 315, + CONNECTION = 316, + CONSTRAINT = 317, + CONSTRAINTS = 318, + CONTENT_P = 319, + CONTINUE_P = 320, + CONVERSION_P = 321, + COPY = 322, + COST = 323, + CREATE = 324, + CREATEDB = 325, + CREATEROLE = 326, + CREATEUSER = 327, + CROSS = 328, + CSV = 329, + CURRENT_P = 330, + CURRENT_CATALOG = 331, + CURRENT_DATE = 332, + CURRENT_ROLE = 333, + CURRENT_SCHEMA = 334, + CURRENT_TIME = 335, + CURRENT_TIMESTAMP = 336, + CURRENT_USER = 337, + CURSOR = 338, + CYCLE = 339, + DATA_P = 340, + DATABASE = 341, + DAY_P = 342, + DEALLOCATE = 343, + DEC = 344, + DECIMAL_P = 345, + DECLARE = 346, + DEFAULT = 347, + DEFAULTS = 348, + DEFERRABLE = 349, + DEFERRED = 350, + DEFINER = 351, + DELETE_P = 352, + DELIMITER = 353, + DELIMITERS = 354, + DESC = 355, + DICTIONARY = 356, + DISABLE_P = 357, + DISCARD = 358, + DISTINCT = 359, + DO = 360, + DOCUMENT_P = 361, + DOMAIN_P = 362, + DOUBLE_P = 363, + DROP = 364, + EACH = 365, + ELSE = 366, + ENABLE_P = 367, + ENCODING = 368, + ENCRYPTED = 369, + END_P = 370, + ENUM_P = 371, + ESCAPE = 372, + EXCEPT = 373, + EXCLUDING = 374, + EXCLUSIVE = 375, + EXECUTE = 376, + EXISTS = 377, + EXPLAIN = 378, + EXTERNAL = 379, + EXTRACT = 380, + FALSE_P = 381, + FAMILY = 382, + FETCH = 383, + FIRST_P = 384, + FLOAT_P = 385, + FOLLOWING = 386, + FOR = 387, + FORCE = 388, + FOREIGN = 389, + FORWARD = 390, + FREEZE = 391, + FROM = 392, + FULL = 393, + FUNCTION = 394, + GLOBAL = 395, + GRANT = 396, + GRANTED = 397, + GREATEST = 398, + GROUP_P = 399, + HANDLER = 400, + HAVING = 401, + HEADER_P = 402, + HOLD = 403, + HOUR_P = 404, + IDENTITY_P = 405, + IF_P = 406, + ILIKE = 407, + IMMEDIATE = 408, + IMMUTABLE = 409, + IMPLICIT_P = 410, + IN_P = 411, + INCLUDING = 412, + INCREMENT = 413, + INDEX = 414, + INDEXES = 415, + INHERIT = 416, + INHERITS = 417, + INITIALLY = 418, + INNER_P = 419, + INOUT = 420, + INPUT_P = 421, + INSENSITIVE = 422, + INSERT = 423, + INSTEAD = 424, + INT_P = 425, + INTEGER = 426, + INTERSECT = 427, + INTERVAL = 428, + INTO = 429, + INVOKER = 430, + IS = 431, + ISNULL = 432, + ISOLATION = 433, + JOIN = 434, + KEY = 435, + LANCOMPILER = 436, + LANGUAGE = 437, + LARGE_P = 438, + LAST_P = 439, + LC_COLLATE_P = 440, + LC_CTYPE_P = 441, + LEADING = 442, + LEAST = 443, + LEFT = 444, + LEVEL = 445, + LIKE = 446, + LIMIT = 447, + LISTEN = 448, + LOAD = 449, + LOCAL = 450, + LOCALTIME = 451, + LOCALTIMESTAMP = 452, + LOCATION = 453, + LOCK_P = 454, + LOGIN_P = 455, + MAPPING = 456, + MATCH = 457, + MAXVALUE = 458, + MINUTE_P = 459, + MINVALUE = 460, + MODE = 461, + MONTH_P = 462, + MOVE = 463, + NAME_P = 464, + NAMES = 465, + NATIONAL = 466, + NATURAL = 467, + NCHAR = 468, + NEW = 469, + NEXT = 470, + NO = 471, + NOCREATEDB = 472, + NOCREATEROLE = 473, + NOCREATEUSER = 474, + NOINHERIT = 475, + NOLOGIN_P = 476, + NONE = 477, + NOSUPERUSER = 478, + NOT = 479, + NOTHING = 480, + NOTIFY = 481, + NOTNULL = 482, + NOWAIT = 483, + NULL_P = 484, + NULLIF = 485, + NULLS_P = 486, + NUMERIC = 487, + OBJECT_P = 488, + OF = 489, + OFF = 490, + OFFSET = 491, + OIDS = 492, + OLD = 493, + ON = 494, + ONLY = 495, + OPERATOR = 496, + OPTION = 497, + OPTIONS = 498, + OR = 499, + ORDER = 500, + OUT_P = 501, + OUTER_P = 502, + OVER = 503, + OVERLAPS = 504, + OVERLAY = 505, + OWNED = 506, + OWNER = 507, + PARSER = 508, + PARTIAL = 509, + PARTITION = 510, + PASSWORD = 511, + PLACING = 512, + PLANS = 513, + POSITION = 514, + PRECEDING = 515, + PRECISION = 516, + PRESERVE = 517, + PREPARE = 518, + PREPARED = 519, + PRIMARY = 520, + PRIOR = 521, + PRIVILEGES = 522, + PROCEDURAL = 523, + PROCEDURE = 524, + QUOTE = 525, + RANGE = 526, + READ = 527, + REAL = 528, + REASSIGN = 529, + RECHECK = 530, + RECURSIVE = 531, + REFERENCES = 532, + REINDEX = 533, + RELATIVE_P = 534, + RELEASE = 535, + RENAME = 536, + REPEATABLE = 537, + REPLACE = 538, + REPLICA = 539, + RESET = 540, + RESTART = 541, + RESTRICT = 542, + RETURNING = 543, + RETURNS = 544, + REVOKE = 545, + RIGHT = 546, + ROLE = 547, + ROLLBACK = 548, + ROW = 549, + ROWS = 550, + RULE = 551, + SAVEPOINT = 552, + SCHEMA = 553, + SCROLL = 554, + SEARCH = 555, + SECOND_P = 556, + SECURITY = 557, + SELECT = 558, + SEQUENCE = 559, + SERIALIZABLE = 560, + SERVER = 561, + SESSION = 562, + SESSION_USER = 563, + SET = 564, + SETOF = 565, + SHARE = 566, + SHOW = 567, + SIMILAR = 568, + SIMPLE = 569, + SMALLINT = 570, + SOME = 571, + STABLE = 572, + STANDALONE_P = 573, + START = 574, + STATEMENT = 575, + STATISTICS = 576, + STDIN = 577, + STDOUT = 578, + STORAGE = 579, + STRICT_P = 580, + STRIP_P = 581, + SUBSTRING = 582, + SUPERUSER_P = 583, + SYMMETRIC = 584, + SYSID = 585, + SYSTEM_P = 586, + TABLE = 587, + TABLESPACE = 588, + TEMP = 589, + TEMPLATE = 590, + TEMPORARY = 591, + TEXT_P = 592, + THEN = 593, + TIME = 594, + TIMESTAMP = 595, + TO = 596, + TRAILING = 597, + TRANSACTION = 598, + TREAT = 599, + TRIGGER = 600, + TRIM = 601, + TRUE_P = 602, + TRUNCATE = 603, + TRUSTED = 604, + TYPE_P = 605, + UNBOUNDED = 606, + UNCOMMITTED = 607, + UNENCRYPTED = 608, + UNION = 609, + UNIQUE = 610, + UNKNOWN = 611, + UNLISTEN = 612, + UNTIL = 613, + UPDATE = 614, + USER = 615, + USING = 616, + VACUUM = 617, + VALID = 618, + VALIDATOR = 619, + VALUE_P = 620, + VALUES = 621, + VARCHAR = 622, + VARIADIC = 623, + VARYING = 624, + VERBOSE = 625, + VERSION_P = 626, + VIEW = 627, + VOLATILE = 628, + WHEN = 629, + WHERE = 630, + WHITESPACE_P = 631, + WINDOW = 632, + WITH = 633, + WITHOUT = 634, + WORK = 635, + WRAPPER = 636, + WRITE = 637, + XML_P = 638, + XMLATTRIBUTES = 639, + XMLCONCAT = 640, + XMLELEMENT = 641, + XMLFOREST = 642, + XMLPARSE = 643, + XMLPI = 644, + XMLROOT = 645, + XMLSERIALIZE = 646, + YEAR_P = 647, + YES_P = 648, + ZONE = 649, + NULLS_FIRST = 650, + NULLS_LAST = 651, + WITH_TIME = 652, + IDENT = 653, + FCONST = 654, + SCONST = 655, + BCONST = 656, + XCONST = 657, + Op = 658, + ICONST = 659, + PARAM = 660, + POSTFIXOP = 661, + UMINUS = 662, + TYPECAST = 663 }; #endif /* Tokens. */ @@ -460,360 +478,378 @@ #define CASCADED 295 #define CASE 296 #define CAST 297 -#define CHAIN 298 -#define CHAR_P 299 -#define CHARACTER 300 -#define CHARACTERISTICS 301 -#define CHECK 302 -#define CHECKPOINT 303 -#define CLASS 304 -#define CLOSE 305 -#define CLUSTER 306 -#define COALESCE 307 -#define COLLATE 308 -#define COLUMN 309 -#define COMMENT 310 -#define COMMIT 311 -#define COMMITTED 312 -#define CONCURRENTLY 313 -#define CONFIGURATION 314 -#define CONNECTION 315 -#define CONSTRAINT 316 -#define CONSTRAINTS 317 -#define CONTENT_P 318 -#define CONVERSION_P 319 -#define COPY 320 -#define COST 321 -#define CREATE 322 -#define CREATEDB 323 -#define CREATEROLE 324 -#define CREATEUSER 325 -#define CROSS 326 -#define CSV 327 -#define CURRENT_P 328 -#define CURRENT_DATE 329 -#define CURRENT_ROLE 330 -#define CURRENT_TIME 331 -#define CURRENT_TIMESTAMP 332 -#define CURRENT_USER 333 -#define CURSOR 334 -#define CYCLE 335 -#define DATABASE 336 -#define DAY_P 337 -#define DEALLOCATE 338 -#define DEC 339 -#define DECIMAL_P 340 -#define DECLARE 341 -#define DEFAULT 342 -#define DEFAULTS 343 -#define DEFERRABLE 344 -#define DEFERRED 345 -#define DEFINER 346 -#define DELETE_P 347 -#define DELIMITER 348 -#define DELIMITERS 349 -#define DESC 350 -#define DICTIONARY 351 -#define DISABLE_P 352 -#define DISCARD 353 -#define DISTINCT 354 -#define DO 355 -#define DOCUMENT_P 356 -#define DOMAIN_P 357 -#define DOUBLE_P 358 -#define DROP 359 -#define EACH 360 -#define ELSE 361 -#define ENABLE_P 362 -#define ENCODING 363 -#define ENCRYPTED 364 -#define END_P 365 -#define ENUM_P 366 -#define ESCAPE 367 -#define EXCEPT 368 -#define EXCLUDING 369 -#define EXCLUSIVE 370 -#define EXECUTE 371 -#define EXISTS 372 -#define EXPLAIN 373 -#define EXTERNAL 374 -#define EXTRACT 375 -#define FALSE_P 376 -#define FAMILY 377 -#define FETCH 378 -#define FIRST_P 379 -#define FLOAT_P 380 -#define FOR 381 -#define FORCE 382 -#define FOREIGN 383 -#define FORWARD 384 -#define FREEZE 385 -#define FROM 386 -#define FULL 387 -#define FUNCTION 388 -#define GLOBAL 389 -#define GRANT 390 -#define GRANTED 391 -#define GREATEST 392 -#define GROUP_P 393 -#define HANDLER 394 -#define HAVING 395 -#define HEADER_P 396 -#define HOLD 397 -#define HOUR_P 398 -#define IF_P 399 -#define ILIKE 400 -#define IMMEDIATE 401 -#define IMMUTABLE 402 -#define IMPLICIT_P 403 -#define IN_P 404 -#define INCLUDING 405 -#define INCREMENT 406 -#define INDEX 407 -#define INDEXES 408 -#define INHERIT 409 -#define INHERITS 410 -#define INITIALLY 411 -#define INNER_P 412 -#define INOUT 413 -#define INPUT_P 414 -#define INSENSITIVE 415 -#define INSERT 416 -#define INSTEAD 417 -#define INT_P 418 -#define INTEGER 419 -#define INTERSECT 420 -#define INTERVAL 421 -#define INTO 422 -#define INVOKER 423 -#define IS 424 -#define ISNULL 425 -#define ISOLATION 426 -#define JOIN 427 -#define KEY 428 -#define LANCOMPILER 429 -#define LANGUAGE 430 -#define LARGE_P 431 -#define LAST_P 432 -#define LEADING 433 -#define LEAST 434 -#define LEFT 435 -#define LEVEL 436 -#define LIKE 437 -#define LIMIT 438 -#define LISTEN 439 -#define LOAD 440 -#define LOCAL 441 -#define LOCALTIME 442 -#define LOCALTIMESTAMP 443 -#define LOCATION 444 -#define LOCK_P 445 -#define LOGIN_P 446 -#define MAPPING 447 -#define MATCH 448 -#define MAXVALUE 449 -#define MINUTE_P 450 -#define MINVALUE 451 -#define MODE 452 -#define MONTH_P 453 -#define MOVE 454 -#define NAME_P 455 -#define NAMES 456 -#define NATIONAL 457 -#define NATURAL 458 -#define NCHAR 459 -#define NEW 460 -#define NEXT 461 -#define NO 462 -#define NOCREATEDB 463 -#define NOCREATEROLE 464 -#define NOCREATEUSER 465 -#define NOINHERIT 466 -#define NOLOGIN_P 467 -#define NONE 468 -#define NOSUPERUSER 469 -#define NOT 470 -#define NOTHING 471 -#define NOTIFY 472 -#define NOTNULL 473 -#define NOWAIT 474 -#define NULL_P 475 -#define NULLIF 476 -#define NULLS_P 477 -#define NUMERIC 478 -#define OBJECT_P 479 -#define OF 480 -#define OFF 481 -#define OFFSET 482 -#define OIDS 483 -#define OLD 484 -#define ON 485 -#define ONLY 486 -#define OPERATOR 487 -#define OPTION 488 -#define OR 489 -#define ORDER 490 -#define OUT_P 491 -#define OUTER_P 492 -#define OVERLAPS 493 -#define OVERLAY 494 -#define OWNED 495 -#define OWNER 496 -#define PARSER 497 -#define PARTIAL 498 -#define PASSWORD 499 -#define PLACING 500 -#define PLANS 501 -#define POSITION 502 -#define PRECISION 503 -#define PRESERVE 504 -#define PREPARE 505 -#define PREPARED 506 -#define PRIMARY 507 -#define PRIOR 508 -#define PRIVILEGES 509 -#define PROCEDURAL 510 -#define PROCEDURE 511 -#define QUOTE 512 -#define READ 513 -#define REAL 514 -#define REASSIGN 515 -#define RECHECK 516 -#define REFERENCES 517 -#define REINDEX 518 -#define RELATIVE_P 519 -#define RELEASE 520 -#define RENAME 521 -#define REPEATABLE 522 -#define REPLACE 523 -#define REPLICA 524 -#define RESET 525 -#define RESTART 526 -#define RESTRICT 527 -#define RETURNING 528 -#define RETURNS 529 -#define REVOKE 530 -#define RIGHT 531 -#define ROLE 532 -#define ROLLBACK 533 -#define ROW 534 -#define ROWS 535 -#define RULE 536 -#define SAVEPOINT 537 -#define SCHEMA 538 -#define SCROLL 539 -#define SEARCH 540 -#define SECOND_P 541 -#define SECURITY 542 -#define SELECT 543 -#define SEQUENCE 544 -#define SERIALIZABLE 545 -#define SESSION 546 -#define SESSION_USER 547 -#define SET 548 -#define SETOF 549 -#define SHARE 550 -#define SHOW 551 -#define SIMILAR 552 -#define SIMPLE 553 -#define SMALLINT 554 -#define SOME 555 -#define STABLE 556 -#define STANDALONE_P 557 -#define START 558 -#define STATEMENT 559 -#define STATISTICS 560 -#define STDIN 561 -#define STDOUT 562 -#define STORAGE 563 -#define STRICT_P 564 -#define STRIP_P 565 -#define SUBSTRING 566 -#define SUPERUSER_P 567 -#define SYMMETRIC 568 -#define SYSID 569 -#define SYSTEM_P 570 -#define TABLE 571 -#define TABLESPACE 572 -#define TEMP 573 -#define TEMPLATE 574 -#define TEMPORARY 575 -#define TEXT_P 576 -#define THEN 577 -#define TIME 578 -#define TIMESTAMP 579 -#define TO 580 -#define TRAILING 581 -#define TRANSACTION 582 -#define TREAT 583 -#define TRIGGER 584 -#define TRIM 585 -#define TRUE_P 586 -#define TRUNCATE 587 -#define TRUSTED 588 -#define TYPE_P 589 -#define UNCOMMITTED 590 -#define UNENCRYPTED 591 -#define UNION 592 -#define UNIQUE 593 -#define UNKNOWN 594 -#define UNLISTEN 595 -#define UNTIL 596 -#define UPDATE 597 -#define USER 598 -#define USING 599 -#define VACUUM 600 -#define VALID 601 -#define VALIDATOR 602 -#define VALUE_P 603 -#define VALUES 604 -#define VARCHAR 605 -#define VARYING 606 -#define VERBOSE 607 -#define VERSION_P 608 -#define VIEW 609 -#define VOLATILE 610 -#define WHEN 611 -#define WHERE 612 -#define WHITESPACE_P 613 -#define WITH 614 -#define WITHOUT 615 -#define WORK 616 -#define WRITE 617 -#define XML_P 618 -#define XMLATTRIBUTES 619 -#define XMLCONCAT 620 -#define XMLELEMENT 621 -#define XMLFOREST 622 -#define XMLPARSE 623 -#define XMLPI 624 -#define XMLROOT 625 -#define XMLSERIALIZE 626 -#define YEAR_P 627 -#define YES_P 628 -#define ZONE 629 -#define NULLS_FIRST 630 -#define NULLS_LAST 631 -#define WITH_CASCADED 632 -#define WITH_LOCAL 633 -#define WITH_CHECK 634 -#define IDENT 635 -#define FCONST 636 -#define SCONST 637 -#define BCONST 638 -#define XCONST 639 -#define Op 640 -#define ICONST 641 -#define PARAM 642 -#define POSTFIXOP 643 -#define UMINUS 644 -#define TYPECAST 645 +#define CATALOG_P 298 +#define CHAIN 299 +#define CHAR_P 300 +#define CHARACTER 301 +#define CHARACTERISTICS 302 +#define CHECK 303 +#define CHECKPOINT 304 +#define CLASS 305 +#define CLOSE 306 +#define CLUSTER 307 +#define COALESCE 308 +#define COLLATE 309 +#define COLUMN 310 +#define COMMENT 311 +#define COMMIT 312 +#define COMMITTED 313 +#define CONCURRENTLY 314 +#define CONFIGURATION 315 +#define CONNECTION 316 +#define CONSTRAINT 317 +#define CONSTRAINTS 318 +#define CONTENT_P 319 +#define CONTINUE_P 320 +#define CONVERSION_P 321 +#define COPY 322 +#define COST 323 +#define CREATE 324 +#define CREATEDB 325 +#define CREATEROLE 326 +#define CREATEUSER 327 +#define CROSS 328 +#define CSV 329 +#define CURRENT_P 330 +#define CURRENT_CATALOG 331 +#define CURRENT_DATE 332 +#define CURRENT_ROLE 333 +#define CURRENT_SCHEMA 334 +#define CURRENT_TIME 335 +#define CURRENT_TIMESTAMP 336 +#define CURRENT_USER 337 +#define CURSOR 338 +#define CYCLE 339 +#define DATA_P 340 +#define DATABASE 341 +#define DAY_P 342 +#define DEALLOCATE 343 +#define DEC 344 +#define DECIMAL_P 345 +#define DECLARE 346 +#define DEFAULT 347 +#define DEFAULTS 348 +#define DEFERRABLE 349 +#define DEFERRED 350 +#define DEFINER 351 +#define DELETE_P 352 +#define DELIMITER 353 +#define DELIMITERS 354 +#define DESC 355 +#define DICTIONARY 356 +#define DISABLE_P 357 +#define DISCARD 358 +#define DISTINCT 359 +#define DO 360 +#define DOCUMENT_P 361 +#define DOMAIN_P 362 +#define DOUBLE_P 363 +#define DROP 364 +#define EACH 365 +#define ELSE 366 +#define ENABLE_P 367 +#define ENCODING 368 +#define ENCRYPTED 369 +#define END_P 370 +#define ENUM_P 371 +#define ESCAPE 372 +#define EXCEPT 373 +#define EXCLUDING 374 +#define EXCLUSIVE 375 +#define EXECUTE 376 +#define EXISTS 377 +#define EXPLAIN 378 +#define EXTERNAL 379 +#define EXTRACT 380 +#define FALSE_P 381 +#define FAMILY 382 +#define FETCH 383 +#define FIRST_P 384 +#define FLOAT_P 385 +#define FOLLOWING 386 +#define FOR 387 +#define FORCE 388 +#define FOREIGN 389 +#define FORWARD 390 +#define FREEZE 391 +#define FROM 392 +#define FULL 393 +#define FUNCTION 394 +#define GLOBAL 395 +#define GRANT 396 +#define GRANTED 397 +#define GREATEST 398 +#define GROUP_P 399 +#define HANDLER 400 +#define HAVING 401 +#define HEADER_P 402 +#define HOLD 403 +#define HOUR_P 404 +#define IDENTITY_P 405 +#define IF_P 406 +#define ILIKE 407 +#define IMMEDIATE 408 +#define IMMUTABLE 409 +#define IMPLICIT_P 410 +#define IN_P 411 +#define INCLUDING 412 +#define INCREMENT 413 +#define INDEX 414 +#define INDEXES 415 +#define INHERIT 416 +#define INHERITS 417 +#define INITIALLY 418 +#define INNER_P 419 +#define INOUT 420 +#define INPUT_P 421 +#define INSENSITIVE 422 +#define INSERT 423 +#define INSTEAD 424 +#define INT_P 425 +#define INTEGER 426 +#define INTERSECT 427 +#define INTERVAL 428 +#define INTO 429 +#define INVOKER 430 +#define IS 431 +#define ISNULL 432 +#define ISOLATION 433 +#define JOIN 434 +#define KEY 435 +#define LANCOMPILER 436 +#define LANGUAGE 437 +#define LARGE_P 438 +#define LAST_P 439 +#define LC_COLLATE_P 440 +#define LC_CTYPE_P 441 +#define LEADING 442 +#define LEAST 443 +#define LEFT 444 +#define LEVEL 445 +#define LIKE 446 +#define LIMIT 447 +#define LISTEN 448 +#define LOAD 449 +#define LOCAL 450 +#define LOCALTIME 451 +#define LOCALTIMESTAMP 452 +#define LOCATION 453 +#define LOCK_P 454 +#define LOGIN_P 455 +#define MAPPING 456 +#define MATCH 457 +#define MAXVALUE 458 +#define MINUTE_P 459 +#define MINVALUE 460 +#define MODE 461 +#define MONTH_P 462 +#define MOVE 463 +#define NAME_P 464 +#define NAMES 465 +#define NATIONAL 466 +#define NATURAL 467 +#define NCHAR 468 +#define NEW 469 +#define NEXT 470 +#define NO 471 +#define NOCREATEDB 472 +#define NOCREATEROLE 473 +#define NOCREATEUSER 474 +#define NOINHERIT 475 +#define NOLOGIN_P 476 +#define NONE 477 +#define NOSUPERUSER 478 +#define NOT 479 +#define NOTHING 480 +#define NOTIFY 481 +#define NOTNULL 482 +#define NOWAIT 483 +#define NULL_P 484 +#define NULLIF 485 +#define NULLS_P 486 +#define NUMERIC 487 +#define OBJECT_P 488 +#define OF 489 +#define OFF 490 +#define OFFSET 491 +#define OIDS 492 +#define OLD 493 +#define ON 494 +#define ONLY 495 +#define OPERATOR 496 +#define OPTION 497 +#define OPTIONS 498 +#define OR 499 +#define ORDER 500 +#define OUT_P 501 +#define OUTER_P 502 +#define OVER 503 +#define OVERLAPS 504 +#define OVERLAY 505 +#define OWNED 506 +#define OWNER 507 +#define PARSER 508 +#define PARTIAL 509 +#define PARTITION 510 +#define PASSWORD 511 +#define PLACING 512 +#define PLANS 513 +#define POSITION 514 +#define PRECEDING 515 +#define PRECISION 516 +#define PRESERVE 517 +#define PREPARE 518 +#define PREPARED 519 +#define PRIMARY 520 +#define PRIOR 521 +#define PRIVILEGES 522 +#define PROCEDURAL 523 +#define PROCEDURE 524 +#define QUOTE 525 +#define RANGE 526 +#define READ 527 +#define REAL 528 +#define REASSIGN 529 +#define RECHECK 530 +#define RECURSIVE 531 +#define REFERENCES 532 +#define REINDEX 533 +#define RELATIVE_P 534 +#define RELEASE 535 +#define RENAME 536 +#define REPEATABLE 537 +#define REPLACE 538 +#define REPLICA 539 +#define RESET 540 +#define RESTART 541 +#define RESTRICT 542 +#define RETURNING 543 +#define RETURNS 544 +#define REVOKE 545 +#define RIGHT 546 +#define ROLE 547 +#define ROLLBACK 548 +#define ROW 549 +#define ROWS 550 +#define RULE 551 +#define SAVEPOINT 552 +#define SCHEMA 553 +#define SCROLL 554 +#define SEARCH 555 +#define SECOND_P 556 +#define SECURITY 557 +#define SELECT 558 +#define SEQUENCE 559 +#define SERIALIZABLE 560 +#define SERVER 561 +#define SESSION 562 +#define SESSION_USER 563 +#define SET 564 +#define SETOF 565 +#define SHARE 566 +#define SHOW 567 +#define SIMILAR 568 +#define SIMPLE 569 +#define SMALLINT 570 +#define SOME 571 +#define STABLE 572 +#define STANDALONE_P 573 +#define START 574 +#define STATEMENT 575 +#define STATISTICS 576 +#define STDIN 577 +#define STDOUT 578 +#define STORAGE 579 +#define STRICT_P 580 +#define STRIP_P 581 +#define SUBSTRING 582 +#define SUPERUSER_P 583 +#define SYMMETRIC 584 +#define SYSID 585 +#define SYSTEM_P 586 +#define TABLE 587 +#define TABLESPACE 588 +#define TEMP 589 +#define TEMPLATE 590 +#define TEMPORARY 591 +#define TEXT_P 592 +#define THEN 593 +#define TIME 594 +#define TIMESTAMP 595 +#define TO 596 +#define TRAILING 597 +#define TRANSACTION 598 +#define TREAT 599 +#define TRIGGER 600 +#define TRIM 601 +#define TRUE_P 602 +#define TRUNCATE 603 +#define TRUSTED 604 +#define TYPE_P 605 +#define UNBOUNDED 606 +#define UNCOMMITTED 607 +#define UNENCRYPTED 608 +#define UNION 609 +#define UNIQUE 610 +#define UNKNOWN 611 +#define UNLISTEN 612 +#define UNTIL 613 +#define UPDATE 614 +#define USER 615 +#define USING 616 +#define VACUUM 617 +#define VALID 618 +#define VALIDATOR 619 +#define VALUE_P 620 +#define VALUES 621 +#define VARCHAR 622 +#define VARIADIC 623 +#define VARYING 624 +#define VERBOSE 625 +#define VERSION_P 626 +#define VIEW 627 +#define VOLATILE 628 +#define WHEN 629 +#define WHERE 630 +#define WHITESPACE_P 631 +#define WINDOW 632 +#define WITH 633 +#define WITHOUT 634 +#define WORK 635 +#define WRAPPER 636 +#define WRITE 637 +#define XML_P 638 +#define XMLATTRIBUTES 639 +#define XMLCONCAT 640 +#define XMLELEMENT 641 +#define XMLFOREST 642 +#define XMLPARSE 643 +#define XMLPI 644 +#define XMLROOT 645 +#define XMLSERIALIZE 646 +#define YEAR_P 647 +#define YES_P 648 +#define ZONE 649 +#define NULLS_FIRST 650 +#define NULLS_LAST 651 +#define WITH_TIME 652 +#define IDENT 653 +#define FCONST 654 +#define SCONST 655 +#define BCONST 656 +#define XCONST 657 +#define Op 658 +#define ICONST 659 +#define PARAM 660 +#define POSTFIXOP 661 +#define UMINUS 662 +#define TYPECAST 663 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 146 "gram.y" +#line 162 "gram.y" typedef union YYSTYPE { int ival; char chr; @@ -834,20 +870,23 @@ typedef union YYSTYPE { FuncWithArgs *funwithargs; DefElem *defelt; SortBy *sortby; + WindowDef *windef; JoinExpr *jexpr; IndexElem *ielem; Alias *alias; RangeVar *range; IntoClause *into; + WithClause *with; A_Indices *aind; ResTarget *target; - PrivTarget *privtarget; + struct PrivTarget *privtarget; + AccessPriv *accesspriv; InsertStmt *istmt; VariableSetStmt *vsetstmt; } YYSTYPE; /* Line 1447 of yacc.c. */ -#line 851 "gram.h" +#line 890 "gram.h" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 diff --git a/parser/gram.y b/parser/gram.y index df4490344..473d99e54 100644 --- a/parser/gram.y +++ b/parser/gram.y @@ -6,13 +6,13 @@ * gram.y * POSTGRES SQL YACC rules/actions * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.603 2007/09/24 01:29:28 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.662 2009/04/06 08:42:52 heikki Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -108,6 +108,13 @@ extern TypeName *SystemTypeName(char *name); extern List *SystemFuncName(char *name); extern void yyerror(const char *s); +/* Private struct for the result of privilege_target production */ +typedef struct PrivTarget +{ + GrantObjectType objtype; + List *objs; +} PrivTarget; + /* * If you need access to certain yacc-generated variables and find that * they're static by default, uncomment the next line. (this is not a @@ -115,30 +122,39 @@ extern void yyerror(const char *s); */ /*#define __YYSCLASS*/ -static Node *makeColumnRef(char *relname, List *indirection, int location); -static Node *makeTypeCast(Node *arg, TypeName *typename); -static Node *makeStringConst(char *str, TypeName *typename); -static Node *makeIntConst(int val); -static Node *makeFloatConst(char *str); -static Node *makeAConst(Value *v); -static A_Const *makeBoolAConst(bool state); +static Node *makeColumnRef(char *colname, List *indirection, int location); +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 FuncCall *makeOverlaps(List *largs, List *rargs, int location); static void check_qualified_name(List *names); static List *check_func_name(List *names); +static List *check_indirection(List *indirection); static List *extractArgTypes(List *parameters); static SelectStmt *findLeftmostSelect(SelectStmt *node); static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, - Node *limitOffset, Node *limitCount); + Node *limitOffset, Node *limitCount, + WithClause *withClause); static Node *makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg); static Node *doNegate(Node *n, int location); static void doNegateFloat(Value *v); -static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args); +static Node *makeAArrayExpr(List *elements, int location); +static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, + List *args, int location); +static List *mergeTableFuncParameters(List *func_args, List *columns); +static TypeName *TableFuncTypeName(List *columns); static DefElem *defWithOids(bool value); - %} +%expect 0 %name-prefix="base_yy" %locations @@ -163,33 +179,39 @@ static DefElem *defWithOids(bool value); FuncWithArgs *funwithargs; DefElem *defelt; SortBy *sortby; + WindowDef *windef; JoinExpr *jexpr; IndexElem *ielem; Alias *alias; RangeVar *range; IntoClause *into; + WithClause *with; A_Indices *aind; ResTarget *target; - PrivTarget *privtarget; + struct PrivTarget *privtarget; + AccessPriv *accesspriv; InsertStmt *istmt; VariableSetStmt *vsetstmt; } %type <node> stmt schema_stmt - AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterGroupStmt + AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterFdwStmt + AlterForeignServerStmt AlterGroupStmt AlterObjectSchemaStmt AlterOwnerStmt AlterSeqStmt AlterTableStmt - AlterUserStmt AlterUserSetStmt AlterRoleStmt AlterRoleSetStmt + AlterUserStmt AlterUserMappingStmt AlterUserSetStmt AlterRoleStmt AlterRoleSetStmt AnalyzeStmt ClosePortalStmt ClusterStmt CommentStmt ConstraintsSetStmt CopyStmt CreateAsStmt CreateCastStmt CreateDomainStmt CreateGroupStmt CreateOpClassStmt CreateOpFamilyStmt AlterOpFamilyStmt CreatePLangStmt CreateSchemaStmt CreateSeqStmt CreateStmt CreateTableSpaceStmt - CreateAssertStmt CreateTrigStmt CreateUserStmt CreateRoleStmt + CreateFdwStmt CreateForeignServerStmt CreateAssertStmt CreateTrigStmt + CreateUserStmt CreateUserMappingStmt CreateRoleStmt CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt DropGroupStmt DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt DropAssertStmt DropTrigStmt DropRuleStmt DropCastStmt DropRoleStmt - DropUserStmt DropdbStmt DropTableSpaceStmt ExplainStmt FetchStmt + DropUserStmt DropdbStmt DropTableSpaceStmt DropFdwStmt + DropForeignServerStmt DropUserMappingStmt ExplainStmt FetchStmt GrantStmt GrantRoleStmt IndexStmt InsertStmt ListenStmt LoadStmt LockStmt NotifyStmt ExplainableStmt PreparableStmt CreateFunctionStmt AlterFunctionStmt ReindexStmt RemoveAggrStmt @@ -209,8 +231,8 @@ static DefElem *defWithOids(bool value); %type <node> alter_column_default opclass_item opclass_drop alter_using %type <ival> add_drop opt_asc_desc opt_nulls_order -%type <node> alter_table_cmd alter_rel_cmd -%type <list> alter_table_cmds alter_rel_cmds +%type <node> alter_table_cmd +%type <list> alter_table_cmds %type <dbehavior> opt_drop_behavior @@ -222,18 +244,22 @@ static DefElem *defWithOids(bool value); %type <ival> opt_lock lock_type cast_context %type <boolean> opt_force opt_or_replace opt_grant_grant_option opt_grant_admin_option - opt_nowait opt_if_exists + opt_nowait opt_if_exists opt_with_data %type <list> OptRoleList %type <defelt> OptRoleElem +%type <str> opt_type +%type <str> foreign_server_version opt_foreign_server_version +%type <str> auth_ident + %type <str> OptSchemaName %type <list> OptSchemaEltList -%type <boolean> TriggerActionTime TriggerForSpec opt_trusted +%type <boolean> TriggerActionTime TriggerForSpec opt_trusted opt_restart_seqs %type <str> opt_lancompiler -%type <str> TriggerEvents +%type <ival> TriggerEvents TriggerOneEvent %type <value> TriggerFuncArg %type <str> relation_name copy_file_name @@ -241,7 +267,7 @@ static DefElem *defWithOids(bool value); index_name name file_name cluster_index_specification %type <list> func_name handler_name qual_Op qual_all_Op subquery_Op - opt_class opt_validator + opt_class opt_validator validator_clause %type <range> qualified_name OptConstrFromTable @@ -250,16 +276,17 @@ static DefElem *defWithOids(bool value); %type <str> iso_level opt_encoding %type <node> grantee %type <list> grantee_list -%type <str> privilege +%type <accesspriv> privilege %type <list> privileges privilege_list %type <privtarget> privilege_target %type <funwithargs> function_with_argtypes %type <list> function_with_argtypes_list -%type <chr> TriggerOneEvent %type <list> stmtblock stmtmulti OptTableElementList TableElementList OptInherit definition + reloptions opt_reloptions OptWith opt_distinct opt_definition func_args func_args_list + func_args_with_defaults func_args_with_defaults_list func_as createfunc_opt_list alterfunc_opt_list aggr_args old_aggr_definition old_aggr_list oper_argtypes RuleActionList RuleActionMulti @@ -271,19 +298,21 @@ static DefElem *defWithOids(bool value); target_list insert_column_list set_target_list set_clause_list set_clause multiple_set_clause ctext_expr_list ctext_row def_list indirection opt_indirection - group_clause TriggerFuncArgs select_limit + reloption_list group_clause TriggerFuncArgs select_limit opt_select_limit opclass_item_list opclass_drop_list opt_opfamily transaction_mode_list_or_empty TableFuncElementList opt_type_modifiers prep_type_clause execute_param_clause using_clause returning_clause - enum_val_list + enum_val_list table_func_column_list + create_generic_options alter_generic_options + relation_expr_list %type <range> OptTempTableName %type <into> into_clause create_as_target %type <defelt> createfunc_opt_item common_func_opt_item -%type <fun_param> func_arg +%type <fun_param> func_arg func_arg_with_default table_func_column %type <fun_param_mode> arg_class %type <typnam> func_return func_type @@ -300,7 +329,7 @@ static DefElem *defWithOids(bool value); %type <list> extract_list overlay_list position_list %type <list> substr_list trim_list -%type <ival> opt_interval +%type <list> opt_interval interval_second %type <node> overlay_placing substr_from substr_for %type <boolean> opt_instead opt_analyze @@ -310,13 +339,15 @@ static DefElem *defWithOids(bool value); %type <boolean> copy_from -%type <ival> opt_column event cursor_options opt_hold +%type <ival> opt_column event cursor_options opt_hold opt_set_data %type <objtype> reindex_type drop_type comment_type %type <node> fetch_direction select_limit_value select_offset_value + select_offset_value2 opt_select_fetch_first_value +%type <ival> row_or_rows first_or_next -%type <list> OptSeqList -%type <defelt> OptSeqElem +%type <list> OptSeqOptList SeqOptList +%type <defelt> SeqOptElem %type <istmt> insert_rest @@ -324,7 +355,7 @@ static DefElem *defWithOids(bool value); %type <node> TableElement ConstraintElem TableFuncElement %type <node> columnDef -%type <defelt> def_elem old_aggr_elem +%type <defelt> def_elem reloption_elem old_aggr_elem %type <node> def_arg columnElem where_clause where_or_current_clause a_expr b_expr c_expr func_expr AexprConst indirection_el columnref in_expr having_clause func_table array_expr @@ -334,7 +365,7 @@ static DefElem *defWithOids(bool value); %type <ival> sub_type %type <list> OptCreateAs CreateAsList %type <node> CreateAsElement ctext_expr -%type <value> NumericOnly FloatOnly IntegerOnly +%type <value> NumericOnly %type <alias> alias_clause %type <sortby> sortby %type <ielem> index_elem @@ -344,6 +375,11 @@ static DefElem *defWithOids(bool value); %type <range> relation_expr_opt_alias %type <target> target_el single_set_clause set_target insert_column_item +%type <str> generic_option_name +%type <node> generic_option_arg +%type <defelt> generic_option_elem alter_generic_option_elem +%type <list> generic_option_list alter_generic_option_list + %type <typnam> Typename SimpleTypename ConstTypename GenericType Numeric opt_float Character ConstCharacter @@ -385,10 +421,19 @@ static DefElem *defWithOids(bool value); %type <ival> document_or_content %type <boolean> xml_whitespace_option +%type <node> common_table_expr +%type <with> with_clause +%type <list> cte_list + +%type <list> window_clause window_definition_list opt_partition_clause +%type <windef> window_definition over_clause window_specification +%type <str> opt_existing_window_name +%type <ival> opt_frame_clause frame_extent frame_bound + /* * If you make any token changes, update the keyword table in - * parser/keywords.c and add new keywords to the appropriate one of + * src/include/parser/kwlist.h and add new keywords to the appropriate one of * the reserved-or-not-so-reserved keyword lists, below; search * this file for "Name classification hierarchy". */ @@ -401,40 +446,41 @@ static DefElem *defWithOids(bool value); BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT BOOLEAN_P BOTH BY - CACHE CALLED CASCADE CASCADED CASE CAST CHAIN CHAR_P + CACHE CALLED CASCADE CASCADED CASE CAST CATALOG_P CHAIN CHAR_P CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE CLUSTER COALESCE COLLATE COLUMN COMMENT COMMIT COMMITTED CONCURRENTLY CONFIGURATION CONNECTION CONSTRAINT CONSTRAINTS - CONTENT_P CONVERSION_P COPY COST CREATE CREATEDB - CREATEROLE CREATEUSER CROSS CSV CURRENT_P CURRENT_DATE CURRENT_ROLE + CONTENT_P CONTINUE_P CONVERSION_P COPY COST CREATE CREATEDB + CREATEROLE CREATEUSER CROSS CSV CURRENT_P + CURRENT_CATALOG CURRENT_DATE CURRENT_ROLE CURRENT_SCHEMA CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE - DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS + DATA_P DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS 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 EXCEPT EXCLUDING - EXCLUSIVE EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT + EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ENUM_P ESCAPE EXCEPT + EXCLUDING EXCLUSIVE EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT - FALSE_P FAMILY FETCH FIRST_P FLOAT_P FOR FORCE FOREIGN FORWARD + FALSE_P FAMILY FETCH FIRST_P FLOAT_P FOLLOWING FOR FORCE FOREIGN FORWARD FREEZE FROM FULL FUNCTION GLOBAL GRANT GRANTED GREATEST GROUP_P HANDLER HAVING HEADER_P HOLD HOUR_P - IF_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P INCLUDING INCREMENT - INDEX INDEXES INHERIT INHERITS INITIALLY INNER_P INOUT INPUT_P - INSENSITIVE INSERT INSTEAD INT_P INTEGER INTERSECT - INTERVAL INTO INVOKER IS ISNULL ISOLATION + IDENTITY_P IF_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P + INCLUDING INCREMENT INDEX INDEXES INHERIT INHERITS INITIALLY + INNER_P INOUT INPUT_P INSENSITIVE INSERT INSTEAD INT_P INTEGER + INTERSECT INTERVAL INTO INVOKER IS ISNULL ISOLATION JOIN KEY - LANCOMPILER LANGUAGE LARGE_P LAST_P LEADING LEAST LEFT LEVEL - LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION - LOCK_P LOGIN_P + LANCOMPILER LANGUAGE LARGE_P LAST_P LC_COLLATE_P LC_CTYPE_P LEADING + LEAST LEFT LEVEL LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP + LOCATION LOCK_P LOGIN_P MAPPING MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE @@ -442,21 +488,21 @@ static DefElem *defWithOids(bool value); NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOSUPERUSER NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMERIC - OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR - ORDER OUT_P OUTER_P OVERLAPS OVERLAY OWNED OWNER + OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OPTIONS OR + ORDER OUT_P OUTER_P OVER OVERLAPS OVERLAY OWNED OWNER - PARSER PARTIAL PASSWORD PLACING PLANS POSITION - PRECISION PRESERVE PREPARE PREPARED PRIMARY + PARSER PARTIAL PARTITION PASSWORD PLACING PLANS POSITION + PRECEDING PRECISION PRESERVE PREPARE PREPARED PRIMARY PRIOR PRIVILEGES PROCEDURAL PROCEDURE QUOTE - READ REAL REASSIGN RECHECK REFERENCES REINDEX RELATIVE_P RELEASE RENAME - REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE - RIGHT ROLE ROLLBACK ROW ROWS RULE + RANGE READ REAL REASSIGN RECHECK RECURSIVE REFERENCES REINDEX + RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA RESET RESTART + RESTRICT RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK ROW ROWS RULE SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE - SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE + SERIALIZABLE SERVER SESSION SESSION_USER SET SETOF SHARE SHOW SIMILAR SIMPLE SMALLINT SOME STABLE STANDALONE_P START STATEMENT STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING SUPERUSER_P SYMMETRIC SYSID SYSTEM_P @@ -465,13 +511,13 @@ static DefElem *defWithOids(bool value); TO TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P TRUNCATE TRUSTED TYPE_P - UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNTIL + UNBOUNDED UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNTIL UPDATE USER USING - VACUUM VALID VALIDATOR VALUE_P VALUES VARCHAR VARYING + VACUUM VALID VALIDATOR VALUE_P VALUES VARCHAR VARIADIC VARYING VERBOSE VERSION_P VIEW VOLATILE - WHEN WHERE WHITESPACE_P WITH WITHOUT WORK WRITE + WHEN WHERE WHITESPACE_P WINDOW WITH WITHOUT WORK WRAPPER WRITE XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLFOREST XMLPARSE XMLPI XMLROOT XMLSERIALIZE @@ -480,11 +526,11 @@ static DefElem *defWithOids(bool value); ZONE -/* The grammar thinks these are keywords, but they are not in the keywords.c +/* The grammar thinks these are keywords, but they are not in the kwlist.h * list and so can never be entered directly. The filter in parser.c * creates these tokens when required. */ -%token NULLS_FIRST NULLS_LAST WITH_CASCADED WITH_LOCAL WITH_CHECK +%token NULLS_FIRST NULLS_LAST WITH_TIME /* Special token types, not actually keywords - see the "lex" file */ %token <str> IDENT FCONST SCONST BCONST XCONST Op @@ -505,6 +551,17 @@ static DefElem *defWithOids(bool value); %nonassoc BETWEEN %nonassoc IN_P %left POSTFIXOP /* dummy for postfix Op rules */ +/* + * To support target_el without AS, we must give IDENT an explicit priority + * between POSTFIXOP and Op. We can safely assign the same priority to + * various unreserved keywords as needed to resolve ambiguities (this can't + * have any bad effects since obviously the keywords will still behave the + * 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. + */ +%nonassoc IDENT PARTITION RANGE ROWS %left Op OPERATOR /* multi-character ops and user-defined operators */ %nonassoc NOTNULL %nonassoc ISNULL @@ -558,6 +615,8 @@ stmt : AlterDatabaseStmt | AlterDatabaseSetStmt | AlterDomainStmt + | AlterFdwStmt + | AlterForeignServerStmt | AlterFunctionStmt | AlterGroupStmt | AlterObjectSchemaStmt @@ -568,6 +627,7 @@ stmt : | AlterRoleStmt | AlterTSConfigurationStmt | AlterTSDictionaryStmt + | AlterUserMappingStmt | AlterUserSetStmt | AlterUserStmt | AnalyzeStmt @@ -582,6 +642,8 @@ stmt : | CreateCastStmt | CreateConversionStmt | CreateDomainStmt + | CreateFdwStmt + | CreateForeignServerStmt | CreateFunctionStmt | CreateGroupStmt | CreateOpClassStmt @@ -595,6 +657,7 @@ stmt : | CreateTrigStmt | CreateRoleStmt | CreateUserStmt + | CreateUserMappingStmt | CreatedbStmt | DeallocateStmt | DeclareCursorStmt @@ -603,6 +666,8 @@ stmt : | DiscardStmt | DropAssertStmt | DropCastStmt + | DropFdwStmt + | DropForeignServerStmt | DropGroupStmt | DropOpClassStmt | DropOpFamilyStmt @@ -614,6 +679,7 @@ stmt : | DropTrigStmt | DropRoleStmt | DropUserStmt + | DropUserMappingStmt | DropdbStmt | ExecuteStmt | ExplainStmt @@ -1132,13 +1198,29 @@ set_rest: /* Generic SET syntaxes: */ n->args = $5; $$ = n; } + | CATALOG_P Sconst + { + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("current database cannot be changed"), + scanner_errposition(@2))); + $$ = NULL; /*not reached*/ + } + | SCHEMA Sconst + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "search_path"; + n->args = list_make1(makeStringConst($2, @2)); + $$ = n; + } | NAMES opt_encoding { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "client_encoding"; if ($2 != NULL) - n->args = list_make1(makeStringConst($2, NULL)); + n->args = list_make1(makeStringConst($2, @2)); else n->kind = VAR_SET_DEFAULT; $$ = n; @@ -1148,7 +1230,7 @@ set_rest: /* Generic SET syntaxes: */ VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "role"; - n->args = list_make1(makeStringConst($2, NULL)); + n->args = list_make1(makeStringConst($2, @2)); $$ = n; } | SESSION AUTHORIZATION ColId_or_Sconst @@ -1156,7 +1238,7 @@ set_rest: /* Generic SET syntaxes: */ VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; - n->args = list_make1(makeStringConst($3, NULL)); + n->args = list_make1(makeStringConst($3, @3)); $$ = n; } | SESSION AUTHORIZATION DEFAULT @@ -1171,7 +1253,7 @@ set_rest: /* Generic SET syntaxes: */ VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "xmloption"; - n->args = list_make1(makeStringConst($3 == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", NULL)); + n->args = list_make1(makeStringConst($3 == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", @3)); $$ = n; } ; @@ -1189,11 +1271,11 @@ var_list: var_value { $$ = list_make1($1); } ; var_value: opt_boolean - { $$ = makeStringConst($1, NULL); } + { $$ = makeStringConst($1, @1); } | ColId_or_Sconst - { $$ = makeStringConst($1, NULL); } + { $$ = makeStringConst($1, @1); } | NumericOnly - { $$ = makeAConst($1); } + { $$ = makeAConst($1, @1); } ; iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } @@ -1215,43 +1297,56 @@ opt_boolean: * - an integer or floating point number * - a time interval per SQL99 * ColId gives reduce/reduce errors against ConstInterval and LOCAL, - * so use IDENT and reject anything which is a reserved word. + * so use IDENT (meaning we reject anything that is a key word). */ zone_value: Sconst { - $$ = makeStringConst($1, NULL); + $$ = makeStringConst($1, @1); } | IDENT { - $$ = makeStringConst($1, NULL); + $$ = makeStringConst($1, @1); } | ConstInterval Sconst opt_interval { - A_Const *n = (A_Const *) makeStringConst($2, $1); - if ($3 != INTERVAL_FULL_RANGE) + TypeName *t = $1; + if ($3 != NIL) { - if (($3 & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) + A_Const *n = (A_Const *) linitial($3); + 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"))); - n->typename->typmods = list_make1(makeIntConst($3)); + errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), + scanner_errposition(@3))); } - $$ = (Node *)n; + t->typmods = $3; + $$ = makeStringConstCast($2, @2, t); } | ConstInterval '(' Iconst ')' Sconst opt_interval { - A_Const *n = (A_Const *) makeStringConst($5, $1); - if (($6 != INTERVAL_FULL_RANGE) - && (($6 & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0)) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("time zone interval must be HOUR or HOUR TO MINUTE"))); - n->typename->typmods = list_make2(makeIntConst($6), - makeIntConst($3)); - $$ = (Node *)n; + TypeName *t = $1; + if ($6 != NIL) + { + A_Const *n = (A_Const *) linitial($6); + 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"), + scanner_errposition(@6))); + if (list_length($6) != 1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("interval precision specified twice"), + scanner_errposition(@1))); + t->typmods = lappend($6, makeIntConst($3, @3)); + } + else + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst($3, @3)); + $$ = makeStringConstCast($5, @5, t); } - | NumericOnly { $$ = makeAConst($1); } + | NumericOnly { $$ = makeAConst($1, @1); } | DEFAULT { $$ = NULL; } | LOCAL { $$ = NULL; } ; @@ -1264,7 +1359,7 @@ opt_encoding: ColId_or_Sconst: ColId { $$ = $1; } - | SCONST { $$ = $1; } + | Sconst { $$ = $1; } ; VariableResetStmt: @@ -1414,8 +1509,10 @@ DiscardStmt: /***************************************************************************** * - * ALTER [ TABLE | INDEX ] variations + * ALTER [ TABLE | INDEX | SEQUENCE | VIEW ] variations * + * Note: we accept all subcommands for each of the four variants, and sort + * out what's really legal at execution time. *****************************************************************************/ AlterTableStmt: @@ -1427,7 +1524,7 @@ AlterTableStmt: n->relkind = OBJECT_TABLE; $$ = (Node *)n; } - | ALTER INDEX relation_expr alter_rel_cmds + | ALTER INDEX qualified_name alter_table_cmds { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = $3; @@ -1435,6 +1532,22 @@ AlterTableStmt: n->relkind = OBJECT_INDEX; $$ = (Node *)n; } + | ALTER SEQUENCE qualified_name alter_table_cmds + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = $3; + n->cmds = $4; + n->relkind = OBJECT_SEQUENCE; + $$ = (Node *)n; + } + | ALTER VIEW qualified_name alter_table_cmds + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = $3; + n->cmds = $4; + n->relkind = OBJECT_VIEW; + $$ = (Node *)n; + } ; alter_table_cmds: @@ -1442,9 +1555,8 @@ alter_table_cmds: | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } ; -/* Subcommands that are for ALTER TABLE only */ alter_table_cmd: - /* ALTER TABLE <relation> ADD [COLUMN] <coldef> */ + /* ALTER TABLE <name> ADD [COLUMN] <coldef> */ ADD_P opt_column columnDef { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1452,7 +1564,7 @@ alter_table_cmd: n->def = $3; $$ = (Node *)n; } - /* ALTER TABLE <relation> ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT} */ + /* ALTER TABLE <name> ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT} */ | ALTER opt_column ColId alter_column_default { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1461,7 +1573,7 @@ alter_table_cmd: n->def = $4; $$ = (Node *)n; } - /* ALTER TABLE <relation> ALTER [COLUMN] <colname> DROP NOT NULL */ + /* ALTER TABLE <name> ALTER [COLUMN] <colname> DROP NOT NULL */ | ALTER opt_column ColId DROP NOT NULL_P { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1469,7 +1581,7 @@ alter_table_cmd: n->name = $3; $$ = (Node *)n; } - /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET NOT NULL */ + /* ALTER TABLE <name> ALTER [COLUMN] <colname> SET NOT NULL */ | ALTER opt_column ColId SET NOT NULL_P { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1477,16 +1589,16 @@ alter_table_cmd: n->name = $3; $$ = (Node *)n; } - /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STATISTICS <IntegerOnly> */ - | ALTER opt_column ColId SET STATISTICS IntegerOnly + /* ALTER TABLE <name> ALTER [COLUMN] <colname> SET STATISTICS <SignedIconst> */ + | ALTER opt_column ColId SET STATISTICS SignedIconst { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; n->name = $3; - n->def = (Node *) $6; + n->def = (Node *) makeInteger($6); $$ = (Node *)n; } - /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */ + /* ALTER TABLE <name> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */ | ALTER opt_column ColId SET STORAGE ColId { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1495,7 +1607,7 @@ alter_table_cmd: n->def = (Node *) makeString($6); $$ = (Node *)n; } - /* ALTER TABLE <relation> DROP [COLUMN] <colname> [RESTRICT|CASCADE] */ + /* ALTER TABLE <name> DROP [COLUMN] <colname> [RESTRICT|CASCADE] */ | DROP opt_column ColId opt_drop_behavior { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1505,19 +1617,19 @@ alter_table_cmd: $$ = (Node *)n; } /* - * ALTER TABLE <relation> ALTER [COLUMN] <colname> TYPE <typename> + * ALTER TABLE <name> ALTER [COLUMN] <colname> [SET DATA] TYPE <typename> * [ USING <expression> ] */ - | ALTER opt_column ColId TYPE_P Typename alter_using + | ALTER opt_column ColId opt_set_data TYPE_P Typename alter_using { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AlterColumnType; n->name = $3; - n->def = (Node *) $5; - n->transform = $6; + n->def = (Node *) $6; + n->transform = $7; $$ = (Node *)n; } - /* ALTER TABLE <relation> ADD CONSTRAINT ... */ + /* ALTER TABLE <name> ADD CONSTRAINT ... */ | ADD_P TableConstraint { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1525,7 +1637,7 @@ alter_table_cmd: n->def = $2; $$ = (Node *)n; } - /* ALTER TABLE <relation> DROP CONSTRAINT <name> [RESTRICT|CASCADE] */ + /* ALTER TABLE <name> DROP CONSTRAINT <name> [RESTRICT|CASCADE] */ | DROP CONSTRAINT name opt_drop_behavior { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1534,7 +1646,14 @@ alter_table_cmd: n->behavior = $4; $$ = (Node *)n; } - /* ALTER TABLE <relation> SET WITHOUT OIDS */ + /* ALTER TABLE <name> SET WITH OIDS */ + | SET WITH OIDS + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_AddOids; + $$ = (Node *)n; + } + /* ALTER TABLE <name> SET WITHOUT OIDS */ | SET WITHOUT OIDS { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1665,28 +1784,15 @@ alter_table_cmd: n->def = (Node *) $3; $$ = (Node *)n; } - | alter_rel_cmd - { - $$ = $1; - } - ; - -alter_rel_cmds: - alter_rel_cmd { $$ = list_make1($1); } - | alter_rel_cmds ',' alter_rel_cmd { $$ = lappend($1, $3); } - ; - -/* Subcommands that are for ALTER TABLE or ALTER INDEX */ -alter_rel_cmd: - /* ALTER [TABLE|INDEX] <name> OWNER TO RoleId */ - OWNER TO RoleId + /* ALTER TABLE <name> OWNER TO RoleId */ + | OWNER TO RoleId { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; n->name = $3; $$ = (Node *)n; } - /* ALTER [TABLE|INDEX] <name> SET TABLESPACE <tablespacename> */ + /* ALTER TABLE <name> SET TABLESPACE <tablespacename> */ | SET TABLESPACE name { AlterTableCmd *n = makeNode(AlterTableCmd); @@ -1694,16 +1800,16 @@ alter_rel_cmd: n->name = $3; $$ = (Node *)n; } - /* ALTER [TABLE|INDEX] <name> SET (...) */ - | SET definition + /* ALTER TABLE <name> SET (...) */ + | SET reloptions { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; n->def = (Node *)$2; $$ = (Node *)n; } - /* ALTER [TABLE|INDEX] <name> RESET (...) */ - | RESET definition + /* ALTER TABLE <name> RESET (...) */ + | RESET reloptions { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; @@ -1735,6 +1841,39 @@ alter_using: | /* EMPTY */ { $$ = NULL; } ; +reloptions: + '(' reloption_list ')' { $$ = $2; } + ; + +opt_reloptions: WITH reloptions { $$ = $2; } + | /* EMPTY */ { $$ = NIL; } + ; + +reloption_list: + reloption_elem { $$ = list_make1($1); } + | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } + ; + +/* This should match def_elem and also allow qualified names */ +reloption_elem: + ColLabel '=' def_arg + { + $$ = makeDefElem($1, (Node *) $3); + } + | ColLabel + { + $$ = makeDefElem($1, NULL); + } + | ColLabel '.' ColLabel '=' def_arg + { + $$ = makeDefElemExtended($1, $3, (Node *) $5, + DEFELEM_UNSPEC); + } + | ColLabel '.' ColLabel + { + $$ = makeDefElemExtended($1, $3, NULL, DEFELEM_UNSPEC); + } + ; /***************************************************************************** @@ -2184,7 +2323,7 @@ ConstraintAttr: * tables completely decoupled except for the original commonality in definitions. * * This is very similar to CREATE TABLE AS except for the INCLUDING DEFAULTS extension - * which is a part of SQL 200N + * which is a part of SQL:2003. */ TableLikeClause: LIKE qualified_name TableLikeOptionList @@ -2316,7 +2455,8 @@ key_match: MATCH FULL { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("MATCH PARTIAL not yet implemented"))); + errmsg("MATCH PARTIAL not yet implemented"), + scanner_errposition(@1))); $$ = FKCONSTR_MATCH_PARTIAL; } | MATCH SIMPLE @@ -2368,7 +2508,7 @@ OptInherit: INHERITS '(' qualified_name_list ')' { $$ = $3; } /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ OptWith: - WITH definition { $$ = $2; } + WITH reloptions { $$ = $2; } | WITH OIDS { $$ = list_make1(defWithOids(true)); } | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } | /*EMPTY*/ { $$ = NIL; } @@ -2395,7 +2535,7 @@ OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } */ CreateAsStmt: - CREATE OptTemp TABLE create_as_target AS SelectStmt + CREATE OptTemp TABLE create_as_target AS SelectStmt opt_with_data { /* * When the SelectStmt is a set-operation tree, we must @@ -2408,9 +2548,13 @@ CreateAsStmt: if (n->intoClause != NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("CREATE TABLE AS cannot specify INTO"))); + errmsg("CREATE TABLE AS cannot specify INTO"), + scanner_errposition(exprLocation((Node *) n->intoClause)))); $4->rel->istemp = $2; n->intoClause = $4; + /* Implement WITH NO DATA by forcing top-level LIMIT 0 */ + if (!$7) + ((SelectStmt *) $6)->limitCount = makeIntConst(0, -1); $$ = $6; } ; @@ -2453,6 +2597,12 @@ CreateAsElement: } ; +opt_with_data: + WITH DATA_P { $$ = TRUE; } + | WITH NO DATA_P { $$ = FALSE; } + | /*EMPTY*/ { $$ = TRUE; } + ; + /***************************************************************************** * @@ -2463,7 +2613,7 @@ CreateAsElement: *****************************************************************************/ CreateSeqStmt: - CREATE OptTemp SEQUENCE qualified_name OptSeqList + CREATE OptTemp SEQUENCE qualified_name OptSeqOptList { CreateSeqStmt *n = makeNode(CreateSeqStmt); $4->istemp = $2; @@ -2474,7 +2624,7 @@ CreateSeqStmt: ; AlterSeqStmt: - ALTER SEQUENCE qualified_name OptSeqList + ALTER SEQUENCE qualified_name SeqOptList { AlterSeqStmt *n = makeNode(AlterSeqStmt); n->sequence = $3; @@ -2483,11 +2633,15 @@ AlterSeqStmt: } ; -OptSeqList: OptSeqList OptSeqElem { $$ = lappend($1, $2); } +OptSeqOptList: SeqOptList { $$ = $1; } | /*EMPTY*/ { $$ = NIL; } ; -OptSeqElem: CACHE NumericOnly +SeqOptList: SeqOptElem { $$ = list_make1($1); } + | SeqOptList SeqOptElem { $$ = lappend($1, $2); } + ; + +SeqOptElem: CACHE NumericOnly { $$ = makeDefElem("cache", (Node *)$2); } @@ -2527,6 +2681,10 @@ OptSeqElem: CACHE NumericOnly { $$ = makeDefElem("start", (Node *)$3); } + | RESTART + { + $$ = makeDefElem("restart", NULL); + } | RESTART opt_with NumericOnly { $$ = makeDefElem("restart", (Node *)$3); @@ -2538,21 +2696,15 @@ opt_by: BY {} ; NumericOnly: - FloatOnly { $$ = $1; } - | IntegerOnly { $$ = $1; } - ; - -FloatOnly: FCONST { $$ = makeFloat($1); } + FCONST { $$ = makeFloat($1); } | '-' FCONST { $$ = makeFloat($2); doNegateFloat($$); } + | SignedIconst { $$ = makeInteger($1); }; ; -IntegerOnly: SignedIconst { $$ = makeInteger($1); }; - - /***************************************************************************** * * QUERIES : @@ -2599,8 +2751,13 @@ handler_name: | name attrs { $$ = lcons(makeString($1), $2); } ; -opt_validator: +validator_clause: VALIDATOR handler_name { $$ = $2; } + | NO VALIDATOR { $$ = NIL; } + ; + +opt_validator: + validator_clause { $$ = $1; } | /*EMPTY*/ { $$ = NIL; } ; @@ -2682,201 +2839,498 @@ DropTableSpaceStmt: DROP TABLESPACE name /***************************************************************************** * - * QUERIES : - * CREATE TRIGGER ... - * DROP TRIGGER ... + * QUERY: + * CREATE FOREIGN DATA WRAPPER name [ VALIDATOR name ] * *****************************************************************************/ -CreateTrigStmt: - CREATE TRIGGER name TriggerActionTime TriggerEvents ON - qualified_name TriggerForSpec EXECUTE PROCEDURE - func_name '(' TriggerFuncArgs ')' +CreateFdwStmt: CREATE FOREIGN DATA_P WRAPPER name opt_validator create_generic_options { - CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = $3; - n->relation = $7; - n->funcname = $11; - n->args = $13; - n->before = $4; - n->row = $8; - memcpy(n->actions, $5, 4); - n->isconstraint = FALSE; - n->deferrable = FALSE; - n->initdeferred = FALSE; - n->constrrel = NULL; - $$ = (Node *)n; + CreateFdwStmt *n = makeNode(CreateFdwStmt); + n->fdwname = $5; + n->validator = $6; + n->options = $7; + $$ = (Node *) n; } - | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON - qualified_name OptConstrFromTable - ConstraintAttributeSpec - FOR EACH ROW EXECUTE PROCEDURE - func_name '(' TriggerFuncArgs ')' - { - CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = $4; - n->relation = $8; - n->funcname = $16; - n->args = $18; - n->before = FALSE; - n->row = TRUE; - memcpy(n->actions, $6, 4); - n->isconstraint = TRUE; - n->deferrable = ($10 & 1) != 0; - n->initdeferred = ($10 & 2) != 0; + ; - n->constrrel = $9; - $$ = (Node *)n; +/***************************************************************************** + * + * QUERY : + * DROP FOREIGN DATA WRAPPER name + * + ****************************************************************************/ + +DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior + { + DropFdwStmt *n = makeNode(DropFdwStmt); + n->fdwname = $5; + n->missing_ok = false; + n->behavior = $6; + $$ = (Node *) n; + } + | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior + { + DropFdwStmt *n = makeNode(DropFdwStmt); + n->fdwname = $7; + n->missing_ok = true; + n->behavior = $8; + $$ = (Node *) n; } ; -TriggerActionTime: - BEFORE { $$ = TRUE; } - | AFTER { $$ = FALSE; } - ; +/***************************************************************************** + * + * QUERY : + * ALTER FOREIGN DATA WRAPPER name + * + ****************************************************************************/ -TriggerEvents: - TriggerOneEvent +AlterFdwStmt: ALTER FOREIGN DATA_P WRAPPER name validator_clause alter_generic_options { - char *e = palloc(4); - e[0] = $1; e[1] = '\0'; - $$ = e; + AlterFdwStmt *n = makeNode(AlterFdwStmt); + n->fdwname = $5; + n->validator = $6; + n->change_validator = true; + n->options = $7; + $$ = (Node *) n; } - | TriggerOneEvent OR TriggerOneEvent + | ALTER FOREIGN DATA_P WRAPPER name validator_clause { - char *e = palloc(4); - e[0] = $1; e[1] = $3; e[2] = '\0'; - $$ = e; + AlterFdwStmt *n = makeNode(AlterFdwStmt); + n->fdwname = $5; + n->validator = $6; + n->change_validator = true; + $$ = (Node *) n; } - | TriggerOneEvent OR TriggerOneEvent OR TriggerOneEvent + | ALTER FOREIGN DATA_P WRAPPER name alter_generic_options { - char *e = palloc(4); - e[0] = $1; e[1] = $3; e[2] = $5; e[3] = '\0'; - $$ = e; + AlterFdwStmt *n = makeNode(AlterFdwStmt); + n->fdwname = $5; + n->options = $6; + $$ = (Node *) n; } ; -TriggerOneEvent: - INSERT { $$ = 'i'; } - | DELETE_P { $$ = 'd'; } - | UPDATE { $$ = 'u'; } +/* Options definition for CREATE FDW, SERVER and USER MAPPING */ +create_generic_options: + OPTIONS '(' generic_option_list ')' { $$ = $3; } + | /*EMPTY*/ { $$ = NIL; } ; -TriggerForSpec: - FOR TriggerForOpt TriggerForType +generic_option_list: + generic_option_elem { - $$ = $3; + $$ = list_make1($1); } - | /* EMPTY */ + | generic_option_list ',' generic_option_elem { - /* - * If ROW/STATEMENT not specified, default to - * STATEMENT, per SQL - */ - $$ = FALSE; + $$ = lappend($1, $3); } ; -TriggerForOpt: - EACH {} - | /*EMPTY*/ {} - ; - -TriggerForType: - ROW { $$ = TRUE; } - | STATEMENT { $$ = FALSE; } - ; - -TriggerFuncArgs: - TriggerFuncArg { $$ = list_make1($1); } - | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } - | /*EMPTY*/ { $$ = NIL; } +/* Options definition for ALTER FDW, SERVER and USER MAPPING */ +alter_generic_options: + OPTIONS '(' alter_generic_option_list ')' { $$ = $3; } ; -TriggerFuncArg: - ICONST +alter_generic_option_list: + alter_generic_option_elem { - char buf[64]; - snprintf(buf, sizeof(buf), "%d", $1); - $$ = makeString(pstrdup(buf)); + $$ = list_make1($1); + } + | alter_generic_option_list ',' alter_generic_option_elem + { + $$ = lappend($1, $3); } - | FCONST { $$ = makeString($1); } - | Sconst { $$ = makeString($1); } - | BCONST { $$ = makeString($1); } - | XCONST { $$ = makeString($1); } - | ColId { $$ = makeString($1); } - ; - -OptConstrFromTable: - FROM qualified_name { $$ = $2; } - | /*EMPTY*/ { $$ = NULL; } ; -ConstraintAttributeSpec: - ConstraintDeferrabilitySpec - { $$ = $1; } - | ConstraintDeferrabilitySpec ConstraintTimeSpec +alter_generic_option_elem: + generic_option_elem { - if ($1 == 0 && $2 != 0) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"))); - $$ = $1 | $2; + $$ = $1; } - | ConstraintTimeSpec + | SET generic_option_elem { - if ($1 != 0) - $$ = 3; - else - $$ = 0; + $$ = $2; + $$->defaction = DEFELEM_SET; } - | ConstraintTimeSpec ConstraintDeferrabilitySpec + | ADD_P generic_option_elem { - if ($2 == 0 && $1 != 0) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"))); - $$ = $1 | $2; + $$ = $2; + $$->defaction = DEFELEM_ADD; + } + | DROP generic_option_name + { + $$ = makeDefElemExtended(NULL, $2, NULL, DEFELEM_DROP); } - | /*EMPTY*/ - { $$ = 0; } ; -ConstraintDeferrabilitySpec: - NOT DEFERRABLE { $$ = 0; } - | DEFERRABLE { $$ = 1; } +generic_option_elem: + generic_option_name generic_option_arg + { + $$ = makeDefElem($1, $2); + } ; -ConstraintTimeSpec: - INITIALLY IMMEDIATE { $$ = 0; } - | INITIALLY DEFERRED { $$ = 2; } +generic_option_name: + ColLabel { $$ = $1; } ; - -DropTrigStmt: - DROP TRIGGER name ON qualified_name opt_drop_behavior - { - DropPropertyStmt *n = makeNode(DropPropertyStmt); - n->relation = $5; - n->property = $3; - n->behavior = $6; - n->removeType = OBJECT_TRIGGER; - n->missing_ok = false; - $$ = (Node *) n; - } - | DROP TRIGGER IF_P EXISTS name ON qualified_name opt_drop_behavior - { - DropPropertyStmt *n = makeNode(DropPropertyStmt); - n->relation = $7; - n->property = $5; - n->behavior = $8; - n->removeType = OBJECT_TRIGGER; - n->missing_ok = true; - $$ = (Node *) n; - } +/* We could use def_arg here, but the spec only requires string literals */ +generic_option_arg: + Sconst { $$ = (Node *) makeString($1); } ; - +/***************************************************************************** + * + * QUERY: + * CREATE SERVER name [TYPE] [VERSION] [OPTIONS] + * + *****************************************************************************/ + +CreateForeignServerStmt: CREATE SERVER name opt_type opt_foreign_server_version + FOREIGN DATA_P WRAPPER name create_generic_options + { + CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); + n->servername = $3; + n->servertype = $4; + n->version = $5; + n->fdwname = $9; + n->options = $10; + $$ = (Node *) n; + } + ; + +opt_type: + TYPE_P Sconst { $$ = $2; } + | /*EMPTY*/ { $$ = NULL; } + ; + + +foreign_server_version: + VERSION_P Sconst { $$ = $2; } + | VERSION_P NULL_P { $$ = NULL; } + ; + +opt_foreign_server_version: + foreign_server_version { $$ = $1; } + | /*EMPTY*/ { $$ = NULL; } + ; + +/***************************************************************************** + * + * QUERY : + * DROP SERVER name + * + ****************************************************************************/ + +DropForeignServerStmt: DROP SERVER name opt_drop_behavior + { + DropForeignServerStmt *n = makeNode(DropForeignServerStmt); + n->servername = $3; + n->missing_ok = false; + n->behavior = $4; + $$ = (Node *) n; + } + | DROP SERVER IF_P EXISTS name opt_drop_behavior + { + DropForeignServerStmt *n = makeNode(DropForeignServerStmt); + n->servername = $5; + n->missing_ok = true; + n->behavior = $6; + $$ = (Node *) n; + } + ; + +/***************************************************************************** + * + * QUERY : + * ALTER SERVER name [VERSION] [OPTIONS] + * + ****************************************************************************/ + +AlterForeignServerStmt: ALTER SERVER name foreign_server_version alter_generic_options + { + AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); + n->servername = $3; + n->version = $4; + n->options = $5; + n->has_version = true; + $$ = (Node *) n; + } + | ALTER SERVER name foreign_server_version + { + AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); + n->servername = $3; + n->version = $4; + n->has_version = true; + $$ = (Node *) n; + } + | ALTER SERVER name alter_generic_options + { + AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); + n->servername = $3; + n->options = $4; + $$ = (Node *) n; + } + ; + +/***************************************************************************** + * + * QUERY: + * CREATE USER MAPPING FOR auth_ident SERVER name [OPTIONS] + * + *****************************************************************************/ + +CreateUserMappingStmt: CREATE USER MAPPING FOR auth_ident SERVER name create_generic_options + { + CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); + n->username = $5; + n->servername = $7; + n->options = $8; + $$ = (Node *) n; + } + ; + +/* User mapping authorization identifier */ +auth_ident: + CURRENT_USER { $$ = "current_user"; } + | USER { $$ = "current_user"; } + | RoleId { $$ = (strcmp($1, "public") == 0) ? NULL : $1; } + ; + +/***************************************************************************** + * + * QUERY : + * DROP USER MAPPING FOR auth_ident SERVER name + * + ****************************************************************************/ + +DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name + { + DropUserMappingStmt *n = makeNode(DropUserMappingStmt); + n->username = $5; + n->servername = $7; + n->missing_ok = false; + $$ = (Node *) n; + } + | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name + { + DropUserMappingStmt *n = makeNode(DropUserMappingStmt); + n->username = $7; + n->servername = $9; + n->missing_ok = true; + $$ = (Node *) n; + } + ; + +/***************************************************************************** + * + * QUERY : + * ALTER USER MAPPING FOR auth_ident SERVER name OPTIONS + * + ****************************************************************************/ + +AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name alter_generic_options + { + AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); + n->username = $5; + n->servername = $7; + n->options = $8; + $$ = (Node *) n; + } + ; + +/***************************************************************************** + * + * QUERIES : + * CREATE TRIGGER ... + * DROP TRIGGER ... + * + *****************************************************************************/ + +CreateTrigStmt: + CREATE TRIGGER name TriggerActionTime TriggerEvents ON + qualified_name TriggerForSpec EXECUTE PROCEDURE + func_name '(' TriggerFuncArgs ')' + { + CreateTrigStmt *n = makeNode(CreateTrigStmt); + n->trigname = $3; + n->relation = $7; + n->funcname = $11; + n->args = $13; + n->before = $4; + n->row = $8; + n->events = $5; + n->isconstraint = FALSE; + n->deferrable = FALSE; + n->initdeferred = FALSE; + n->constrrel = NULL; + $$ = (Node *)n; + } + | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON + qualified_name OptConstrFromTable + ConstraintAttributeSpec + FOR EACH ROW EXECUTE PROCEDURE + func_name '(' TriggerFuncArgs ')' + { + CreateTrigStmt *n = makeNode(CreateTrigStmt); + n->trigname = $4; + n->relation = $8; + n->funcname = $16; + n->args = $18; + n->before = FALSE; + n->row = TRUE; + n->events = $6; + n->isconstraint = TRUE; + n->deferrable = ($10 & 1) != 0; + n->initdeferred = ($10 & 2) != 0; + n->constrrel = $9; + $$ = (Node *)n; + } + ; + +TriggerActionTime: + BEFORE { $$ = TRUE; } + | AFTER { $$ = FALSE; } + ; + +TriggerEvents: + TriggerOneEvent + { $$ = $1; } + | TriggerEvents OR TriggerOneEvent + { + if ($1 & $3) + yyerror("duplicate trigger events specified"); + $$ = $1 | $3; + } + ; + +TriggerOneEvent: + INSERT { $$ = TRIGGER_TYPE_INSERT; } + | DELETE_P { $$ = TRIGGER_TYPE_DELETE; } + | UPDATE { $$ = TRIGGER_TYPE_UPDATE; } + | TRUNCATE { $$ = TRIGGER_TYPE_TRUNCATE; } + ; + +TriggerForSpec: + FOR TriggerForOpt TriggerForType + { + $$ = $3; + } + | /* EMPTY */ + { + /* + * If ROW/STATEMENT not specified, default to + * STATEMENT, per SQL + */ + $$ = FALSE; + } + ; + +TriggerForOpt: + EACH {} + | /*EMPTY*/ {} + ; + +TriggerForType: + ROW { $$ = TRUE; } + | STATEMENT { $$ = FALSE; } + ; + +TriggerFuncArgs: + TriggerFuncArg { $$ = list_make1($1); } + | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } + | /*EMPTY*/ { $$ = NIL; } + ; + +TriggerFuncArg: + Iconst + { + char buf[64]; + snprintf(buf, sizeof(buf), "%d", $1); + $$ = makeString(pstrdup(buf)); + } + | FCONST { $$ = makeString($1); } + | Sconst { $$ = makeString($1); } + | BCONST { $$ = makeString($1); } + | XCONST { $$ = makeString($1); } + | ColId { $$ = makeString($1); } + ; + +OptConstrFromTable: + FROM qualified_name { $$ = $2; } + | /*EMPTY*/ { $$ = NULL; } + ; + +ConstraintAttributeSpec: + ConstraintDeferrabilitySpec + { $$ = $1; } + | ConstraintDeferrabilitySpec ConstraintTimeSpec + { + if ($1 == 0 && $2 != 0) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), + scanner_errposition(@1))); + $$ = $1 | $2; + } + | ConstraintTimeSpec + { + if ($1 != 0) + $$ = 3; + else + $$ = 0; + } + | ConstraintTimeSpec ConstraintDeferrabilitySpec + { + if ($2 == 0 && $1 != 0) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), + scanner_errposition(@1))); + $$ = $1 | $2; + } + | /*EMPTY*/ + { $$ = 0; } + ; + +ConstraintDeferrabilitySpec: + NOT DEFERRABLE { $$ = 0; } + | DEFERRABLE { $$ = 1; } + ; + +ConstraintTimeSpec: + INITIALLY IMMEDIATE { $$ = 0; } + | INITIALLY DEFERRED { $$ = 2; } + ; + + +DropTrigStmt: + DROP TRIGGER name ON qualified_name opt_drop_behavior + { + DropPropertyStmt *n = makeNode(DropPropertyStmt); + n->relation = $5; + n->property = $3; + n->behavior = $6; + n->removeType = OBJECT_TRIGGER; + n->missing_ok = false; + $$ = (Node *) n; + } + | DROP TRIGGER IF_P EXISTS name ON qualified_name opt_drop_behavior + { + DropPropertyStmt *n = makeNode(DropPropertyStmt); + n->relation = $7; + n->property = $5; + n->behavior = $8; + n->removeType = OBJECT_TRIGGER; + n->missing_ok = true; + $$ = (Node *) n; + } + ; + + /***************************************************************************** * * QUERIES : @@ -3007,9 +3461,11 @@ DefineStmt: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", - NameListToString($3)))); + NameListToString($3)), + scanner_errposition(@3))); break; } + r->location = @3; n->typevar = r; n->coldeflist = $6; $$ = (Node *)n; @@ -3066,9 +3522,9 @@ def_list: def_elem { $$ = list_make1($1); } | def_list ',' def_elem { $$ = lappend($1, $3); } ; -def_elem: ColLabel '=' def_arg +def_elem: ColLabel '=' def_arg { - $$ = makeDefElem($1, (Node *)$3); + $$ = makeDefElem($1, (Node *) $3); } | ColLabel { @@ -3095,6 +3551,11 @@ old_aggr_list: old_aggr_elem { $$ = list_make1($1); } | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } ; +/* + * Must use IDENT here to avoid reduce/reduce conflicts; fortunately none of + * the item names needed in old aggregate definitions are likely to become + * SQL keywords. + */ old_aggr_elem: IDENT '=' def_arg { $$ = makeDefElem($1, (Node *)$3); @@ -3147,17 +3608,15 @@ opclass_item: n->name = $3; n->args = NIL; n->number = $2; - n->recheck = $4; $$ = (Node *) n; } - | OPERATOR Iconst any_operator '(' oper_argtypes ')' opt_recheck + | OPERATOR Iconst any_operator oper_argtypes opt_recheck { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; n->name = $3; - n->args = $5; + n->args = $4; n->number = $2; - n->recheck = $7; $$ = (Node *) n; } | FUNCTION Iconst func_name func_args @@ -3196,7 +3655,15 @@ opt_opfamily: FAMILY any_name { $$ = $2; } | /*EMPTY*/ { $$ = NIL; } ; -opt_recheck: RECHECK { $$ = TRUE; } +opt_recheck: RECHECK + { + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("RECHECK is no longer supported"), + errhint("Update your data type."), + scanner_errposition(@1))); + $$ = TRUE; + } | /*EMPTY*/ { $$ = FALSE; } ; @@ -3396,15 +3863,22 @@ attrs: '.' attr_name *****************************************************************************/ TruncateStmt: - TRUNCATE opt_table qualified_name_list opt_drop_behavior + TRUNCATE opt_table relation_expr_list opt_restart_seqs opt_drop_behavior { TruncateStmt *n = makeNode(TruncateStmt); n->relations = $3; - n->behavior = $4; + n->restart_seqs = $4; + n->behavior = $5; $$ = (Node *)n; } ; +opt_restart_seqs: + CONTINUE_P IDENTITY_P { $$ = false; } + | RESTART IDENTITY_P { $$ = true; } + | /* EMPTY */ { $$ = false; } + ; + /***************************************************************************** * * The COMMENT ON statement can take different forms based upon the type of @@ -3412,7 +3886,7 @@ TruncateStmt: * * COMMENT ON [ [ DATABASE | DOMAIN | INDEX | SEQUENCE | TABLE | TYPE | VIEW | * CONVERSION | LANGUAGE | OPERATOR CLASS | LARGE OBJECT | - * CAST | COLUMN | SCHEMA | TABLESPACE | ROLE | + * CAST | COLUMN | SCHEMA | TABLESPACE | ROLE | * TEXT SEARCH PARSER | TEXT SEARCH DICTIONARY | * TEXT SEARCH TEMPLATE | * TEXT SEARCH CONFIGURATION ] <objname> | @@ -3454,14 +3928,13 @@ CommentStmt: n->comment = $7; $$ = (Node *) n; } - | COMMENT ON OPERATOR any_operator '(' oper_argtypes ')' - IS comment_text + | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPERATOR; n->objname = $4; - n->objargs = $6; - n->comment = $9; + n->objargs = $5; + n->comment = $7; $$ = (Node *) n; } | COMMENT ON CONSTRAINT name ON any_name IS comment_text @@ -3805,12 +4278,11 @@ RevokeStmt: /* - * A privilege list is represented as a list of strings; the validity of - * the privilege names gets checked at execution. This is a bit annoying - * but we have little choice because of the syntactic conflict with lists - * of role names in GRANT/REVOKE. What's more, we have to call out in - * the "privilege" production any reserved keywords that need to be usable - * as privilege names. + * Privilege names are represented as strings; the validity of the privilege + * names gets checked at execution. This is a bit annoying but we have little + * choice because of the syntactic conflict with lists of role names in + * GRANT/REVOKE. What's more, we have to call out in the "privilege" + * production any reserved keywords that need to be usable as privilege names. */ /* either ALL [PRIVILEGES] or a list of individual privileges */ @@ -3820,18 +4292,54 @@ privileges: privilege_list { $$ = NIL; } | ALL PRIVILEGES { $$ = NIL; } + | ALL '(' columnList ')' + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = NULL; + n->cols = $3; + $$ = list_make1(n); + } + | ALL PRIVILEGES '(' columnList ')' + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = NULL; + n->cols = $4; + $$ = list_make1(n); + } ; -privilege_list: privilege - { $$ = list_make1(makeString($1)); } - | privilege_list ',' privilege - { $$ = lappend($1, makeString($3)); } +privilege_list: privilege { $$ = list_make1($1); } + | privilege_list ',' privilege { $$ = lappend($1, $3); } ; -privilege: SELECT { $$ = pstrdup($1); } - | REFERENCES { $$ = pstrdup($1); } - | CREATE { $$ = pstrdup($1); } - | ColId { $$ = $1; } +privilege: SELECT opt_column_list + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = pstrdup($1); + n->cols = $2; + $$ = n; + } + | REFERENCES opt_column_list + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = pstrdup($1); + n->cols = $2; + $$ = n; + } + | CREATE opt_column_list + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = pstrdup($1); + n->cols = $2; + $$ = n; + } + | ColId opt_column_list + { + AccessPriv *n = makeNode(AccessPriv); + n->priv_name = $1; + n->cols = $2; + $$ = n; + } ; @@ -3841,56 +4349,70 @@ privilege: SELECT { $$ = pstrdup($1); } privilege_target: qualified_name_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_RELATION; n->objs = $1; $$ = n; } | TABLE qualified_name_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_RELATION; n->objs = $2; $$ = n; } | SEQUENCE qualified_name_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_SEQUENCE; n->objs = $2; $$ = n; } + | FOREIGN DATA_P WRAPPER name_list + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->objtype = ACL_OBJECT_FDW; + n->objs = $4; + $$ = n; + } + | FOREIGN SERVER name_list + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->objtype = ACL_OBJECT_FOREIGN_SERVER; + n->objs = $3; + $$ = n; + } | FUNCTION function_with_argtypes_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_FUNCTION; n->objs = $2; $$ = n; } | DATABASE name_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_DATABASE; n->objs = $2; $$ = n; } | LANGUAGE name_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_LANGUAGE; n->objs = $2; $$ = n; } | SCHEMA name_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_NAMESPACE; n->objs = $2; $$ = n; } | TABLESPACE name_list { - PrivTarget *n = makeNode(PrivTarget); + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->objtype = ACL_OBJECT_TABLESPACE; n->objs = $2; $$ = n; @@ -4011,7 +4533,7 @@ opt_granted_by: GRANTED BY RoleId { $$ = $3; } IndexStmt: CREATE index_opt_unique INDEX index_name ON qualified_name access_method_clause '(' index_params ')' - opt_definition OptTableSpace where_clause + opt_reloptions OptTableSpace where_clause { IndexStmt *n = makeNode(IndexStmt); n->unique = $2; @@ -4027,7 +4549,7 @@ IndexStmt: CREATE index_opt_unique INDEX index_name } | CREATE index_opt_unique INDEX CONCURRENTLY index_name ON qualified_name access_method_clause '(' index_params ')' - opt_definition OptTableSpace where_clause + opt_reloptions OptTableSpace where_clause { IndexStmt *n = makeNode(IndexStmt); n->unique = $2; @@ -4097,8 +4619,8 @@ opt_class: any_name { $$ = $1; } ; opt_asc_desc: ASC { $$ = SORTBY_ASC; } - | DESC { $$ = SORTBY_DESC; } - | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } + | DESC { $$ = SORTBY_DESC; } + | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } ; opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } @@ -4119,7 +4641,7 @@ opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } *****************************************************************************/ CreateFunctionStmt: - CREATE opt_or_replace FUNCTION func_name func_args + CREATE opt_or_replace FUNCTION func_name func_args_with_defaults RETURNS func_return createfunc_opt_list opt_definition { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); @@ -4131,7 +4653,20 @@ CreateFunctionStmt: n->withClause = $9; $$ = (Node *)n; } - | CREATE opt_or_replace FUNCTION func_name func_args + | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults + RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition + { + CreateFunctionStmt *n = makeNode(CreateFunctionStmt); + n->replace = $2; + n->funcname = $4; + n->parameters = mergeTableFuncParameters($5, $9); + n->returnType = TableFuncTypeName($9); + n->returnType->location = @7; + n->options = $11; + n->withClause = $12; + $$ = (Node *)n; + } + | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults createfunc_opt_list opt_definition { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); @@ -4159,6 +4694,21 @@ func_args_list: | func_args_list ',' func_arg { $$ = lappend($1, $3); } ; +/* + * func_args_with_defaults is separate because we only want to accept + * defaults in CREATE FUNCTION, not in ALTER etc. + */ +func_args_with_defaults: + '(' func_args_with_defaults_list ')' { $$ = $2; } + | '(' ')' { $$ = NIL; } + ; + +func_args_with_defaults_list: + func_arg_with_default { $$ = list_make1($1); } + | func_args_with_defaults_list ',' func_arg_with_default + { $$ = lappend($1, $3); } + ; + /* * The style with arg_class first is SQL99 standard, but Oracle puts * param_name first; accept both since it's likely people will try both @@ -4176,6 +4726,7 @@ func_arg: n->name = $2; n->argType = $3; n->mode = $1; + n->defexpr = NULL; $$ = n; } | param_name arg_class func_type @@ -4184,6 +4735,7 @@ func_arg: n->name = $1; n->argType = $3; n->mode = $2; + n->defexpr = NULL; $$ = n; } | param_name func_type @@ -4192,6 +4744,7 @@ func_arg: n->name = $1; n->argType = $2; n->mode = FUNC_PARAM_IN; + n->defexpr = NULL; $$ = n; } | arg_class func_type @@ -4200,6 +4753,7 @@ func_arg: n->name = NULL; n->argType = $2; n->mode = $1; + n->defexpr = NULL; $$ = n; } | func_type @@ -4208,15 +4762,17 @@ func_arg: n->name = NULL; n->argType = $1; n->mode = FUNC_PARAM_IN; + n->defexpr = NULL; $$ = n; } ; /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ -arg_class: IN_P { $$ = FUNC_PARAM_IN; } - | OUT_P { $$ = FUNC_PARAM_OUT; } - | INOUT { $$ = FUNC_PARAM_INOUT; } - | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } +arg_class: IN_P { $$ = FUNC_PARAM_IN; } + | OUT_P { $$ = FUNC_PARAM_OUT; } + | INOUT { $$ = FUNC_PARAM_INOUT; } + | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } + | VARIADIC { $$ = FUNC_PARAM_VARIADIC; } ; /* @@ -4257,6 +4813,23 @@ func_type: Typename { $$ = $1; } } ; +func_arg_with_default: + func_arg + { + $$ = $1; + } + | func_arg DEFAULT a_expr + { + $$ = $1; + $$->defexpr = $3; + } + | func_arg '=' a_expr + { + $$ = $1; + $$->defexpr = $3; + } + ; + createfunc_opt_list: /* Must be at least one to prevent conflict */ @@ -4332,6 +4905,10 @@ createfunc_opt_item: { $$ = makeDefElem("language", (Node *)makeString($2)); } + | WINDOW + { + $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); + } | common_func_opt_item { $$ = $1; @@ -4345,9 +4922,31 @@ func_as: Sconst { $$ = list_make1(makeString($1)); } } ; -opt_definition: - WITH definition { $$ = $2; } - | /*EMPTY*/ { $$ = NIL; } +opt_definition: + WITH definition { $$ = $2; } + | /*EMPTY*/ { $$ = NIL; } + ; + +table_func_column: param_name func_type + { + FunctionParameter *n = makeNode(FunctionParameter); + n->name = $1; + n->argType = $2; + n->mode = FUNC_PARAM_TABLE; + n->defexpr = NULL; + $$ = n; + } + ; + +table_func_column_list: + table_func_column + { + $$ = list_make1($1); + } + | table_func_column_list ',' table_func_column + { + $$ = lappend($1, $3); + } ; /***************************************************************************** @@ -4438,42 +5037,43 @@ RemoveAggrStmt: ; RemoveOperStmt: - DROP OPERATOR any_operator '(' oper_argtypes ')' opt_drop_behavior + DROP OPERATOR any_operator oper_argtypes opt_drop_behavior { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_OPERATOR; n->name = $3; - n->args = $5; - n->behavior = $7; + n->args = $4; + n->behavior = $5; n->missing_ok = false; $$ = (Node *)n; } - | DROP OPERATOR IF_P EXISTS any_operator '(' oper_argtypes ')' opt_drop_behavior + | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->kind = OBJECT_OPERATOR; n->name = $5; - n->args = $7; - n->behavior = $9; + n->args = $6; + n->behavior = $7; n->missing_ok = true; $$ = (Node *)n; } ; oper_argtypes: - Typename + '(' Typename ')' { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing argument"), - errhint("Use NONE to denote the missing argument of a unary operator."))); + errhint("Use NONE to denote the missing argument of a unary operator."), + scanner_errposition(@3))); } - | Typename ',' Typename - { $$ = list_make2($1, $3); } - | NONE ',' Typename /* left unary */ - { $$ = list_make2(NULL, $3); } - | Typename ',' NONE /* right unary */ - { $$ = list_make2($1, NULL); } + | '(' Typename ',' Typename ')' + { $$ = list_make2($2, $4); } + | '(' NONE ',' Typename ')' /* left unary */ + { $$ = list_make2(NULL, $4); } + | '(' Typename ',' NONE ')' /* right unary */ + { $$ = list_make2($2, NULL); } ; any_operator: @@ -4498,6 +5098,7 @@ CreateCastStmt: CREATE CAST '(' Typename AS Typename ')' n->targettype = $6; n->func = $10; n->context = (CoercionContext) $11; + n->inout = false; $$ = (Node *)n; } | CREATE CAST '(' Typename AS Typename ')' @@ -4508,6 +5109,18 @@ CreateCastStmt: CREATE CAST '(' Typename AS Typename ')' n->targettype = $6; n->func = NULL; n->context = (CoercionContext) $10; + n->inout = false; + $$ = (Node *)n; + } + | CREATE CAST '(' Typename AS Typename ')' + WITH INOUT cast_context + { + CreateCastStmt *n = makeNode(CreateCastStmt); + n->sourcetype = $4; + n->targettype = $6; + n->func = NULL; + n->context = (CoercionContext) $10; + n->inout = true; $$ = (Node *)n; } ; @@ -4675,7 +5288,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name n->newname = $6; $$ = (Node *)n; } - | ALTER SEQUENCE relation_expr RENAME TO name + | ALTER SEQUENCE qualified_name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; @@ -4684,7 +5297,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name n->newname = $6; $$ = (Node *)n; } - | ALTER VIEW relation_expr RENAME TO name + | ALTER VIEW qualified_name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; @@ -4693,7 +5306,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name n->newname = $6; $$ = (Node *)n; } - | ALTER INDEX relation_expr RENAME TO name + | ALTER INDEX qualified_name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; @@ -4711,7 +5324,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name n->newname = $8; $$ = (Node *)n; } - | ALTER TRIGGER name ON relation_expr RENAME TO name + | ALTER TRIGGER name ON qualified_name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TRIGGER; @@ -4776,12 +5389,24 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name n->newname = $8; $$ = (Node *)n; } + | ALTER TYPE_P any_name RENAME TO name + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_TYPE; + n->object = $3; + n->newname = $6; + $$ = (Node *)n; + } ; opt_column: COLUMN { $$ = COLUMN; } | /*EMPTY*/ { $$ = 0; } ; +opt_set_data: SET DATA_P { $$ = 1; } + | /*EMPTY*/ { $$ = 0; } + ; + /***************************************************************************** * * ALTER THING name SET SCHEMA name @@ -4815,7 +5440,15 @@ AlterObjectSchemaStmt: n->newschema = $6; $$ = (Node *)n; } - | ALTER SEQUENCE relation_expr SET SCHEMA name + | ALTER TABLE relation_expr SET SCHEMA name + { + AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); + n->objectType = OBJECT_TABLE; + n->relation = $3; + n->newschema = $6; + $$ = (Node *)n; + } + | ALTER SEQUENCE qualified_name SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; @@ -4823,10 +5456,10 @@ AlterObjectSchemaStmt: n->newschema = $6; $$ = (Node *)n; } - | ALTER TABLE relation_expr SET SCHEMA name + | ALTER VIEW qualified_name SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); - n->objectType = OBJECT_TABLE; + n->objectType = OBJECT_VIEW; n->relation = $3; n->newschema = $6; $$ = (Node *)n; @@ -4868,7 +5501,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; - n->object = list_make1($3); + n->object = list_make1(makeString($3)); n->newowner = $6; $$ = (Node *)n; } @@ -4893,17 +5526,17 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LANGUAGE; - n->object = list_make1($4); + n->object = list_make1(makeString($4)); n->newowner = $7; $$ = (Node *)n; } - | ALTER OPERATOR any_operator '(' oper_argtypes ')' OWNER TO RoleId + | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleId { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPERATOR; n->object = $3; - n->objarg = $5; - n->newowner = $9; + n->objarg = $4; + n->newowner = $7; $$ = (Node *)n; } | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId @@ -4928,7 +5561,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SCHEMA; - n->object = list_make1($3); + n->object = list_make1(makeString($3)); n->newowner = $6; $$ = (Node *)n; } @@ -4944,7 +5577,7 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TABLESPACE; - n->object = list_make1($3); + n->object = list_make1(makeString($3)); n->newowner = $6; $$ = (Node *)n; } @@ -4964,6 +5597,22 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId n->newowner = $8; $$ = (Node *)n; } + | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_FDW; + n->object = list_make1(makeString($5)); + n->newowner = $8; + $$ = (Node *)n; + } + | ALTER SERVER name OWNER TO RoleId + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_FOREIGN_SERVER; + n->object = list_make1(makeString($3)); + n->newowner = $6; + $$ = (Node *)n; + } ; @@ -5066,7 +5715,7 @@ DropRuleStmt: /***************************************************************************** * * QUERY: - * NOTIFY <qualified_name> can appear both in rule bodies and + * NOTIFY <identifier> can appear both in rule bodies and * as a query-level command * *****************************************************************************/ @@ -5074,9 +5723,7 @@ DropRuleStmt: NotifyStmt: NOTIFY ColId { NotifyStmt *n = makeNode(NotifyStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = $2; - n->relation->schemaname = NULL; + n->conditionname = $2; $$ = (Node *)n; } ; @@ -5084,9 +5731,7 @@ NotifyStmt: NOTIFY ColId ListenStmt: LISTEN ColId { ListenStmt *n = makeNode(ListenStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = $2; - n->relation->schemaname = NULL; + n->conditionname = $2; $$ = (Node *)n; } ; @@ -5095,17 +5740,13 @@ UnlistenStmt: UNLISTEN ColId { UnlistenStmt *n = makeNode(UnlistenStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = $2; - n->relation->schemaname = NULL; + n->conditionname = $2; $$ = (Node *)n; } | UNLISTEN '*' { UnlistenStmt *n = makeNode(UnlistenStmt); - n->relation = makeNode(RangeVar); - n->relation->relname = "*"; - n->relation->schemaname = NULL; + n->conditionname = NULL; $$ = (Node *)n; } ; @@ -5234,13 +5875,13 @@ opt_transaction: WORK {} transaction_mode_item: ISOLATION LEVEL iso_level { $$ = makeDefElem("transaction_isolation", - makeStringConst($3, NULL)); } + makeStringConst($3, @3)); } | READ ONLY { $$ = makeDefElem("transaction_read_only", - makeIntConst(TRUE)); } + makeIntConst(TRUE, @1)); } | READ WRITE { $$ = makeDefElem("transaction_read_only", - makeIntConst(FALSE)); } + makeIntConst(FALSE, @1)); } ; /* Syntax with commas is SQL-spec, without commas is Postgres historical */ @@ -5292,24 +5933,20 @@ ViewStmt: CREATE OptTemp VIEW qualified_name opt_column_list } ; -/* - * We use merged tokens here to avoid creating shift/reduce conflicts against - * a whole lot of other uses of WITH. - */ opt_check_option: - WITH_CHECK OPTION + WITH CHECK OPTION { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION is not implemented"))); } - | WITH_CASCADED CHECK OPTION + | WITH CASCADED CHECK OPTION { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION is not implemented"))); } - | WITH_LOCAL CHECK OPTION + | WITH LOCAL CHECK OPTION { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -5392,6 +6029,22 @@ createdb_opt_item: { $$ = makeDefElem("encoding", NULL); } + | LC_COLLATE_P opt_equal Sconst + { + $$ = makeDefElem("lc_collate", (Node *)makeString($3)); + } + | LC_COLLATE_P opt_equal DEFAULT + { + $$ = makeDefElem("lc_collate", NULL); + } + | LC_CTYPE_P opt_equal Sconst + { + $$ = makeDefElem("lc_ctype", (Node *)makeString($3)); + } + | LC_CTYPE_P opt_equal DEFAULT + { + $$ = makeDefElem("lc_ctype", NULL); + } | CONNECTION LIMIT opt_equal SignedIconst { $$ = makeDefElem("connectionlimit", (Node *)makeInteger($4)); @@ -5429,6 +6082,14 @@ AlterDatabaseStmt: n->options = $5; $$ = (Node *)n; } + | ALTER DATABASE database_name SET TABLESPACE name + { + AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); + n->dbname = $3; + n->options = list_make1(makeDefElem("tablespace", + (Node *)makeString($6))); + $$ = (Node *)n; + } ; AlterDatabaseSetStmt: @@ -5585,7 +6246,7 @@ AlterTSConfigurationStmt: n->replace = false; $$ = (Node*)n; } - | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name + | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = $5; @@ -5595,7 +6256,7 @@ AlterTSConfigurationStmt: n->replace = true; $$ = (Node*)n; } - | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name + | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = $5; @@ -5605,7 +6266,7 @@ AlterTSConfigurationStmt: n->replace = true; $$ = (Node*)n; } - | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list + | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = $5; @@ -5613,7 +6274,7 @@ AlterTSConfigurationStmt: n->missing_ok = false; $$ = (Node*)n; } - | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list + | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->cfgname = $5; @@ -5650,33 +6311,36 @@ CreateConversionStmt: /***************************************************************************** * * QUERY: - * CLUSTER <qualified_name> [ USING <index_name> ] - * CLUSTER - * CLUSTER <index_name> ON <qualified_name> (for pre-8.3) + * CLUSTER [VERBOSE] <qualified_name> [ USING <index_name> ] + * CLUSTER [VERBOSE] + * CLUSTER [VERBOSE] <index_name> ON <qualified_name> (for pre-8.3) * *****************************************************************************/ ClusterStmt: - CLUSTER qualified_name cluster_index_specification + CLUSTER opt_verbose qualified_name cluster_index_specification { ClusterStmt *n = makeNode(ClusterStmt); - n->relation = $2; - n->indexname = $3; + n->relation = $3; + n->indexname = $4; + n->verbose = $2; $$ = (Node*)n; } - | CLUSTER + | CLUSTER opt_verbose { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; + n->verbose = $2; $$ = (Node*)n; } /* kept for pre-8.3 compatibility */ - | CLUSTER index_name ON qualified_name + | CLUSTER opt_verbose index_name ON qualified_name { ClusterStmt *n = makeNode(ClusterStmt); - n->relation = $4; - n->indexname = $2; + n->relation = $5; + n->indexname = $3; + n->verbose = $2; $$ = (Node*)n; } ; @@ -5702,6 +6366,7 @@ VacuumStmt: VACUUM opt_full opt_freeze opt_verbose n->analyze = false; n->full = $2; n->freeze_min_age = $3 ? 0 : -1; + n->freeze_table_age = $3 ? 0 : -1; n->verbose = $4; n->relation = NULL; n->va_cols = NIL; @@ -5714,6 +6379,7 @@ VacuumStmt: VACUUM opt_full opt_freeze opt_verbose n->analyze = false; n->full = $2; n->freeze_min_age = $3 ? 0 : -1; + n->freeze_table_age = $3 ? 0 : -1; n->verbose = $4; n->relation = $5; n->va_cols = NIL; @@ -5725,6 +6391,7 @@ VacuumStmt: VACUUM opt_full opt_freeze opt_verbose n->vacuum = true; n->full = $2; n->freeze_min_age = $3 ? 0 : -1; + n->freeze_table_age = $3 ? 0 : -1; n->verbose |= $4; $$ = (Node *)n; } @@ -5738,6 +6405,7 @@ AnalyzeStmt: n->analyze = true; n->full = false; n->freeze_min_age = -1; + n->freeze_table_age = -1; n->verbose = $2; n->relation = NULL; n->va_cols = NIL; @@ -5750,6 +6418,7 @@ AnalyzeStmt: n->analyze = true; n->full = false; n->freeze_min_age = -1; + n->freeze_table_age = -1; n->verbose = $2; n->relation = $3; n->va_cols = $4; @@ -5804,6 +6473,7 @@ ExplainableStmt: | UpdateStmt | DeleteStmt | DeclareCursorStmt + | CreateAsStmt | ExecuteStmt /* by default all are $$=$1 */ ; @@ -5958,7 +6628,7 @@ insert_column_item: { $$ = makeNode(ResTarget); $$->name = $1; - $$->indirection = $2; + $$->indirection = check_indirection($2); $$->val = NULL; $$->location = @1; } @@ -5994,7 +6664,15 @@ using_clause: | /*EMPTY*/ { $$ = NIL; } ; -LockStmt: LOCK_P opt_table qualified_name_list opt_lock opt_nowait + +/***************************************************************************** + * + * QUERY: + * LOCK TABLE + * + *****************************************************************************/ + +LockStmt: LOCK_P opt_table relation_expr_list opt_lock opt_nowait { LockStmt *n = makeNode(LockStmt); @@ -6079,7 +6757,8 @@ multiple_set_clause: if (list_length($2) != list_length($5)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("number of columns does not match number of values"))); + errmsg("number of columns does not match number of values"), + scanner_errposition(@1))); forboth(col_cell, $2, val_cell, $5) { ResTarget *res_col = (ResTarget *) lfirst(col_cell); @@ -6097,7 +6776,7 @@ set_target: { $$ = makeNode(ResTarget); $$->name = $1; - $$->indirection = $2; + $$->indirection = check_indirection($2); $$->val = NULL; /* upper production sets this */ $$->location = @1; } @@ -6193,6 +6872,10 @@ select_with_parens: ; /* + * This rule parses the equivalent of the standard's <query expression>. + * The duplicative productions are annoying, but hard to get rid of without + * creating shift/reduce conflicts. + * * FOR UPDATE/SHARE may be before or after LIMIT/OFFSET. * In <=7.2.X, LIMIT/OFFSET had to be after FOR UPDATE * We now support both orderings, but prefer LIMIT/OFFSET before FOR UPDATE/SHARE @@ -6203,21 +6886,51 @@ select_no_parens: | select_clause sort_clause { insertSelectOptions((SelectStmt *) $1, $2, NIL, - NULL, NULL); + NULL, NULL, NULL); $$ = $1; } | select_clause opt_sort_clause for_locking_clause opt_select_limit { insertSelectOptions((SelectStmt *) $1, $2, $3, - list_nth($4, 0), list_nth($4, 1)); + list_nth($4, 0), list_nth($4, 1), + NULL); $$ = $1; } | select_clause opt_sort_clause select_limit opt_for_locking_clause { insertSelectOptions((SelectStmt *) $1, $2, $4, - list_nth($3, 0), list_nth($3, 1)); + list_nth($3, 0), list_nth($3, 1), + NULL); $$ = $1; } + | with_clause simple_select + { + insertSelectOptions((SelectStmt *) $2, NULL, NIL, + NULL, NULL, + $1); + $$ = $2; + } + | with_clause select_clause sort_clause + { + insertSelectOptions((SelectStmt *) $2, $3, NIL, + NULL, NULL, + $1); + $$ = $2; + } + | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit + { + insertSelectOptions((SelectStmt *) $2, $3, $4, + list_nth($5, 0), list_nth($5, 1), + $1); + $$ = $2; + } + | with_clause select_clause opt_sort_clause select_limit opt_for_locking_clause + { + insertSelectOptions((SelectStmt *) $2, $3, $5, + list_nth($4, 0), list_nth($4, 1), + $1); + $$ = $2; + } ; select_clause: @@ -6240,10 +6953,10 @@ select_clause: * (SELECT foo UNION SELECT bar) ORDER BY baz * not * SELECT foo UNION (SELECT bar ORDER BY baz) - * Likewise FOR UPDATE and LIMIT. Therefore, those clauses are described - * as part of the select_no_parens production, not simple_select. - * This does not limit functionality, because you can reintroduce sort and - * limit clauses inside parentheses. + * Likewise for WITH, FOR UPDATE and LIMIT. Therefore, those clauses are + * described as part of the select_no_parens production, not simple_select. + * This does not limit functionality, because you can reintroduce these + * clauses inside parentheses. * * NOTE: only the leftmost component SelectStmt should have INTO. * However, this is not checked by the grammar; parse analysis must check it. @@ -6251,7 +6964,7 @@ select_clause: simple_select: SELECT opt_distinct target_list into_clause from_clause where_clause - group_clause having_clause + group_clause having_clause window_clause { SelectStmt *n = makeNode(SelectStmt); n->distinctClause = $2; @@ -6261,9 +6974,29 @@ simple_select: n->whereClause = $6; n->groupClause = $7; n->havingClause = $8; + n->windowClause = $9; $$ = (Node *)n; } | values_clause { $$ = $1; } + | TABLE relation_expr + { + /* same as SELECT * FROM relation_expr */ + ColumnRef *cr = makeNode(ColumnRef); + ResTarget *rt = makeNode(ResTarget); + SelectStmt *n = makeNode(SelectStmt); + + cr->fields = list_make1(makeNode(A_Star)); + cr->location = -1; + + rt->name = NULL; + rt->indirection = NIL; + rt->val = (Node *)cr; + rt->location = -1; + + n->targetList = list_make1(rt); + n->fromClause = list_make1($2); + $$ = (Node *)n; + } | select_clause UNION opt_all select_clause { $$ = makeSetOp(SETOP_UNION, $3, $1, $4); @@ -6278,6 +7011,47 @@ simple_select: } ; +/* + * SQL standard WITH clause looks like: + * + * WITH [ RECURSIVE ] <query name> [ (<column>,...) ] + * AS (query) [ SEARCH or CYCLE clause ] + * + * We don't currently support the SEARCH or CYCLE clause. + */ +with_clause: + WITH cte_list + { + $$ = makeNode(WithClause); + $$->ctes = $2; + $$->recursive = false; + $$->location = @1; + } + | WITH RECURSIVE cte_list + { + $$ = makeNode(WithClause); + $$->ctes = $3; + $$->recursive = true; + $$->location = @1; + } + ; + +cte_list: + common_table_expr { $$ = list_make1($1); } + | cte_list ',' common_table_expr { $$ = lappend($1, $3); } + ; + +common_table_expr: name opt_name_list AS select_with_parens + { + CommonTableExpr *n = makeNode(CommonTableExpr); + n->ctename = $1; + n->aliascolnames = $2; + n->ctequery = $4; + n->location = @1; + $$ = (Node *) n; + } + ; + into_clause: INTO OptTempTableName { @@ -6379,6 +7153,7 @@ sortby: a_expr USING qual_all_Op opt_nulls_order $$->sortby_dir = SORTBY_USING; $$->sortby_nulls = $4; $$->useOp = $3; + $$->location = @3; } | a_expr opt_asc_desc opt_nulls_order { @@ -6387,6 +7162,7 @@ sortby: a_expr USING qual_all_Op opt_nulls_order $$->sortby_dir = $2; $$->sortby_nulls = $3; $$->useOp = NIL; + $$->location = -1; /* no operator */ } ; @@ -6406,8 +7182,16 @@ select_limit: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("LIMIT #,# syntax is not supported"), - errhint("Use separate LIMIT and OFFSET clauses."))); + errhint("Use separate LIMIT and OFFSET clauses."), + scanner_errposition(@1))); } + /* SQL:2008 syntax variants */ + | OFFSET select_offset_value2 row_or_rows + { $$ = list_make2($2, NULL); } + | FETCH first_or_next opt_select_fetch_first_value row_or_rows ONLY + { $$ = list_make2(NULL, $3); } + | OFFSET select_offset_value2 row_or_rows FETCH first_or_next opt_select_fetch_first_value row_or_rows ONLY + { $$ = list_make2($2, $6); } ; opt_select_limit: @@ -6421,16 +7205,45 @@ select_limit_value: | ALL { /* LIMIT ALL is represented as a NULL constant */ - A_Const *n = makeNode(A_Const); - n->val.type = T_Null; - $$ = (Node *)n; + $$ = makeNullAConst(@1); } ; +/* + * Allowing full expressions without parentheses causes various parsing + * problems with the trailing ROW/ROWS key words. SQL only calls for + * constants, so we allow the rest only with parentheses. + */ +opt_select_fetch_first_value: + SignedIconst { $$ = makeIntConst($1, @1); } + | '(' a_expr ')' { $$ = $2; } + | /*EMPTY*/ { $$ = makeIntConst(1, -1); } + ; + select_offset_value: a_expr { $$ = $1; } ; +/* + * Again, the trailing ROW/ROWS in this case prevent the full expression + * syntax. c_expr is the best we can do. + */ +select_offset_value2: + c_expr { $$ = $1; } + ; + +/* noise words */ +row_or_rows: + ROW { $$ = 0; } + | ROWS { $$ = 0; } + ; + +/* noise words */ +first_or_next: + FIRST_P { $$ = 0; } + | NEXT { $$ = 0; } + ; + group_clause: GROUP_P BY expr_list { $$ = $3; } | /*EMPTY*/ { $$ = NIL; } @@ -6476,7 +7289,7 @@ for_locking_item: ; locked_rels_list: - OF name_list { $$ = $2; } + OF qualified_name_list { $$ = $2; } | /* EMPTY */ { $$ = NIL; } ; @@ -6591,12 +7404,14 @@ table_ref: relation_expr ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), - errhint("For example, FROM (VALUES ...) [AS] foo."))); + errhint("For example, FROM (VALUES ...) [AS] foo."), + scanner_errposition(@1))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), - errhint("For example, FROM (SELECT ...) [AS] foo."))); + errhint("For example, FROM (SELECT ...) [AS] foo."), + scanner_errposition(@1))); $$ = NULL; } | select_with_parens alias_clause @@ -6786,6 +7601,12 @@ relation_expr: ; +relation_expr_list: + relation_expr { $$ = list_make1($1); } + | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } + ; + + /* * Given "UPDATE foo set set ...", we have to decide without looking any * further ahead whether the first "set" is an alias or the UPDATE's SET @@ -6891,19 +7712,29 @@ Typename: SimpleTypename opt_array_bounds $$->arrayBounds = $3; $$->setof = TRUE; } + /* SQL standard syntax, currently only one-dimensional */ | SimpleTypename ARRAY '[' Iconst ']' { - /* SQL99's redundant syntax */ $$ = $1; $$->arrayBounds = list_make1(makeInteger($4)); } | SETOF SimpleTypename ARRAY '[' Iconst ']' { - /* SQL99's redundant syntax */ $$ = $2; $$->arrayBounds = list_make1(makeInteger($5)); $$->setof = TRUE; } + | SimpleTypename ARRAY + { + $$ = $1; + $$->arrayBounds = list_make1(makeInteger(-1)); + } + | SETOF SimpleTypename ARRAY + { + $$ = $2; + $$->arrayBounds = list_make1(makeInteger(-1)); + $$->setof = TRUE; + } ; opt_array_bounds: @@ -6924,14 +7755,23 @@ SimpleTypename: | ConstInterval opt_interval { $$ = $1; - if ($2 != INTERVAL_FULL_RANGE) - $$->typmods = list_make1(makeIntConst($2)); + $$->typmods = $2; } | ConstInterval '(' Iconst ')' opt_interval { $$ = $1; - $$->typmods = list_make2(makeIntConst($5), - makeIntConst($3)); + if ($5 != NIL) + { + if (list_length($5) != 1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("interval precision specified twice"), + scanner_errposition(@1))); + $$->typmods = lappend($5, makeIntConst($3, @3)); + } + else + $$->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst($3, @3)); } ; @@ -7051,7 +7891,8 @@ opt_float: '(' Iconst ')' if ($2 < 1) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be at least 1 bit"))); + errmsg("precision for type float must be at least 1 bit"), + scanner_errposition(@2))); else if ($2 <= 24) $$ = SystemTypeName("float4"); else if ($2 <= 53) @@ -7059,7 +7900,8 @@ opt_float: '(' Iconst ')' else ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be less than 54 bits"))); + errmsg("precision for type float must be less than 54 bits"), + scanner_errposition(@2))); } | /*EMPTY*/ { @@ -7117,7 +7959,7 @@ BitWithoutLength: else { $$ = SystemTypeName("bit"); - $$->typmods = list_make1(makeIntConst(1)); + $$->typmods = list_make1(makeIntConst(1, -1)); } $$->location = @1; } @@ -7169,7 +8011,7 @@ CharacterWithLength: character '(' Iconst ')' opt_charset } $$ = SystemTypeName($1); - $$->typmods = list_make1(makeIntConst($3)); + $$->typmods = list_make1(makeIntConst($3, @3)); $$->location = @1; } ; @@ -7191,7 +8033,7 @@ CharacterWithoutLength: character opt_charset /* char defaults to char(1), varchar to no limit */ if (strcmp($1, "char") == 0) - $$->typmods = list_make1(makeIntConst(1)); + $$->typmods = list_make1(makeIntConst(1, -1)); $$->location = @1; } @@ -7231,11 +8073,7 @@ ConstDatetime: $$ = SystemTypeName("timestamptz"); else $$ = SystemTypeName("timestamp"); - /* XXX the timezone field seems to be unused - * - thomas 2001-09-06 - */ - $$->timezone = $5; - $$->typmods = list_make1(makeIntConst($3)); + $$->typmods = list_make1(makeIntConst($3, @3)); $$->location = @1; } | TIMESTAMP opt_timezone @@ -7244,10 +8082,6 @@ ConstDatetime: $$ = SystemTypeName("timestamptz"); else $$ = SystemTypeName("timestamp"); - /* XXX the timezone field seems to be unused - * - thomas 2001-09-06 - */ - $$->timezone = $2; $$->location = @1; } | TIME '(' Iconst ')' opt_timezone @@ -7256,7 +8090,7 @@ ConstDatetime: $$ = SystemTypeName("timetz"); else $$ = SystemTypeName("time"); - $$->typmods = list_make1(makeIntConst($3)); + $$->typmods = list_make1(makeIntConst($3, @3)); $$->location = @1; } | TIME opt_timezone @@ -7278,36 +8112,80 @@ ConstInterval: ; opt_timezone: - WITH TIME ZONE { $$ = TRUE; } + WITH_TIME ZONE { $$ = TRUE; } | WITHOUT TIME ZONE { $$ = FALSE; } | /*EMPTY*/ { $$ = FALSE; } ; opt_interval: - YEAR_P { $$ = INTERVAL_MASK(YEAR); } - | MONTH_P { $$ = INTERVAL_MASK(MONTH); } - | DAY_P { $$ = INTERVAL_MASK(DAY); } - | HOUR_P { $$ = INTERVAL_MASK(HOUR); } - | MINUTE_P { $$ = INTERVAL_MASK(MINUTE); } - | SECOND_P { $$ = INTERVAL_MASK(SECOND); } + YEAR_P + { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } + | MONTH_P + { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } + | DAY_P + { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } + | HOUR_P + { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } + | MINUTE_P + { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } + | interval_second + { $$ = $1; } | YEAR_P TO MONTH_P - { $$ = INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH); } + { + $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | + INTERVAL_MASK(MONTH), @1)); + } | DAY_P TO HOUR_P - { $$ = INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR); } + { + $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR), @1)); + } | DAY_P TO MINUTE_P - { $$ = INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) - | INTERVAL_MASK(MINUTE); } - | DAY_P TO SECOND_P - { $$ = INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) - | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND); } + { + $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), @1)); + } + | DAY_P TO interval_second + { + $$ = $3; + linitial($$) = makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), @1); + } | HOUR_P TO MINUTE_P - { $$ = INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE); } - | HOUR_P TO SECOND_P - { $$ = INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) - | INTERVAL_MASK(SECOND); } - | MINUTE_P TO SECOND_P - { $$ = INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND); } - | /*EMPTY*/ { $$ = INTERVAL_FULL_RANGE; } + { + $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), @1)); + } + | HOUR_P TO interval_second + { + $$ = $3; + linitial($$) = makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), @1); + } + | MINUTE_P TO interval_second + { + $$ = $3; + linitial($$) = makeIntConst(INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), @1); + } + | /*EMPTY*/ + { $$ = NIL; } + ; + +interval_second: + SECOND_P + { + $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); + } + | SECOND_P '(' Iconst ')' + { + $$ = list_make2(makeIntConst(INTERVAL_MASK(SECOND), @1), + makeIntConst($3, @3)); + } ; @@ -7335,7 +8213,7 @@ opt_interval: */ a_expr: c_expr { $$ = $1; } | a_expr TYPECAST Typename - { $$ = makeTypeCast($1, $3); } + { $$ = makeTypeCast($1, $3, @2); } | a_expr AT TIME ZONE a_expr { FuncCall *n = makeNode(FuncCall); @@ -7343,6 +8221,8 @@ a_expr: c_expr { $$ = $1; } n->args = list_make2($5, $1); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @2; $$ = (Node *) n; } @@ -7401,6 +8281,8 @@ a_expr: c_expr { $$ = $1; } n->args = list_make2($3, $5); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @4; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); } @@ -7413,6 +8295,8 @@ a_expr: c_expr { $$ = $1; } n->args = list_make2($4, $6); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @5; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); } @@ -7425,6 +8309,8 @@ a_expr: c_expr { $$ = $1; } n->args = list_make2($3, $5); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @4; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); } @@ -7437,19 +8323,21 @@ a_expr: c_expr { $$ = $1; } n->args = list_make2($4, $6); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @5; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n, @2); } | a_expr SIMILAR TO a_expr %prec SIMILAR { - A_Const *c = makeNode(A_Const); FuncCall *n = makeNode(FuncCall); - c->val.type = T_Null; n->funcname = SystemFuncName("similar_escape"); - n->args = list_make2($4, (Node *) c); + n->args = list_make2($4, makeNullAConst(-1)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @2; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); } @@ -7460,18 +8348,20 @@ a_expr: c_expr { $$ = $1; } n->args = list_make2($4, $6); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @5; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); } | a_expr NOT SIMILAR TO a_expr %prec SIMILAR { - A_Const *c = makeNode(A_Const); FuncCall *n = makeNode(FuncCall); - c->val.type = T_Null; n->funcname = SystemFuncName("similar_escape"); - n->args = list_make2($5, (Node *) c); + n->args = list_make2($5, makeNullAConst(-1)); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @5; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); } @@ -7482,6 +8372,8 @@ a_expr: c_expr { $$ = $1; } n->args = list_make2($5, $7); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @6; $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); } @@ -7589,6 +8481,11 @@ a_expr: c_expr { $$ = $1; } { $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); } + /* + * Ideally we would not use hard-wired operators below but instead use + * opclasses. However, mixed data types and other issues make this + * difficult: http://archives.postgresql.org/pgsql-hackers/2008-08/msg01142.php + */ | a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN { $$ = (Node *) makeA_Expr(AEXPR_AND, NIL, @@ -7639,6 +8536,7 @@ a_expr: c_expr { $$ = $1; } n->subLinkType = ANY_SUBLINK; n->testexpr = $1; n->operName = list_make1(makeString("=")); + n->location = @2; $$ = (Node *)n; } else @@ -7658,6 +8556,7 @@ a_expr: c_expr { $$ = $1; } n->subLinkType = ANY_SUBLINK; n->testexpr = $1; n->operName = list_make1(makeString("=")); + n->location = @3; /* Stick a NOT on top */ $$ = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, (Node *) n, @2); } @@ -7674,6 +8573,7 @@ a_expr: c_expr { $$ = $1; } n->testexpr = $1; n->operName = $2; n->subselect = $4; + n->location = @2; $$ = (Node *)n; } | a_expr subquery_Op sub_type '(' a_expr ')' %prec Op @@ -7696,16 +8596,19 @@ a_expr: c_expr { $$ = $1; } */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("UNIQUE predicate is not yet implemented"))); + errmsg("UNIQUE predicate is not yet implemented"), + scanner_errposition(@1))); } | a_expr IS DOCUMENT_P %prec IS { - $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1)); + $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1($1), @2); } | a_expr IS NOT DOCUMENT_P %prec IS { $$ = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, - makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1)), + makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1($1), @2), @2); } ; @@ -7722,7 +8625,7 @@ a_expr: c_expr { $$ = $1; } b_expr: c_expr { $$ = $1; } | b_expr TYPECAST Typename - { $$ = makeTypeCast($1, $3); } + { $$ = makeTypeCast($1, $3, @2); } | '+' b_expr %prec UMINUS { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } | '-' b_expr %prec UMINUS @@ -7770,12 +8673,14 @@ b_expr: c_expr } | b_expr IS DOCUMENT_P %prec IS { - $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1)); + $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1($1), @2); } | b_expr IS NOT DOCUMENT_P %prec IS { $$ = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, - makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1)), + makeXmlExpr(IS_DOCUMENT, NULL, NIL, + list_make1($1), @2), @2); } ; @@ -7794,11 +8699,12 @@ c_expr: columnref { $$ = $1; } { ParamRef *p = makeNode(ParamRef); p->number = $1; + p->location = @1; if ($2) { A_Indirection *n = makeNode(A_Indirection); n->arg = (Node *) p; - n->indirection = $2; + n->indirection = check_indirection($2); $$ = (Node *) n; } else @@ -7810,7 +8716,7 @@ c_expr: columnref { $$ = $1; } { A_Indirection *n = makeNode(A_Indirection); n->arg = $2; - n->indirection = $4; + n->indirection = check_indirection($4); $$ = (Node *)n; } else @@ -7827,6 +8733,7 @@ c_expr: columnref { $$ = $1; } n->testexpr = NULL; n->operName = NIL; n->subselect = $1; + n->location = @1; $$ = (Node *)n; } | EXISTS select_with_parens @@ -7836,6 +8743,7 @@ c_expr: columnref { $$ = $1; } n->testexpr = NULL; n->operName = NIL; n->subselect = $2; + n->location = @1; $$ = (Node *)n; } | ARRAY select_with_parens @@ -7845,15 +8753,23 @@ c_expr: columnref { $$ = $1; } n->testexpr = NULL; n->operName = NIL; n->subselect = $2; + n->location = @1; $$ = (Node *)n; } | ARRAY array_expr - { $$ = $2; } + { + A_ArrayExpr *n = (A_ArrayExpr *) $2; + Assert(IsA(n, A_ArrayExpr)); + /* point outermost A_ArrayExpr to the ARRAY keyword */ + n->location = @1; + $$ = (Node *)n; + } | row { RowExpr *r = makeNode(RowExpr); r->args = $1; - r->row_typeid = 0; /* not analyzed yet */ + r->row_typeid = InvalidOid; /* not analyzed yet */ + r->location = @1; $$ = (Node *)r; } ; @@ -7866,27 +8782,55 @@ c_expr: columnref { $$ = $1; } * (Note that many of the special SQL functions wouldn't actually make any * sense as functional index entries, but we ignore that consideration here.) */ -func_expr: func_name '(' ')' +func_expr: func_name '(' ')' over_clause { FuncCall *n = makeNode(FuncCall); n->funcname = $1; n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = $4; n->location = @1; $$ = (Node *)n; } - | func_name '(' expr_list ')' + | func_name '(' expr_list ')' over_clause { FuncCall *n = makeNode(FuncCall); n->funcname = $1; n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = $5; + n->location = @1; + $$ = (Node *)n; + } + | func_name '(' VARIADIC a_expr ')' over_clause + { + FuncCall *n = makeNode(FuncCall); + n->funcname = $1; + n->args = list_make1($4); + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = TRUE; + n->over = $6; + n->location = @1; + $$ = (Node *)n; + } + | func_name '(' expr_list ',' VARIADIC a_expr ')' over_clause + { + FuncCall *n = makeNode(FuncCall); + n->funcname = $1; + n->args = lappend($3, $6); + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = TRUE; + n->over = $8; n->location = @1; $$ = (Node *)n; } - | func_name '(' ALL expr_list ')' + | func_name '(' ALL expr_list ')' over_clause { FuncCall *n = makeNode(FuncCall); n->funcname = $1; @@ -7897,20 +8841,24 @@ func_expr: func_name '(' ')' * "must be an aggregate", but there's no provision * for that in FuncCall at the moment. */ + n->func_variadic = FALSE; + n->over = $6; n->location = @1; $$ = (Node *)n; } - | func_name '(' DISTINCT expr_list ')' + | func_name '(' DISTINCT expr_list ')' over_clause { FuncCall *n = makeNode(FuncCall); n->funcname = $1; n->args = $4; n->agg_star = FALSE; n->agg_distinct = TRUE; + n->func_variadic = FALSE; + n->over = $6; n->location = @1; $$ = (Node *)n; } - | func_name '(' '*' ')' + | func_name '(' '*' ')' over_clause { /* * We consider AGGREGATE(*) to invoke a parameterless @@ -7927,6 +8875,8 @@ func_expr: func_name '(' ')' n->args = NIL; n->agg_star = TRUE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = $5; n->location = @1; $$ = (Node *)n; } @@ -7947,16 +8897,9 @@ func_expr: func_name '(' ')' * that is actually possible, but not clear that we want * to rely on it.) */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("date"); - - $$ = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", @1, SystemTypeName("text")); + $$ = makeTypeCast(n, SystemTypeName("date"), -1); } | CURRENT_TIME { @@ -7964,16 +8907,9 @@ func_expr: func_name '(' ')' * Translate as "'now'::text::timetz". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("timetz"); - - $$ = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", @1, SystemTypeName("text")); + $$ = makeTypeCast(n, SystemTypeName("timetz"), -1); } | CURRENT_TIME '(' Iconst ')' { @@ -7981,16 +8917,12 @@ func_expr: func_name '(' ')' * Translate as "'now'::text::timetz(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); + n = makeStringConstCast("now", @1, SystemTypeName("text")); d = SystemTypeName("timetz"); - d->typmods = list_make1(makeIntConst($3)); - - $$ = (Node *)makeTypeCast((Node *)s, d); + d->typmods = list_make1(makeIntConst($3, @3)); + $$ = makeTypeCast(n, d, -1); } | CURRENT_TIMESTAMP { @@ -8003,6 +8935,8 @@ func_expr: func_name '(' ')' n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8012,17 +8946,12 @@ func_expr: func_name '(' ')' * Translate as "'now'::text::timestamptz(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - + n = makeStringConstCast("now", @1, SystemTypeName("text")); d = SystemTypeName("timestamptz"); - d->typmods = list_make1(makeIntConst($3)); - - $$ = (Node *)makeTypeCast((Node *)s, d); + d->typmods = list_make1(makeIntConst($3, @3)); + $$ = makeTypeCast(n, d, -1); } | LOCALTIME { @@ -8030,16 +8959,9 @@ func_expr: func_name '(' ')' * Translate as "'now'::text::time". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("time"); - - $$ = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", @1, SystemTypeName("text")); + $$ = makeTypeCast((Node *)n, SystemTypeName("time"), -1); } | LOCALTIME '(' Iconst ')' { @@ -8047,16 +8969,12 @@ func_expr: func_name '(' ')' * Translate as "'now'::text::time(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); + n = makeStringConstCast("now", @1, SystemTypeName("text")); d = SystemTypeName("time"); - d->typmods = list_make1(makeIntConst($3)); - - $$ = (Node *)makeTypeCast((Node *)s, d); + d->typmods = list_make1(makeIntConst($3, @3)); + $$ = makeTypeCast((Node *)n, d, -1); } | LOCALTIMESTAMP { @@ -8064,16 +8982,9 @@ func_expr: func_name '(' ')' * Translate as "'now'::text::timestamp". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); - TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - - d = SystemTypeName("timestamp"); - - $$ = (Node *)makeTypeCast((Node *)s, d); + Node *n; + n = makeStringConstCast("now", @1, SystemTypeName("text")); + $$ = makeTypeCast(n, SystemTypeName("timestamp"), -1); } | LOCALTIMESTAMP '(' Iconst ')' { @@ -8081,60 +8992,87 @@ func_expr: func_name '(' ')' * Translate as "'now'::text::timestamp(n)". * See comments for CURRENT_DATE. */ - A_Const *s = makeNode(A_Const); + Node *n; TypeName *d; - - s->val.type = T_String; - s->val.val.str = "now"; - s->typename = SystemTypeName("text"); - + n = makeStringConstCast("now", @1, SystemTypeName("text")); d = SystemTypeName("timestamp"); - d->typmods = list_make1(makeIntConst($3)); - - $$ = (Node *)makeTypeCast((Node *)s, d); + d->typmods = list_make1(makeIntConst($3, @3)); + $$ = makeTypeCast(n, d, -1); + } + | CURRENT_ROLE + { + FuncCall *n = makeNode(FuncCall); + n->funcname = SystemFuncName("current_user"); + n->args = NIL; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; + n->location = @1; + $$ = (Node *)n; + } + | CURRENT_USER + { + FuncCall *n = makeNode(FuncCall); + n->funcname = SystemFuncName("current_user"); + n->args = NIL; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; + n->location = @1; + $$ = (Node *)n; } - | CURRENT_ROLE + | SESSION_USER { FuncCall *n = makeNode(FuncCall); - n->funcname = SystemFuncName("current_user"); + n->funcname = SystemFuncName("session_user"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } - | CURRENT_USER + | USER { FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("current_user"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } - | SESSION_USER + | CURRENT_CATALOG { FuncCall *n = makeNode(FuncCall); - n->funcname = SystemFuncName("session_user"); + n->funcname = SystemFuncName("current_database"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } - | USER + | CURRENT_SCHEMA { FuncCall *n = makeNode(FuncCall); - n->funcname = SystemFuncName("current_user"); + n->funcname = SystemFuncName("current_schema"); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } | CAST '(' a_expr AS Typename ')' - { $$ = makeTypeCast($3, $5); } + { $$ = makeTypeCast($3, $5, @1); } | EXTRACT '(' extract_list ')' { FuncCall *n = makeNode(FuncCall); @@ -8142,6 +9080,8 @@ func_expr: func_name '(' ')' n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8157,6 +9097,8 @@ func_expr: func_name '(' ')' n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8168,6 +9110,8 @@ func_expr: func_name '(' ')' n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8181,6 +9125,8 @@ func_expr: func_name '(' ')' n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8200,6 +9146,8 @@ func_expr: func_name '(' ')' n->args = list_make1($3); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8213,6 +9161,8 @@ func_expr: func_name '(' ')' n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8223,6 +9173,8 @@ func_expr: func_name '(' ')' n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8233,6 +9185,8 @@ func_expr: func_name '(' ')' n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8243,6 +9197,8 @@ func_expr: func_name '(' ')' n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = @1; $$ = (Node *)n; } @@ -8254,6 +9210,7 @@ func_expr: func_name '(' ')' { CoalesceExpr *c = makeNode(CoalesceExpr); c->args = $3; + c->location = @1; $$ = (Node *)c; } | GREATEST '(' expr_list ')' @@ -8261,6 +9218,7 @@ func_expr: func_name '(' ')' MinMaxExpr *v = makeNode(MinMaxExpr); v->args = $3; v->op = IS_GREATEST; + v->location = @1; $$ = (Node *)v; } | LEAST '(' expr_list ')' @@ -8268,52 +9226,54 @@ func_expr: func_name '(' ')' MinMaxExpr *v = makeNode(MinMaxExpr); v->args = $3; v->op = IS_LEAST; + v->location = @1; $$ = (Node *)v; } | XMLCONCAT '(' expr_list ')' { - $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3); + $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); } | XMLELEMENT '(' NAME_P ColLabel ')' { - $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL); + $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); } | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' { - $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL); + $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); } | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' { - $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6); + $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); } | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' { - $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, $8); + $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, $8, @1); } | XMLFOREST '(' xml_attribute_list ')' { - $$ = makeXmlExpr(IS_XMLFOREST, NULL, $3, NIL); + $$ = makeXmlExpr(IS_XMLFOREST, NULL, $3, NIL, @1); } | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' { - XmlExpr *x = (XmlExpr *) makeXmlExpr(IS_XMLPARSE, NULL, NIL, - list_make2($4, - makeBoolAConst($5))); + XmlExpr *x = (XmlExpr *) + makeXmlExpr(IS_XMLPARSE, NULL, NIL, + list_make2($4, makeBoolAConst($5, -1)), + @1); x->xmloption = $3; $$ = (Node *)x; } | XMLPI '(' NAME_P ColLabel ')' { - $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL); + $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); } | XMLPI '(' NAME_P ColLabel ',' a_expr ')' { - $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6)); + $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); } | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' { $$ = makeXmlExpr(IS_XMLROOT, NULL, NIL, - list_make3($3, $5, $6)); + list_make3($3, $5, $6), @1); } | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' { @@ -8321,6 +9281,7 @@ func_expr: func_name '(' ')' n->xmloption = $3; n->expr = $4; n->typename = $6; + n->location = @1; $$ = (Node *)n; } ; @@ -8331,21 +9292,17 @@ func_expr: func_name '(' ')' xml_root_version: VERSION_P a_expr { $$ = $2; } | VERSION_P NO VALUE_P - { - A_Const *val = makeNode(A_Const); - val->val.type = T_Null; - $$ = (Node *) val; - } + { $$ = makeNullAConst(-1); } ; opt_xml_root_standalone: ',' STANDALONE_P YES_P - { $$ = (Node *) makeIntConst(XML_STANDALONE_YES); } + { $$ = makeIntConst(XML_STANDALONE_YES, -1); } | ',' STANDALONE_P NO - { $$ = (Node *) makeIntConst(XML_STANDALONE_NO); } + { $$ = makeIntConst(XML_STANDALONE_NO, -1); } | ',' STANDALONE_P NO VALUE_P - { $$ = (Node *) makeIntConst(XML_STANDALONE_NO_VALUE); } + { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } | /*EMPTY*/ - { $$ = (Node *) makeIntConst(XML_STANDALONE_OMITTED); } + { $$ = makeIntConst(XML_STANDALONE_OMITTED, -1); } ; xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } @@ -8359,7 +9316,7 @@ xml_attribute_el: a_expr AS ColLabel { $$ = makeNode(ResTarget); $$->name = $3; - $$->indirection = NULL; + $$->indirection = NIL; $$->val = (Node *) $1; $$->location = @1; } @@ -8367,7 +9324,7 @@ xml_attribute_el: a_expr AS ColLabel { $$ = makeNode(ResTarget); $$->name = NULL; - $$->indirection = NULL; + $$->indirection = NIL; $$->val = (Node *) $1; $$->location = @1; } @@ -8382,6 +9339,155 @@ xml_whitespace_option: PRESERVE WHITESPACE_P { $$ = TRUE; } | /*EMPTY*/ { $$ = FALSE; } ; +/* + * Window Definitions + */ +window_clause: + WINDOW window_definition_list { $$ = $2; } + | /*EMPTY*/ { $$ = NIL; } + ; + +window_definition_list: + window_definition { $$ = list_make1($1); } + | window_definition_list ',' window_definition + { $$ = lappend($1, $3); } + ; + +window_definition: + ColId AS window_specification + { + WindowDef *n = $3; + n->name = $1; + $$ = n; + } + ; + +over_clause: OVER window_specification + { $$ = $2; } + | OVER ColId + { + WindowDef *n = makeNode(WindowDef); + n->name = $2; + n->refname = NULL; + n->partitionClause = NIL; + n->orderClause = NIL; + n->frameOptions = FRAMEOPTION_DEFAULTS; + n->location = @2; + $$ = n; + } + | /*EMPTY*/ + { $$ = NULL; } + ; + +window_specification: '(' opt_existing_window_name opt_partition_clause + opt_sort_clause opt_frame_clause ')' + { + WindowDef *n = makeNode(WindowDef); + n->name = NULL; + n->refname = $2; + n->partitionClause = $3; + n->orderClause = $4; + n->frameOptions = $5; + n->location = @1; + $$ = n; + } + ; + +/* + * If we see PARTITION, RANGE, or ROWS as the first token after the '(' + * of a window_specification, we want the assumption to be that there is + * no existing_window_name; but those keywords are unreserved and so could + * be ColIds. We fix this by making them have the same precedence as IDENT + * and giving the empty production here a slightly higher precedence, so + * that the shift/reduce conflict is resolved in favor of reducing the rule. + * These keywords are thus precluded from being an existing_window_name but + * are not reserved for any other purpose. + */ +opt_existing_window_name: ColId { $$ = $1; } + | /*EMPTY*/ %prec Op { $$ = NULL; } + ; + +opt_partition_clause: PARTITION BY expr_list { $$ = $3; } + | /*EMPTY*/ { $$ = NIL; } + ; + +/* + * This is only a subset of the full SQL:2008 frame_clause grammar. + * We don't support <expression> PRECEDING, <expression> FOLLOWING, + * nor <window frame exclusion> yet. + */ +opt_frame_clause: + RANGE frame_extent + { + $$ = FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE | $2; + } + | ROWS frame_extent + { + $$ = FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS | $2; + } + | /*EMPTY*/ + { $$ = FRAMEOPTION_DEFAULTS; } + ; + +frame_extent: frame_bound + { + /* reject invalid cases */ + if ($1 & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + scanner_errposition(@1))); + if ($1 & FRAMEOPTION_START_CURRENT_ROW) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("frame start at CURRENT ROW is not implemented"), + scanner_errposition(@1))); + $$ = $1 | FRAMEOPTION_END_CURRENT_ROW; + } + | BETWEEN frame_bound AND frame_bound + { + /* reject invalid cases */ + if ($2 & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + scanner_errposition(@2))); + if ($2 & FRAMEOPTION_START_CURRENT_ROW) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("frame start at CURRENT ROW is not implemented"), + scanner_errposition(@2))); + if ($4 & FRAMEOPTION_START_UNBOUNDED_PRECEDING) + ereport(ERROR, + (errcode(ERRCODE_WINDOWING_ERROR), + errmsg("frame end cannot be UNBOUNDED PRECEDING"), + scanner_errposition(@4))); + /* shift converts START_ options to END_ options */ + $$ = FRAMEOPTION_BETWEEN | $2 | ($4 << 1); + } + ; + +/* + * This is used for both frame start and frame end, with output set up on + * the assumption it's frame start; the frame_extent productions must reject + * invalid cases. + */ +frame_bound: + UNBOUNDED PRECEDING + { + $$ = FRAMEOPTION_START_UNBOUNDED_PRECEDING; + } + | UNBOUNDED FOLLOWING + { + $$ = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; + } + | CURRENT_P ROW + { + $$ = FRAMEOPTION_START_CURRENT_ROW; + } + ; + + /* * Supporting nonterminals for expressions. */ @@ -8463,45 +9569,40 @@ expr_list: a_expr } ; -extract_list: - extract_arg FROM a_expr - { - A_Const *n = makeNode(A_Const); - n->val.type = T_String; - n->val.val.str = $1; - $$ = list_make2((Node *) n, $3); - } - | /*EMPTY*/ { $$ = NIL; } - ; - type_list: Typename { $$ = list_make1($1); } | type_list ',' Typename { $$ = lappend($1, $3); } ; -array_expr_list: array_expr - { $$ = list_make1($1); } - | array_expr_list ',' array_expr - { $$ = lappend($1, $3); } - ; - array_expr: '[' expr_list ']' { - ArrayExpr *n = makeNode(ArrayExpr); - n->elements = $2; - $$ = (Node *)n; + $$ = makeAArrayExpr($2, @1); } | '[' array_expr_list ']' { - ArrayExpr *n = makeNode(ArrayExpr); - n->elements = $2; - $$ = (Node *)n; + $$ = makeAArrayExpr($2, @1); + } + | '[' ']' + { + $$ = makeAArrayExpr(NIL, @1); + } + ; + +array_expr_list: array_expr { $$ = list_make1($1); } + | array_expr_list ',' array_expr { $$ = lappend($1, $3); } + ; + + +extract_list: + extract_arg FROM a_expr + { + $$ = list_make2(makeStringConst($1, @1), $3); } + | /*EMPTY*/ { $$ = NIL; } ; -/* Allow delimited string SCONST in extract_arg as an SQL extension. +/* Allow delimited string Sconst in extract_arg as an SQL extension. * - thomas 2001-04-12 */ - extract_arg: IDENT { $$ = $1; } | YEAR_P { $$ = "year"; } @@ -8510,7 +9611,7 @@ extract_arg: | HOUR_P { $$ = "hour"; } | MINUTE_P { $$ = "minute"; } | SECOND_P { $$ = "second"; } - | SCONST { $$ = $1; } + | Sconst { $$ = $1; } ; /* OVERLAY() arguments @@ -8578,11 +9679,9 @@ substr_list: * which it is likely to do if the second argument * is unknown or doesn't have an implicit cast to int4. */ - A_Const *n = makeNode(A_Const); - n->val.type = T_Integer; - n->val.val.ival = 1; - $$ = list_make3($1, (Node *) n, - makeTypeCast($2, SystemTypeName("int4"))); + $$ = list_make3($1, makeIntConst(1, -1), + makeTypeCast($2, + SystemTypeName("int4"), -1)); } | expr_list { @@ -8624,10 +9723,11 @@ in_expr: select_with_parens case_expr: CASE case_arg when_clause_list case_default END_P { CaseExpr *c = makeNode(CaseExpr); - c->casetype = 0; /* not analyzed yet */ + c->casetype = InvalidOid; /* not analyzed yet */ c->arg = (Expr *) $2; c->args = $3; c->defresult = (Expr *) $4; + c->location = @1; $$ = (Node *)c; } ; @@ -8644,6 +9744,7 @@ when_clause: CaseWhen *w = makeNode(CaseWhen); w->expr = (Expr *) $2; w->result = (Expr *) $4; + w->location = @1; $$ = (Node *)w; } ; @@ -8679,7 +9780,7 @@ indirection_el: } | '.' '*' { - $$ = (Node *) makeString("*"); + $$ = (Node *) makeNode(A_Star); } | '[' a_expr ']' { @@ -8720,7 +9821,12 @@ opt_asymmetric: ASYMMETRIC ctext_expr: a_expr { $$ = (Node *) $1; } - | DEFAULT { $$ = (Node *) makeNode(SetToDefault); } + | DEFAULT + { + SetToDefault *n = makeNode(SetToDefault); + n->location = @1; + $$ = (Node *) n; + } ; ctext_expr_list: @@ -8748,7 +9854,6 @@ target_list: | target_list ',' target_el { $$ = lappend($1, $3); } ; -/* AS is not optional because shift/red conflict with unary ops */ target_el: a_expr AS ColLabel { $$ = makeNode(ResTarget); @@ -8757,6 +9862,22 @@ target_el: a_expr AS ColLabel $$->val = (Node *)$1; $$->location = @1; } + /* + * We support omitting AS only for column labels that aren't + * any known keyword. There is an ambiguity against postfix + * operators: is "a ! b" an infix expression, or a postfix + * expression and a column label? We prefer to resolve this + * as an infix expression, which we accomplish by assigning + * IDENT a precedence higher than POSTFIXOP. + */ + | a_expr IDENT + { + $$ = makeNode(ResTarget); + $$->name = $2; + $$->indirection = NIL; + $$->val = (Node *)$1; + $$->location = @1; + } | a_expr { $$ = makeNode(ResTarget); @@ -8768,7 +9889,7 @@ target_el: a_expr AS ColLabel | '*' { ColumnRef *n = makeNode(ColumnRef); - n->fields = list_make1(makeString("*")); + n->fields = list_make1(makeNode(A_Star)); n->location = @1; $$ = makeNode(ResTarget); @@ -8810,6 +9931,7 @@ qualified_name: $$->catalogname = NULL; $$->schemaname = NULL; $$->relname = $1; + $$->location = @1; } | relation_name indirection { @@ -8831,9 +9953,11 @@ qualified_name: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", - NameListToString(lcons(makeString($1), $2))))); + NameListToString(lcons(makeString($1), $2))), + scanner_errposition(@1))); break; } + $$->location = @1; } ; @@ -8878,31 +10002,19 @@ func_name: type_function_name */ AexprConst: Iconst { - A_Const *n = makeNode(A_Const); - n->val.type = T_Integer; - n->val.val.ival = $1; - $$ = (Node *)n; + $$ = makeIntConst($1, @1); } | FCONST { - A_Const *n = makeNode(A_Const); - n->val.type = T_Float; - n->val.val.str = $1; - $$ = (Node *)n; + $$ = makeFloatConst($1, @1); } | Sconst { - A_Const *n = makeNode(A_Const); - n->val.type = T_String; - n->val.val.str = $1; - $$ = (Node *)n; + $$ = makeStringConst($1, @1); } | BCONST { - A_Const *n = makeNode(A_Const); - n->val.type = T_BitString; - n->val.val.str = $1; - $$ = (Node *)n; + $$ = makeBitStringConst($1, @1); } | XCONST { @@ -8911,74 +10023,61 @@ AexprConst: Iconst * a <general literal> shall not be a * <bit string literal> or a <hex string literal>. */ - A_Const *n = makeNode(A_Const); - n->val.type = T_BitString; - n->val.val.str = $1; - $$ = (Node *)n; + $$ = makeBitStringConst($1, @1); } | func_name Sconst { /* generic type 'literal' syntax */ - A_Const *n = makeNode(A_Const); - n->typename = makeTypeNameFromNameList($1); - n->typename->location = @1; - n->val.type = T_String; - n->val.val.str = $2; - $$ = (Node *)n; + TypeName *t = makeTypeNameFromNameList($1); + t->location = @1; + $$ = makeStringConstCast($2, @2, t); } | func_name '(' expr_list ')' Sconst { /* generic syntax with a type modifier */ - A_Const *n = makeNode(A_Const); - n->typename = makeTypeNameFromNameList($1); - n->typename->typmods = $3; - n->typename->location = @1; - n->val.type = T_String; - n->val.val.str = $5; - $$ = (Node *)n; + TypeName *t = makeTypeNameFromNameList($1); + t->typmods = $3; + t->location = @1; + $$ = makeStringConstCast($5, @5, t); } | ConstTypename Sconst { - A_Const *n = makeNode(A_Const); - n->typename = $1; - n->val.type = T_String; - n->val.val.str = $2; - $$ = (Node *)n; + $$ = makeStringConstCast($2, @2, $1); } | ConstInterval Sconst opt_interval { - A_Const *n = makeNode(A_Const); - n->typename = $1; - n->val.type = T_String; - n->val.val.str = $2; - /* precision is not specified, but fields may be... */ - if ($3 != INTERVAL_FULL_RANGE) - n->typename->typmods = list_make1(makeIntConst($3)); - $$ = (Node *)n; + TypeName *t = $1; + t->typmods = $3; + $$ = makeStringConstCast($2, @2, t); } | ConstInterval '(' Iconst ')' Sconst opt_interval { - A_Const *n = makeNode(A_Const); - n->typename = $1; - n->val.type = T_String; - n->val.val.str = $5; - n->typename->typmods = list_make2(makeIntConst($6), - makeIntConst($3)); - $$ = (Node *)n; + TypeName *t = $1; + if ($6 != NIL) + { + if (list_length($6) != 1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("interval precision specified twice"), + scanner_errposition(@1))); + t->typmods = lappend($6, makeIntConst($3, @3)); + } + else + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst($3, @3)); + $$ = makeStringConstCast($5, @5, t); } | TRUE_P { - $$ = (Node *)makeBoolAConst(TRUE); + $$ = makeBoolAConst(TRUE, @1); } | FALSE_P { - $$ = (Node *)makeBoolAConst(FALSE); + $$ = makeBoolAConst(FALSE, @1); } | NULL_P { - A_Const *n = makeNode(A_Const); - n->val.type = T_Null; - $$ = (Node *)n; + $$ = makeNullAConst(@1); } ; @@ -8986,8 +10085,9 @@ Iconst: ICONST { $$ = $1; }; Sconst: SCONST { $$ = $1; }; RoleId: ColId { $$ = $1; }; -SignedIconst: ICONST { $$ = $1; } - | '-' ICONST { $$ = - $2; } +SignedIconst: Iconst { $$ = $1; } + | '+' Iconst { $$ = + $2; } + | '-' Iconst { $$ = - $2; } ; /* @@ -9064,6 +10164,7 @@ unreserved_keyword: | CALLED | CASCADE | CASCADED + | CATALOG_P | CHAIN | CHARACTERISTICS | CHECKPOINT @@ -9078,6 +10179,7 @@ unreserved_keyword: | CONNECTION | CONSTRAINTS | CONTENT_P + | CONTINUE_P | CONVERSION_P | COPY | COST @@ -9088,6 +10190,7 @@ unreserved_keyword: | CURRENT_P | CURSOR | CYCLE + | DATA_P | DATABASE | DAY_P | DEALLOCATE @@ -9117,8 +10220,8 @@ unreserved_keyword: | EXPLAIN | EXTERNAL | FAMILY - | FETCH | FIRST_P + | FOLLOWING | FORCE | FORWARD | FUNCTION @@ -9128,6 +10231,7 @@ unreserved_keyword: | HEADER_P | HOLD | HOUR_P + | IDENTITY_P | IF_P | IMMEDIATE | IMMUTABLE @@ -9149,6 +10253,8 @@ unreserved_keyword: | LANGUAGE | LARGE_P | LAST_P + | LC_COLLATE_P + | LC_CTYPE_P | LEVEL | LISTEN | LOAD @@ -9183,12 +10289,15 @@ unreserved_keyword: | OIDS | OPERATOR | OPTION + | OPTIONS | OWNED | OWNER | PARSER | PARTIAL + | PARTITION | PASSWORD | PLANS + | PRECEDING | PREPARE | PREPARED | PRESERVE @@ -9197,9 +10306,11 @@ unreserved_keyword: | PROCEDURAL | PROCEDURE | QUOTE + | RANGE | READ | REASSIGN | RECHECK + | RECURSIVE | REINDEX | RELATIVE_P | RELEASE @@ -9224,6 +10335,7 @@ unreserved_keyword: | SECURITY | SEQUENCE | SERIALIZABLE + | SERVER | SESSION | SET | SHARE @@ -9252,6 +10364,7 @@ unreserved_keyword: | TRUNCATE | TRUSTED | TYPE_P + | UNBOUNDED | UNCOMMITTED | UNENCRYPTED | UNKNOWN @@ -9267,9 +10380,9 @@ unreserved_keyword: | VIEW | VOLATILE | WHITESPACE_P - | WITH | WITHOUT | WORK + | WRAPPER | WRITE | XML_P | YEAR_P @@ -9350,6 +10463,7 @@ type_func_name_keyword: | BETWEEN | BINARY | CROSS + | CURRENT_SCHEMA | FREEZE | FULL | ILIKE @@ -9362,6 +10476,7 @@ type_func_name_keyword: | NATURAL | NOTNULL | OUTER_P + | OVER | OVERLAPS | RIGHT | SIMILAR @@ -9392,6 +10507,7 @@ reserved_keyword: | COLUMN | CONSTRAINT | CREATE + | CURRENT_CATALOG | CURRENT_DATE | CURRENT_ROLE | CURRENT_TIME @@ -9406,6 +10522,7 @@ reserved_keyword: | END_P | EXCEPT | FALSE_P + | FETCH | FOR | FOREIGN | FROM @@ -9447,8 +10564,11 @@ reserved_keyword: | UNIQUE | USER | USING + | VARIADIC | WHEN | WHERE + | WINDOW + | WITH ; @@ -9460,7 +10580,8 @@ SpecialRuleRelation: else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("OLD used in query that is not in a rule"))); + errmsg("OLD used in query that is not in a rule"), + scanner_errposition(@1))); } | NEW { @@ -9469,14 +10590,15 @@ SpecialRuleRelation: else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("NEW used in query that is not in a rule"))); + errmsg("NEW used in query that is not in a rule"), + scanner_errposition(@1))); } ; %% static Node * -makeColumnRef(char *relname, List *indirection, int location) +makeColumnRef(char *colname, List *indirection, int location) { /* * Generate a ColumnRef node, with an A_Indirection node added if there @@ -9498,95 +10620,128 @@ makeColumnRef(char *relname, List *indirection, int location) if (nfields == 0) { /* easy case - all indirection goes to A_Indirection */ - c->fields = list_make1(makeString(relname)); - i->indirection = indirection; + c->fields = list_make1(makeString(colname)); + i->indirection = check_indirection(indirection); } else { /* got to split the list in two */ - i->indirection = list_copy_tail(indirection, nfields); + i->indirection = check_indirection(list_copy_tail(indirection, + nfields)); indirection = list_truncate(indirection, nfields); - c->fields = lcons(makeString(relname), indirection); + c->fields = lcons(makeString(colname), indirection); } i->arg = (Node *) c; return (Node *) i; } + else if (IsA(lfirst(l), A_Star)) + { + /* We only allow '*' at the end of a ColumnRef */ + if (lnext(l) != NULL) + yyerror("improper use of \"*\""); + } nfields++; } /* No subscripting, so all indirection gets added to field list */ - c->fields = lcons(makeString(relname), indirection); + c->fields = lcons(makeString(colname), indirection); return (Node *) c; } static Node * -makeTypeCast(Node *arg, TypeName *typename) +makeTypeCast(Node *arg, TypeName *typename, int location) { - /* - * Simply generate a TypeCast node. - * - * Earlier we would determine whether an A_Const would - * be acceptable, however Domains require coerce_type() - * to process them -- applying constraints as required. - */ TypeCast *n = makeNode(TypeCast); n->arg = arg; n->typename = typename; + n->location = location; return (Node *) n; } static Node * -makeStringConst(char *str, TypeName *typename) +makeStringConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_String; n->val.val.str = str; - n->typename = typename; + n->location = location; return (Node *)n; } static Node * -makeIntConst(int val) +makeStringConstCast(char *str, int location, TypeName *typename) +{ + Node *s = makeStringConst(str, location); + + return makeTypeCast(s, typename, -1); +} + +static Node * +makeIntConst(int val, int location) { A_Const *n = makeNode(A_Const); + n->val.type = T_Integer; n->val.val.ival = val; - n->typename = SystemTypeName("int4"); + n->location = location; return (Node *)n; } static Node * -makeFloatConst(char *str) +makeFloatConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_Float; n->val.val.str = str; - n->typename = SystemTypeName("float8"); + n->location = location; + + return (Node *)n; +} + +static Node * +makeBitStringConst(char *str, int location) +{ + A_Const *n = makeNode(A_Const); + + n->val.type = T_BitString; + n->val.val.str = str; + n->location = location; + + return (Node *)n; +} + +static Node * +makeNullAConst(int location) +{ + A_Const *n = makeNode(A_Const); + + n->val.type = T_Null; + n->location = location; return (Node *)n; } static Node * -makeAConst(Value *v) +makeAConst(Value *v, int location) { Node *n; switch (v->type) { case T_Float: - n = makeFloatConst(v->val.str); + n = makeFloatConst(v->val.str, location); break; case T_Integer: - n = makeIntConst(v->val.ival); + n = makeIntConst(v->val.ival, location); break; case T_String: default: - n = makeStringConst(v->val.str, NULL); + n = makeStringConst(v->val.str, location); break; } @@ -9594,16 +10749,18 @@ makeAConst(Value *v) } /* makeBoolAConst() - * Create an A_Const node and initialize to a boolean constant. + * Create an A_Const string node and put it inside a boolean cast. */ -static A_Const * -makeBoolAConst(bool state) +static Node * +makeBoolAConst(bool state, int location) { A_Const *n = makeNode(A_Const); + n->val.type = T_String; - n->val.val.str = (state? "t": "f"); - n->typename = SystemTypeName("bool"); - return n; + n->val.val.str = (state ? "t" : "f"); + n->location = location; + + return makeTypeCast((Node *)n, SystemTypeName("bool"), -1); } /* makeOverlaps() @@ -9620,16 +10777,20 @@ makeOverlaps(List *largs, List *rargs, int location) else if (list_length(largs) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on left side of OVERLAPS expression"))); + errmsg("wrong number of parameters on left side of OVERLAPS expression"), + scanner_errposition(location))); if (list_length(rargs) == 1) rargs = lappend(rargs, rargs); else if (list_length(rargs) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on right side of OVERLAPS expression"))); + errmsg("wrong number of parameters on right side of OVERLAPS expression"), + scanner_errposition(location))); n->args = list_concat(largs, rargs); n->agg_star = FALSE; n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; n->location = location; return n; } @@ -9648,8 +10809,6 @@ check_qualified_name(List *names) { if (!IsA(lfirst(i), String)) yyerror("syntax error"); - else if (strcmp(strVal(lfirst(i)), "*") == 0) - yyerror("syntax error"); } } @@ -9667,12 +10826,31 @@ check_func_name(List *names) { if (!IsA(lfirst(i), String)) yyerror("syntax error"); - else if (strcmp(strVal(lfirst(i)), "*") == 0) - yyerror("syntax error"); } return names; } +/* check_indirection --- check the result of indirection production + * + * We only allow '*' at the end of the list, but it's hard to enforce that + * in the grammar, so do it here. + */ +static List * +check_indirection(List *indirection) +{ + ListCell *l; + + foreach(l, indirection) + { + if (IsA(lfirst(l), A_Star)) + { + if (lnext(l) != NULL) + yyerror("improper use of \"*\""); + } + } + return indirection; +} + /* extractArgTypes() * Given a list of FunctionParameter nodes, extract a list of just the * argument types (TypeNames) for input parameters only. This is what @@ -9689,7 +10867,7 @@ extractArgTypes(List *parameters) { FunctionParameter *p = (FunctionParameter *) lfirst(i); - if (p->mode != FUNC_PARAM_OUT) /* keep if IN or INOUT */ + if (p->mode != FUNC_PARAM_OUT && p->mode != FUNC_PARAM_TABLE) result = lappend(result, p->argType); } return result; @@ -9714,8 +10892,11 @@ findLeftmostSelect(SelectStmt *node) static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, - Node *limitOffset, Node *limitCount) + Node *limitOffset, Node *limitCount, + WithClause *withClause) { + Assert(IsA(stmt, SelectStmt)); + /* * Tests here are to reject constructs like * (SELECT foo ORDER BY bar) ORDER BY baz @@ -9725,7 +10906,8 @@ insertSelectOptions(SelectStmt *stmt, if (stmt->sortClause) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("multiple ORDER BY clauses not allowed"))); + errmsg("multiple ORDER BY clauses not allowed"), + scanner_errposition(exprLocation((Node *) sortClause)))); stmt->sortClause = sortClause; } /* We can handle multiple locking clauses, though */ @@ -9735,7 +10917,8 @@ insertSelectOptions(SelectStmt *stmt, if (stmt->limitOffset) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("multiple OFFSET clauses not allowed"))); + errmsg("multiple OFFSET clauses not allowed"), + scanner_errposition(exprLocation(limitOffset)))); stmt->limitOffset = limitOffset; } if (limitCount) @@ -9743,9 +10926,19 @@ insertSelectOptions(SelectStmt *stmt, if (stmt->limitCount) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("multiple LIMIT clauses not allowed"))); + errmsg("multiple LIMIT clauses not allowed"), + scanner_errposition(exprLocation(limitCount)))); stmt->limitCount = limitCount; } + if (withClause) + { + if (stmt->withClause) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("multiple WITH clauses not allowed"), + scanner_errposition(exprLocation((Node *) withClause)))); + stmt->withClause = withClause; + } } static Node * @@ -9773,20 +10966,13 @@ SystemFuncName(char *name) * Build a properly-qualified reference to a built-in type. * * typmod is defaulted, but may be changed afterwards by caller. + * Likewise for the location. */ TypeName * SystemTypeName(char *name) { - return makeTypeNameFromNameList(list_make1(makeString(name))); -} - -/* parser_init() - * Initialize to parse one query string - */ -void -parser_init(void) -{ - QueryIsRule = FALSE; + return makeTypeNameFromNameList(list_make2(makeString("pg_catalog"), + makeString(name))); } /* exprIsNullConstant() @@ -9799,8 +10985,7 @@ exprIsNullConstant(Node *arg) { A_Const *con = (A_Const *) arg; - if (con->val.type == T_Null && - con->typename == NULL) + if (con->val.type == T_Null) return TRUE; } return FALSE; @@ -9826,6 +11011,9 @@ doNegate(Node *n, int location) { A_Const *con = (A_Const *)n; + /* report the constant's location as that of the '-' sign */ + con->location = location; + if (con->val.type == T_Integer) { con->val.val.ival = -con->val.val.ival; @@ -9861,7 +11049,18 @@ doNegateFloat(Value *v) } static Node * -makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args) +makeAArrayExpr(List *elements, int location) +{ + A_ArrayExpr *n = makeNode(A_ArrayExpr); + + n->elements = elements; + n->location = location; + return (Node *) n; +} + +static Node * +makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, + int location) { XmlExpr *x = makeNode(XmlExpr); @@ -9874,9 +11073,66 @@ makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args) x->named_args = named_args; x->arg_names = NIL; x->args = args; + /* xmloption, if relevant, must be filled in by caller */ + /* type and typmod will be filled in during parse analysis */ + x->location = location; return (Node *) x; } +/* parser_init() + * Initialize to parse one query string + */ +void +parser_init(void) +{ + QueryIsRule = FALSE; +} + +/* + * Merge the input and output parameters of a table function. + */ +static List * +mergeTableFuncParameters(List *func_args, List *columns) +{ + ListCell *lc; + + /* Explicit OUT and INOUT parameters shouldn't be used in this syntax */ + foreach(lc, func_args) + { + FunctionParameter *p = (FunctionParameter *) lfirst(lc); + + if (p->mode != FUNC_PARAM_IN && p->mode != FUNC_PARAM_VARIADIC) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("OUT and INOUT arguments aren't allowed in TABLE functions"))); + } + + return list_concat(func_args, columns); +} + +/* + * Determine return type of a TABLE function. A single result column + * returns setof that column's type; otherwise return setof record. + */ +static TypeName * +TableFuncTypeName(List *columns) +{ + TypeName *result; + + if (list_length(columns) == 1) + { + FunctionParameter *p = (FunctionParameter *) linitial(columns); + + result = (TypeName *) copyObject(p->argType); + } + else + result = SystemTypeName("record"); + + result->setof = true; + + return result; +} + /* * Create a DefElem setting "oids" to the specified value. */ diff --git a/parser/keywords.c b/parser/keywords.c index 25aa0badc..36648c052 100644 --- a/parser/keywords.c +++ b/parser/keywords.c @@ -3,477 +3,29 @@ * keywords.c * lexical token lookup for key words in PostgreSQL * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.192 2007/09/24 01:29:29 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.212 2009/03/08 16:53:30 alvherre Exp $ * *------------------------------------------------------------------------- */ -#include "pool_parser.h" - -#include <ctype.h> -#include <string.h> #include "parsenodes.h" #include "gramparse.h" /* required before parser/parse.h! */ #include "keywords.h" #include "gram.h" -/* NB: This file is also used by pg_dump. */ - -/* - * List of keyword (name, token-value, category) entries. - * - * !!WARNING!!: This list must be sorted by ASCII name, because binary - * search is used to locate entries. - */ -static const ScanKeyword ScanKeywords[] = { - /* name, value, category */ - {"abort", ABORT_P, UNRESERVED_KEYWORD}, - {"absolute", ABSOLUTE_P, UNRESERVED_KEYWORD}, - {"access", ACCESS, UNRESERVED_KEYWORD}, - {"action", ACTION, UNRESERVED_KEYWORD}, - {"add", ADD_P, UNRESERVED_KEYWORD}, - {"admin", ADMIN, UNRESERVED_KEYWORD}, - {"after", AFTER, UNRESERVED_KEYWORD}, - {"aggregate", AGGREGATE, UNRESERVED_KEYWORD}, - {"all", ALL, RESERVED_KEYWORD}, - {"also", ALSO, UNRESERVED_KEYWORD}, - {"alter", ALTER, UNRESERVED_KEYWORD}, - {"always", ALWAYS, UNRESERVED_KEYWORD}, - {"analyse", ANALYSE, RESERVED_KEYWORD}, /* British spelling */ - {"analyze", ANALYZE, RESERVED_KEYWORD}, - {"and", AND, RESERVED_KEYWORD}, - {"any", ANY, RESERVED_KEYWORD}, - {"array", ARRAY, RESERVED_KEYWORD}, - {"as", AS, RESERVED_KEYWORD}, - {"asc", ASC, RESERVED_KEYWORD}, - {"assertion", ASSERTION, UNRESERVED_KEYWORD}, - {"assignment", ASSIGNMENT, UNRESERVED_KEYWORD}, - {"asymmetric", ASYMMETRIC, RESERVED_KEYWORD}, - {"at", AT, UNRESERVED_KEYWORD}, - {"authorization", AUTHORIZATION, TYPE_FUNC_NAME_KEYWORD}, - {"backward", BACKWARD, UNRESERVED_KEYWORD}, - {"before", BEFORE, UNRESERVED_KEYWORD}, - {"begin", BEGIN_P, UNRESERVED_KEYWORD}, - {"between", BETWEEN, TYPE_FUNC_NAME_KEYWORD}, - {"bigint", BIGINT, COL_NAME_KEYWORD}, - {"binary", BINARY, TYPE_FUNC_NAME_KEYWORD}, - {"bit", BIT, COL_NAME_KEYWORD}, - {"boolean", BOOLEAN_P, COL_NAME_KEYWORD}, - {"both", BOTH, RESERVED_KEYWORD}, - {"by", BY, UNRESERVED_KEYWORD}, - {"cache", CACHE, UNRESERVED_KEYWORD}, - {"called", CALLED, UNRESERVED_KEYWORD}, - {"cascade", CASCADE, UNRESERVED_KEYWORD}, - {"cascaded", CASCADED, UNRESERVED_KEYWORD}, - {"case", CASE, RESERVED_KEYWORD}, - {"cast", CAST, RESERVED_KEYWORD}, - {"chain", CHAIN, UNRESERVED_KEYWORD}, - {"char", CHAR_P, COL_NAME_KEYWORD}, - {"character", CHARACTER, COL_NAME_KEYWORD}, - {"characteristics", CHARACTERISTICS, UNRESERVED_KEYWORD}, - {"check", CHECK, RESERVED_KEYWORD}, - {"checkpoint", CHECKPOINT, UNRESERVED_KEYWORD}, - {"class", CLASS, UNRESERVED_KEYWORD}, - {"close", CLOSE, UNRESERVED_KEYWORD}, - {"cluster", CLUSTER, UNRESERVED_KEYWORD}, - {"coalesce", COALESCE, COL_NAME_KEYWORD}, - {"collate", COLLATE, RESERVED_KEYWORD}, - {"column", COLUMN, RESERVED_KEYWORD}, - {"comment", COMMENT, UNRESERVED_KEYWORD}, - {"commit", COMMIT, UNRESERVED_KEYWORD}, - {"committed", COMMITTED, UNRESERVED_KEYWORD}, - {"concurrently", CONCURRENTLY, UNRESERVED_KEYWORD}, - {"configuration", CONFIGURATION, UNRESERVED_KEYWORD}, - {"connection", CONNECTION, UNRESERVED_KEYWORD}, - {"constraint", CONSTRAINT, RESERVED_KEYWORD}, - {"constraints", CONSTRAINTS, UNRESERVED_KEYWORD}, - {"content", CONTENT_P, UNRESERVED_KEYWORD}, - {"conversion", CONVERSION_P, UNRESERVED_KEYWORD}, - {"copy", COPY, UNRESERVED_KEYWORD}, - {"cost", COST, UNRESERVED_KEYWORD}, - {"create", CREATE, RESERVED_KEYWORD}, - {"createdb", CREATEDB, UNRESERVED_KEYWORD}, - {"createrole", CREATEROLE, UNRESERVED_KEYWORD}, - {"createuser", CREATEUSER, UNRESERVED_KEYWORD}, - {"cross", CROSS, TYPE_FUNC_NAME_KEYWORD}, - {"csv", CSV, UNRESERVED_KEYWORD}, - {"current", CURRENT_P, UNRESERVED_KEYWORD}, - {"current_date", CURRENT_DATE, RESERVED_KEYWORD}, - {"current_role", CURRENT_ROLE, RESERVED_KEYWORD}, - {"current_time", CURRENT_TIME, RESERVED_KEYWORD}, - {"current_timestamp", CURRENT_TIMESTAMP, RESERVED_KEYWORD}, - {"current_user", CURRENT_USER, RESERVED_KEYWORD}, - {"cursor", CURSOR, UNRESERVED_KEYWORD}, - {"cycle", CYCLE, UNRESERVED_KEYWORD}, - {"database", DATABASE, UNRESERVED_KEYWORD}, - {"day", DAY_P, UNRESERVED_KEYWORD}, - {"deallocate", DEALLOCATE, UNRESERVED_KEYWORD}, - {"dec", DEC, COL_NAME_KEYWORD}, - {"decimal", DECIMAL_P, COL_NAME_KEYWORD}, - {"declare", DECLARE, UNRESERVED_KEYWORD}, - {"default", DEFAULT, RESERVED_KEYWORD}, - {"defaults", DEFAULTS, UNRESERVED_KEYWORD}, - {"deferrable", DEFERRABLE, RESERVED_KEYWORD}, - {"deferred", DEFERRED, UNRESERVED_KEYWORD}, - {"definer", DEFINER, UNRESERVED_KEYWORD}, - {"delete", DELETE_P, UNRESERVED_KEYWORD}, - {"delimiter", DELIMITER, UNRESERVED_KEYWORD}, - {"delimiters", DELIMITERS, UNRESERVED_KEYWORD}, - {"desc", DESC, RESERVED_KEYWORD}, - {"dictionary", DICTIONARY, UNRESERVED_KEYWORD}, - {"disable", DISABLE_P, UNRESERVED_KEYWORD}, - {"discard", DISCARD, UNRESERVED_KEYWORD}, - {"distinct", DISTINCT, RESERVED_KEYWORD}, - {"do", DO, RESERVED_KEYWORD}, - {"document", DOCUMENT_P, UNRESERVED_KEYWORD}, - {"domain", DOMAIN_P, UNRESERVED_KEYWORD}, - {"double", DOUBLE_P, UNRESERVED_KEYWORD}, - {"drop", DROP, UNRESERVED_KEYWORD}, - {"each", EACH, UNRESERVED_KEYWORD}, - {"else", ELSE, RESERVED_KEYWORD}, - {"enable", ENABLE_P, UNRESERVED_KEYWORD}, - {"encoding", ENCODING, UNRESERVED_KEYWORD}, - {"encrypted", ENCRYPTED, UNRESERVED_KEYWORD}, - {"end", END_P, RESERVED_KEYWORD}, - {"enum", ENUM_P, UNRESERVED_KEYWORD}, - {"escape", ESCAPE, UNRESERVED_KEYWORD}, - {"except", EXCEPT, RESERVED_KEYWORD}, - {"excluding", EXCLUDING, UNRESERVED_KEYWORD}, - {"exclusive", EXCLUSIVE, UNRESERVED_KEYWORD}, - {"execute", EXECUTE, UNRESERVED_KEYWORD}, - {"exists", EXISTS, COL_NAME_KEYWORD}, - {"explain", EXPLAIN, UNRESERVED_KEYWORD}, - {"external", EXTERNAL, UNRESERVED_KEYWORD}, - {"extract", EXTRACT, COL_NAME_KEYWORD}, - {"false", FALSE_P, RESERVED_KEYWORD}, - {"family", FAMILY, UNRESERVED_KEYWORD}, - {"fetch", FETCH, UNRESERVED_KEYWORD}, - {"first", FIRST_P, UNRESERVED_KEYWORD}, - {"float", FLOAT_P, COL_NAME_KEYWORD}, - {"for", FOR, RESERVED_KEYWORD}, - {"force", FORCE, UNRESERVED_KEYWORD}, - {"foreign", FOREIGN, RESERVED_KEYWORD}, - {"forward", FORWARD, UNRESERVED_KEYWORD}, - {"freeze", FREEZE, TYPE_FUNC_NAME_KEYWORD}, - {"from", FROM, RESERVED_KEYWORD}, - {"full", FULL, TYPE_FUNC_NAME_KEYWORD}, - {"function", FUNCTION, UNRESERVED_KEYWORD}, - {"global", GLOBAL, UNRESERVED_KEYWORD}, - {"grant", GRANT, RESERVED_KEYWORD}, - {"granted", GRANTED, UNRESERVED_KEYWORD}, - {"greatest", GREATEST, COL_NAME_KEYWORD}, - {"group", GROUP_P, RESERVED_KEYWORD}, - {"handler", HANDLER, UNRESERVED_KEYWORD}, - {"having", HAVING, RESERVED_KEYWORD}, - {"header", HEADER_P, UNRESERVED_KEYWORD}, - {"hold", HOLD, UNRESERVED_KEYWORD}, - {"hour", HOUR_P, UNRESERVED_KEYWORD}, - {"if", IF_P, UNRESERVED_KEYWORD}, - {"ilike", ILIKE, TYPE_FUNC_NAME_KEYWORD}, - {"immediate", IMMEDIATE, UNRESERVED_KEYWORD}, - {"immutable", IMMUTABLE, UNRESERVED_KEYWORD}, - {"implicit", IMPLICIT_P, UNRESERVED_KEYWORD}, - {"in", IN_P, RESERVED_KEYWORD}, - {"including", INCLUDING, UNRESERVED_KEYWORD}, - {"increment", INCREMENT, UNRESERVED_KEYWORD}, - {"index", INDEX, UNRESERVED_KEYWORD}, - {"indexes", INDEXES, UNRESERVED_KEYWORD}, - {"inherit", INHERIT, UNRESERVED_KEYWORD}, - {"inherits", INHERITS, UNRESERVED_KEYWORD}, - {"initially", INITIALLY, RESERVED_KEYWORD}, - {"inner", INNER_P, TYPE_FUNC_NAME_KEYWORD}, - {"inout", INOUT, COL_NAME_KEYWORD}, - {"input", INPUT_P, UNRESERVED_KEYWORD}, - {"insensitive", INSENSITIVE, UNRESERVED_KEYWORD}, - {"insert", INSERT, UNRESERVED_KEYWORD}, - {"instead", INSTEAD, UNRESERVED_KEYWORD}, - {"int", INT_P, COL_NAME_KEYWORD}, - {"integer", INTEGER, COL_NAME_KEYWORD}, - {"intersect", INTERSECT, RESERVED_KEYWORD}, - {"interval", INTERVAL, COL_NAME_KEYWORD}, - {"into", INTO, RESERVED_KEYWORD}, - {"invoker", INVOKER, UNRESERVED_KEYWORD}, - {"is", IS, TYPE_FUNC_NAME_KEYWORD}, - {"isnull", ISNULL, TYPE_FUNC_NAME_KEYWORD}, - {"isolation", ISOLATION, UNRESERVED_KEYWORD}, - {"join", JOIN, TYPE_FUNC_NAME_KEYWORD}, - {"key", KEY, UNRESERVED_KEYWORD}, - {"lancompiler", LANCOMPILER, UNRESERVED_KEYWORD}, - {"language", LANGUAGE, UNRESERVED_KEYWORD}, - {"large", LARGE_P, UNRESERVED_KEYWORD}, - {"last", LAST_P, UNRESERVED_KEYWORD}, - {"leading", LEADING, RESERVED_KEYWORD}, - {"least", LEAST, COL_NAME_KEYWORD}, - {"left", LEFT, TYPE_FUNC_NAME_KEYWORD}, - {"level", LEVEL, UNRESERVED_KEYWORD}, - {"like", LIKE, TYPE_FUNC_NAME_KEYWORD}, - {"limit", LIMIT, RESERVED_KEYWORD}, - {"listen", LISTEN, UNRESERVED_KEYWORD}, - {"load", LOAD, UNRESERVED_KEYWORD}, - {"local", LOCAL, UNRESERVED_KEYWORD}, - {"localtime", LOCALTIME, RESERVED_KEYWORD}, - {"localtimestamp", LOCALTIMESTAMP, RESERVED_KEYWORD}, - {"location", LOCATION, UNRESERVED_KEYWORD}, - {"lock", LOCK_P, UNRESERVED_KEYWORD}, - {"login", LOGIN_P, UNRESERVED_KEYWORD}, - {"mapping", MAPPING, UNRESERVED_KEYWORD}, - {"match", MATCH, UNRESERVED_KEYWORD}, - {"maxvalue", MAXVALUE, UNRESERVED_KEYWORD}, - {"minute", MINUTE_P, UNRESERVED_KEYWORD}, - {"minvalue", MINVALUE, UNRESERVED_KEYWORD}, - {"mode", MODE, UNRESERVED_KEYWORD}, - {"month", MONTH_P, UNRESERVED_KEYWORD}, - {"move", MOVE, UNRESERVED_KEYWORD}, - {"name", NAME_P, UNRESERVED_KEYWORD}, - {"names", NAMES, UNRESERVED_KEYWORD}, - {"national", NATIONAL, COL_NAME_KEYWORD}, - {"natural", NATURAL, TYPE_FUNC_NAME_KEYWORD}, - {"nchar", NCHAR, COL_NAME_KEYWORD}, - {"new", NEW, RESERVED_KEYWORD}, - {"next", NEXT, UNRESERVED_KEYWORD}, - {"no", NO, UNRESERVED_KEYWORD}, - {"nocreatedb", NOCREATEDB, UNRESERVED_KEYWORD}, - {"nocreaterole", NOCREATEROLE, UNRESERVED_KEYWORD}, - {"nocreateuser", NOCREATEUSER, UNRESERVED_KEYWORD}, - {"noinherit", NOINHERIT, UNRESERVED_KEYWORD}, - {"nologin", NOLOGIN_P, UNRESERVED_KEYWORD}, - {"none", NONE, COL_NAME_KEYWORD}, - {"nosuperuser", NOSUPERUSER, UNRESERVED_KEYWORD}, - {"not", NOT, RESERVED_KEYWORD}, - {"nothing", NOTHING, UNRESERVED_KEYWORD}, - {"notify", NOTIFY, UNRESERVED_KEYWORD}, - {"notnull", NOTNULL, TYPE_FUNC_NAME_KEYWORD}, - {"nowait", NOWAIT, UNRESERVED_KEYWORD}, - {"null", NULL_P, RESERVED_KEYWORD}, - {"nullif", NULLIF, COL_NAME_KEYWORD}, - {"nulls", NULLS_P, UNRESERVED_KEYWORD}, - {"numeric", NUMERIC, COL_NAME_KEYWORD}, - {"object", OBJECT_P, UNRESERVED_KEYWORD}, - {"of", OF, UNRESERVED_KEYWORD}, - {"off", OFF, RESERVED_KEYWORD}, - {"offset", OFFSET, RESERVED_KEYWORD}, - {"oids", OIDS, UNRESERVED_KEYWORD}, - {"old", OLD, RESERVED_KEYWORD}, - {"on", ON, RESERVED_KEYWORD}, - {"only", ONLY, RESERVED_KEYWORD}, - {"operator", OPERATOR, UNRESERVED_KEYWORD}, - {"option", OPTION, UNRESERVED_KEYWORD}, - {"or", OR, RESERVED_KEYWORD}, - {"order", ORDER, RESERVED_KEYWORD}, - {"out", OUT_P, COL_NAME_KEYWORD}, - {"outer", OUTER_P, TYPE_FUNC_NAME_KEYWORD}, - {"overlaps", OVERLAPS, TYPE_FUNC_NAME_KEYWORD}, - {"overlay", OVERLAY, COL_NAME_KEYWORD}, - {"owned", OWNED, UNRESERVED_KEYWORD}, - {"owner", OWNER, UNRESERVED_KEYWORD}, - {"parser", PARSER, UNRESERVED_KEYWORD}, - {"partial", PARTIAL, UNRESERVED_KEYWORD}, - {"password", PASSWORD, UNRESERVED_KEYWORD}, - {"placing", PLACING, RESERVED_KEYWORD}, - {"plans", PLANS, UNRESERVED_KEYWORD}, - {"position", POSITION, COL_NAME_KEYWORD}, - {"precision", PRECISION, COL_NAME_KEYWORD}, - {"prepare", PREPARE, UNRESERVED_KEYWORD}, - {"prepared", PREPARED, UNRESERVED_KEYWORD}, - {"preserve", PRESERVE, UNRESERVED_KEYWORD}, - {"primary", PRIMARY, RESERVED_KEYWORD}, - {"prior", PRIOR, UNRESERVED_KEYWORD}, - {"privileges", PRIVILEGES, UNRESERVED_KEYWORD}, - {"procedural", PROCEDURAL, UNRESERVED_KEYWORD}, - {"procedure", PROCEDURE, UNRESERVED_KEYWORD}, - {"quote", QUOTE, UNRESERVED_KEYWORD}, - {"read", READ, UNRESERVED_KEYWORD}, - {"real", REAL, COL_NAME_KEYWORD}, - {"reassign", REASSIGN, UNRESERVED_KEYWORD}, - {"recheck", RECHECK, UNRESERVED_KEYWORD}, - {"references", REFERENCES, RESERVED_KEYWORD}, - {"reindex", REINDEX, UNRESERVED_KEYWORD}, - {"relative", RELATIVE_P, UNRESERVED_KEYWORD}, - {"release", RELEASE, UNRESERVED_KEYWORD}, - {"rename", RENAME, UNRESERVED_KEYWORD}, - {"repeatable", REPEATABLE, UNRESERVED_KEYWORD}, - {"replace", REPLACE, UNRESERVED_KEYWORD}, - {"replica", REPLICA, UNRESERVED_KEYWORD}, - {"reset", RESET, UNRESERVED_KEYWORD}, - {"restart", RESTART, UNRESERVED_KEYWORD}, - {"restrict", RESTRICT, UNRESERVED_KEYWORD}, - {"returning", RETURNING, RESERVED_KEYWORD}, - {"returns", RETURNS, UNRESERVED_KEYWORD}, - {"revoke", REVOKE, UNRESERVED_KEYWORD}, - {"right", RIGHT, TYPE_FUNC_NAME_KEYWORD}, - {"role", ROLE, UNRESERVED_KEYWORD}, - {"rollback", ROLLBACK, UNRESERVED_KEYWORD}, - {"row", ROW, COL_NAME_KEYWORD}, - {"rows", ROWS, UNRESERVED_KEYWORD}, - {"rule", RULE, UNRESERVED_KEYWORD}, - {"savepoint", SAVEPOINT, UNRESERVED_KEYWORD}, - {"schema", SCHEMA, UNRESERVED_KEYWORD}, - {"scroll", SCROLL, UNRESERVED_KEYWORD}, - {"search", SEARCH, UNRESERVED_KEYWORD}, - {"second", SECOND_P, UNRESERVED_KEYWORD}, - {"security", SECURITY, UNRESERVED_KEYWORD}, - {"select", SELECT, RESERVED_KEYWORD}, - {"sequence", SEQUENCE, UNRESERVED_KEYWORD}, - {"serializable", SERIALIZABLE, UNRESERVED_KEYWORD}, - {"session", SESSION, UNRESERVED_KEYWORD}, - {"session_user", SESSION_USER, RESERVED_KEYWORD}, - {"set", SET, UNRESERVED_KEYWORD}, - {"setof", SETOF, COL_NAME_KEYWORD}, - {"share", SHARE, UNRESERVED_KEYWORD}, - {"show", SHOW, UNRESERVED_KEYWORD}, - {"similar", SIMILAR, TYPE_FUNC_NAME_KEYWORD}, - {"simple", SIMPLE, UNRESERVED_KEYWORD}, - {"smallint", SMALLINT, COL_NAME_KEYWORD}, - {"some", SOME, RESERVED_KEYWORD}, - {"stable", STABLE, UNRESERVED_KEYWORD}, - {"standalone", STANDALONE_P, UNRESERVED_KEYWORD}, - {"start", START, UNRESERVED_KEYWORD}, - {"statement", STATEMENT, UNRESERVED_KEYWORD}, - {"statistics", STATISTICS, UNRESERVED_KEYWORD}, - {"stdin", STDIN, UNRESERVED_KEYWORD}, - {"stdout", STDOUT, UNRESERVED_KEYWORD}, - {"storage", STORAGE, UNRESERVED_KEYWORD}, - {"strict", STRICT_P, UNRESERVED_KEYWORD}, - {"strip", STRIP_P, UNRESERVED_KEYWORD}, - {"substring", SUBSTRING, COL_NAME_KEYWORD}, - {"superuser", SUPERUSER_P, UNRESERVED_KEYWORD}, - {"symmetric", SYMMETRIC, RESERVED_KEYWORD}, - {"sysid", SYSID, UNRESERVED_KEYWORD}, - {"system", SYSTEM_P, UNRESERVED_KEYWORD}, - {"table", TABLE, RESERVED_KEYWORD}, - {"tablespace", TABLESPACE, UNRESERVED_KEYWORD}, - {"temp", TEMP, UNRESERVED_KEYWORD}, - {"template", TEMPLATE, UNRESERVED_KEYWORD}, - {"temporary", TEMPORARY, UNRESERVED_KEYWORD}, - {"text", TEXT_P, UNRESERVED_KEYWORD}, - {"then", THEN, RESERVED_KEYWORD}, - {"time", TIME, COL_NAME_KEYWORD}, - {"timestamp", TIMESTAMP, COL_NAME_KEYWORD}, - {"to", TO, RESERVED_KEYWORD}, - {"trailing", TRAILING, RESERVED_KEYWORD}, - {"transaction", TRANSACTION, UNRESERVED_KEYWORD}, - {"treat", TREAT, COL_NAME_KEYWORD}, - {"trigger", TRIGGER, UNRESERVED_KEYWORD}, - {"trim", TRIM, COL_NAME_KEYWORD}, - {"true", TRUE_P, RESERVED_KEYWORD}, - {"truncate", TRUNCATE, UNRESERVED_KEYWORD}, - {"trusted", TRUSTED, UNRESERVED_KEYWORD}, - {"type", TYPE_P, UNRESERVED_KEYWORD}, - {"uncommitted", UNCOMMITTED, UNRESERVED_KEYWORD}, - {"unencrypted", UNENCRYPTED, UNRESERVED_KEYWORD}, - {"union", UNION, RESERVED_KEYWORD}, - {"unique", UNIQUE, RESERVED_KEYWORD}, - {"unknown", UNKNOWN, UNRESERVED_KEYWORD}, - {"unlisten", UNLISTEN, UNRESERVED_KEYWORD}, - {"until", UNTIL, UNRESERVED_KEYWORD}, - {"update", UPDATE, UNRESERVED_KEYWORD}, - {"user", USER, RESERVED_KEYWORD}, - {"using", USING, RESERVED_KEYWORD}, - {"vacuum", VACUUM, UNRESERVED_KEYWORD}, - {"valid", VALID, UNRESERVED_KEYWORD}, - {"validator", VALIDATOR, UNRESERVED_KEYWORD}, - {"value", VALUE_P, UNRESERVED_KEYWORD}, - {"values", VALUES, COL_NAME_KEYWORD}, - {"varchar", VARCHAR, COL_NAME_KEYWORD}, - {"varying", VARYING, UNRESERVED_KEYWORD}, - {"verbose", VERBOSE, TYPE_FUNC_NAME_KEYWORD}, - {"version", VERSION_P, UNRESERVED_KEYWORD}, - {"view", VIEW, UNRESERVED_KEYWORD}, - {"volatile", VOLATILE, UNRESERVED_KEYWORD}, - {"when", WHEN, RESERVED_KEYWORD}, - {"where", WHERE, RESERVED_KEYWORD}, - {"whitespace", WHITESPACE_P, UNRESERVED_KEYWORD}, - /* - * XXX we mark WITH as reserved to force it to be quoted in dumps, even - * though it is currently unreserved according to gram.y. This is because - * we expect we'll have to make it reserved to implement SQL WITH clauses. - * If that patch manages to do without reserving WITH, adjust this entry - * at that time; in any case this should be back in sync with gram.y - * after WITH clauses are implemented. - */ - {"with", WITH, RESERVED_KEYWORD}, - {"without", WITHOUT, UNRESERVED_KEYWORD}, - {"work", WORK, UNRESERVED_KEYWORD}, - {"write", WRITE, UNRESERVED_KEYWORD}, - {"xml", XML_P, UNRESERVED_KEYWORD}, - {"xmlattributes", XMLATTRIBUTES, COL_NAME_KEYWORD}, - {"xmlconcat", XMLCONCAT, COL_NAME_KEYWORD}, - {"xmlelement", XMLELEMENT, COL_NAME_KEYWORD}, - {"xmlforest", XMLFOREST, COL_NAME_KEYWORD}, - {"xmlparse", XMLPARSE, COL_NAME_KEYWORD}, - {"xmlpi", XMLPI, COL_NAME_KEYWORD}, - {"xmlroot", XMLROOT, COL_NAME_KEYWORD}, - {"xmlserialize", XMLSERIALIZE, COL_NAME_KEYWORD}, - {"year", YEAR_P, UNRESERVED_KEYWORD}, - {"yes", YES_P, UNRESERVED_KEYWORD}, - {"zone", ZONE, UNRESERVED_KEYWORD}, -}; - -/* - * 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) -{ - 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; +#define PG_KEYWORD(a,b,c) {a,b,c}, - /* - * 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 = &ScanKeywords[0]; - high = endof(ScanKeywords) - 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; - } +const ScanKeyword ScanKeywords[] = { +#include "kwlist.h" +}; - return NULL; -} +/* End of ScanKeywords, for use in kwlookup.c and elsewhere */ +const ScanKeyword *LastScanKeyword = endof(ScanKeywords); diff --git a/parser/keywords.h b/parser/keywords.h index b7e2e1c16..8809fe937 100644 --- a/parser/keywords.h +++ b/parser/keywords.h @@ -4,11 +4,11 @@ * lexical token lookup for reserved words in postgres SQL * * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/parser/keywords.h,v 1.20 2004/12/31 22:03:38 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/parser/keywords.h,v 1.26 2009/01/01 17:24:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -25,10 +25,13 @@ typedef struct ScanKeyword { const char *name; /* in lower case */ - short value; /* grammar's token code */ - short category; /* see codes above */ + int16 value; /* grammar's token code */ + int16 category; /* see codes above */ } ScanKeyword; +extern const ScanKeyword ScanKeywords[]; +extern const ScanKeyword *LastScanKeyword; + extern const ScanKeyword *ScanKeywordLookup(const char *text); #endif /* KEYWORDS_H */ diff --git a/parser/makefuncs.c b/parser/makefuncs.c index 58401629d..a12e7322f 100644 --- a/parser/makefuncs.c +++ b/parser/makefuncs.c @@ -4,13 +4,13 @@ * creator functions for primitive nodes. The functions here are for * the most frequently created nodes. * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.57 2007/09/06 17:31:58 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.64 2009/04/04 21:12:31 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -21,11 +21,11 @@ #include <stdlib.h> #include <string.h> +#define Assert #define ereport(a,b) #define elog(a,b) -#define BOOLOID 16 - +#define BOOLOID 16 /* XXX */ /* * makeA_Expr - @@ -91,6 +91,9 @@ makeVar(Index varno, var->varnoold = varno; var->varoattno = varattno; + /* Likewise, we just set location to "unknown" here */ + var->location = -1; + return var; } @@ -136,6 +139,7 @@ flatCopyTargetEntry(TargetEntry *src_tle) { TargetEntry *tle = makeNode(TargetEntry); + Assert(IsA(src_tle, TargetEntry)); memcpy(tle, src_tle, sizeof(TargetEntry)); return tle; } @@ -174,6 +178,7 @@ makeConst(Oid consttype, cnst->constvalue = constvalue; cnst->constisnull = constisnull; cnst->constbyval = constbyval; + cnst->location = -1; /* "unknown" */ return cnst; } @@ -221,12 +226,13 @@ makeBoolConst(bool value, bool isnull) * creates a BoolExpr node */ Expr * -makeBoolExpr(BoolExprType boolop, List *args) +makeBoolExpr(BoolExprType boolop, List *args, int location) { BoolExpr *b = makeNode(BoolExpr); b->boolop = boolop; b->args = args; + b->location = location; return (Expr *) b; } @@ -261,6 +267,7 @@ makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, CoercionForm rformat) r->resulttype = rtype; r->resulttypmod = rtypmod; r->relabelformat = rformat; + r->location = -1; return r; } @@ -270,7 +277,7 @@ makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, CoercionForm rformat) * creates a RangeVar node (rather oversimplified case) */ RangeVar * -makeRangeVar(char *schemaname, char *relname) +makeRangeVar(char *schemaname, char *relname, int location) { RangeVar *r = makeNode(RangeVar); @@ -280,6 +287,7 @@ makeRangeVar(char *schemaname, char *relname) r->inhOpt = INH_DEFAULT; r->istemp = false; r->alias = NULL; + r->location = location; return r; } @@ -346,6 +354,7 @@ makeFuncExpr(Oid funcid, Oid rettype, List *args, CoercionForm fformat) funcexpr->funcretset = false; /* only allowed case here */ funcexpr->funcformat = fformat; funcexpr->args = args; + funcexpr->location = -1; return funcexpr; } @@ -353,13 +362,37 @@ makeFuncExpr(Oid funcid, Oid rettype, List *args, CoercionForm fformat) /* * makeDefElem - * build a DefElem node + * + * This is sufficient for the "typical" case with an unqualified option name + * and no special action. */ DefElem * makeDefElem(char *name, Node *arg) { DefElem *res = makeNode(DefElem); + res->defnamespace = NULL; + res->defname = name; + res->arg = arg; + res->defaction = DEFELEM_UNSPEC; + + return res; +} + +/* + * makeDefElemExtended - + * build a DefElem node with all fields available to be specified + */ +DefElem * +makeDefElemExtended(char *namespace, char *name, Node *arg, + DefElemAction defaction) +{ + DefElem *res = makeNode(DefElem); + + res->defnamespace = namespace; res->defname = name; res->arg = arg; + res->defaction = defaction; + return res; } diff --git a/parser/makefuncs.h b/parser/makefuncs.h index 8c49d026c..472cb9a45 100644 --- a/parser/makefuncs.h +++ b/parser/makefuncs.h @@ -4,11 +4,11 @@ * prototypes for the creator functions (for primitive nodes) * * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/makefuncs.h,v 1.60 2007/09/06 17:31:58 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/makefuncs.h,v 1.67 2009/04/04 21:12:31 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -50,14 +50,14 @@ extern Const *makeNullConst(Oid consttype, int32 consttypmod); extern Node *makeBoolConst(bool value, bool isnull); -extern Expr *makeBoolExpr(BoolExprType boolop, List *args); +extern Expr *makeBoolExpr(BoolExprType boolop, List *args, int location); extern Alias *makeAlias(const char *aliasname, List *colnames); extern RelabelType *makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, CoercionForm rformat); -extern RangeVar *makeRangeVar(char *schemaname, char *relname); +extern RangeVar *makeRangeVar(char *schemaname, char *relname, int location); extern TypeName *makeTypeName(char *typnam); extern TypeName *makeTypeNameFromNameList(List *names); @@ -67,5 +67,7 @@ extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype, List *args, CoercionForm fformat); extern DefElem *makeDefElem(char *name, Node *arg); +extern DefElem *makeDefElemExtended(char *namespace, char *name, Node *arg, + DefElemAction defaction); #endif /* MAKEFUNC_H */ diff --git a/parser/nodes.c b/parser/nodes.c index f65ec7099..8a1a6751c 100644 --- a/parser/nodes.c +++ b/parser/nodes.c @@ -19,6 +19,7 @@ */ /*#include "postgres.h"*/ +#include "../pool_type.h" #include "nodes.h" /* diff --git a/parser/nodes.h b/parser/nodes.h index a41461b71..665404bda 100644 --- a/parser/nodes.h +++ b/parser/nodes.h @@ -4,11 +4,11 @@ * Definitions for tagged nodes. * * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/nodes.h,v 1.204 2007/09/03 18:46:30 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/nodes.h,v 1.222 2009/04/04 21:12:31 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -45,6 +45,7 @@ typedef enum NodeTag T_Plan = 100, T_Result, T_Append, + T_RecursiveUnion, T_BitmapAnd, T_BitmapOr, T_Scan, @@ -56,6 +57,8 @@ typedef enum NodeTag T_SubqueryScan, T_FunctionScan, T_ValuesScan, + T_CteScan, + T_WorkTableScan, T_Join, T_NestLoop, T_MergeJoin, @@ -64,10 +67,13 @@ typedef enum NodeTag T_Sort, T_Group, T_Agg, + T_WindowAgg, T_Unique, T_Hash, T_SetOp, T_Limit, + /* this one isn't a subclass of Plan: */ + T_PlanInvalItem, /* * TAGS FOR PLAN STATE NODES (execnodes.h) @@ -77,6 +83,7 @@ typedef enum NodeTag T_PlanState = 200, T_ResultState, T_AppendState, + T_RecursiveUnionState, T_BitmapAndState, T_BitmapOrState, T_ScanState, @@ -88,6 +95,8 @@ typedef enum NodeTag T_SubqueryScanState, T_FunctionScanState, T_ValuesScanState, + T_CteScanState, + T_WorkTableScanState, T_JoinState, T_NestLoopState, T_MergeJoinState, @@ -96,6 +105,7 @@ typedef enum NodeTag T_SortState, T_GroupState, T_AggState, + T_WindowAggState, T_UniqueState, T_HashState, T_SetOpState, @@ -111,6 +121,7 @@ typedef enum NodeTag T_Const, T_Param, T_Aggref, + T_WindowFunc, T_ArrayRef, T_FuncExpr, T_OpExpr, @@ -119,6 +130,7 @@ typedef enum NodeTag T_BoolExpr, T_SubLink, T_SubPlan, + T_AlternativeSubPlan, T_FieldSelect, T_FieldStore, T_RelabelType, @@ -156,11 +168,13 @@ typedef enum NodeTag T_ExprState = 400, T_GenericExprState, T_AggrefExprState, + T_WindowFuncExprState, T_ArrayRefExprState, T_FuncExprState, T_ScalarArrayOpExprState, T_BoolExprState, T_SubPlanState, + T_AlternativeSubPlanState, T_FieldSelectState, T_FieldStoreState, T_CoerceViaIOState, @@ -203,9 +217,10 @@ typedef enum NodeTag T_PathKey, T_RestrictInfo, T_InnerIndexscanInfo, - T_OuterJoinInfo, - T_InClauseInfo, + T_PlaceHolderVar, + T_SpecialJoinInfo, T_AppendRelInfo, + T_PlaceHolderInfo, T_PlannerParamItem, /* @@ -314,6 +329,15 @@ typedef enum NodeTag T_CreateEnumStmt, T_AlterTSDictionaryStmt, T_AlterTSConfigurationStmt, + T_CreateFdwStmt, + T_AlterFdwStmt, + T_DropFdwStmt, + T_CreateForeignServerStmt, + T_AlterForeignServerStmt, + T_DropForeignServerStmt, + T_CreateUserMappingStmt, + T_AlterUserMappingStmt, + T_DropUserMappingStmt, /* * TAGS FOR PARSE TREE NODES (parsenodes.h) @@ -323,11 +347,14 @@ typedef enum NodeTag T_ParamRef, T_A_Const, T_FuncCall, + T_A_Star, T_A_Indices, T_A_Indirection, + T_A_ArrayExpr, T_ResTarget, T_TypeCast, T_SortBy, + T_WindowDef, T_RangeSubselect, T_RangeFunction, T_TypeName, @@ -336,18 +363,20 @@ typedef enum NodeTag T_Constraint, T_DefElem, T_RangeTblEntry, - T_SortClause, - T_GroupClause, + T_SortGroupClause, + T_WindowClause, T_FkConstraint, T_PrivGrantee, T_FuncWithArgs, - T_PrivTarget, + T_AccessPriv, T_CreateOpClassItem, T_InhRelation, T_FunctionParameter, T_LockingClause, T_RowMarkClause, T_XmlSerialize, + T_WithClause, + T_CommonTableExpr, /* * TAGS FOR RANDOM OTHER STUFF @@ -359,6 +388,7 @@ typedef enum NodeTag */ T_TriggerData = 950, /* in commands/trigger.h */ T_ReturnSetInfo, /* in nodes/execnodes.h */ + T_WindowObjectData, /* private in nodeWindowAgg.c */ T_TIDBitmap /* in nodes/tidbitmap.h */ } NodeTag; @@ -383,20 +413,40 @@ typedef struct Node * !WARNING!: Avoid using newNode directly. You should be using the * macro makeNode. eg. to create a Query node, use makeNode(Query) * + * Note: the size argument should always be a compile-time constant, so the + * apparent risk of multiple evaluation doesn't matter in practice. + */ +#ifdef __GNUC__ + +/* With GCC, we can use a compound statement within an expression */ +/* XXX AssertMacro was removed */ +#define newNode(size, tag) \ +({ Node *_result; \ + _result = (Node *) palloc0fast(size); \ + _result->type = (tag); \ + _result; \ +}) + +#else + +/* * There is no way to dereference the palloc'ed pointer to assign the * tag, and also return the pointer itself, so we need a holder variable. * Fortunately, this macro isn't recursive so we just define * a global variable for this purpose. */ -extern Node *newNodeMacroHolder; +extern PGDLLIMPORT Node *newNodeMacroHolder; #define newNode(size, tag) \ ( \ - newNodeMacroHolder = (Node *) palloc0(size), \ + AssertMacro((size) >= sizeof(Node)), /* need the tag, at least */ \ + newNodeMacroHolder = (Node *) palloc0fast(size), \ newNodeMacroHolder->type = (tag), \ newNodeMacroHolder \ ) +#endif /* __GNUC__ */ + #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_)) #define NodeSetTag(nodeptr,t) (((Node*)(nodeptr))->type = (t)) @@ -426,7 +476,7 @@ extern void *copyObject(void *obj); /* * nodes/equalfuncs.c */ -extern int equal(void *a, void *b); +extern bool equal(void *a, void *b); /* @@ -474,31 +524,57 @@ typedef enum CmdType typedef enum JoinType { /* - * The canonical kinds of joins + * The canonical kinds of joins according to the SQL JOIN syntax. + * Only these codes can appear in parser output (e.g., JoinExpr nodes). */ JOIN_INNER, /* matching tuple pairs only */ - JOIN_LEFT, /* pairs + unmatched outer tuples */ - JOIN_FULL, /* pairs + unmatched outer + unmatched inner */ - JOIN_RIGHT, /* pairs + unmatched inner tuples */ + JOIN_LEFT, /* pairs + unmatched LHS tuples */ + JOIN_FULL, /* pairs + unmatched LHS + unmatched RHS */ + JOIN_RIGHT, /* pairs + unmatched RHS tuples */ /* - * These are used for queries like WHERE foo IN (SELECT bar FROM ...). - * Only JOIN_IN is actually implemented in the executor; the others are - * defined for internal use in the planner. + * Semijoins and anti-semijoins (as defined in relational theory) do + * not appear in the SQL JOIN syntax, but there are standard idioms for + * representing them (e.g., using EXISTS). The planner recognizes these + * cases and converts them to joins. So the planner and executor must + * support these codes. NOTE: in JOIN_SEMI output, it is unspecified + * which matching RHS row is joined to. In JOIN_ANTI output, the row + * is guaranteed to be null-extended. */ - JOIN_IN, /* at most one result per outer row */ - JOIN_REVERSE_IN, /* at most one result per inner row */ - JOIN_UNIQUE_OUTER, /* outer path must be made unique */ - JOIN_UNIQUE_INNER /* inner path must be made unique */ + JOIN_SEMI, /* 1 copy of each LHS row that has match(es) */ + JOIN_ANTI, /* 1 copy of each LHS row that has no match */ + + /* + * These codes are used internally in the planner, but are not supported + * by the executor (nor, indeed, by most of the planner). + */ + JOIN_UNIQUE_OUTER, /* LHS path must be made unique */ + JOIN_UNIQUE_INNER /* RHS path must be made unique */ /* * We might need additional join types someday. */ } JoinType; +/* + * OUTER joins are those for which pushed-down quals must behave differently + * from the join's own quals. This is in fact everything except INNER and + * SEMI joins. However, this macro must also exclude the JOIN_UNIQUE symbols + * since those are temporary proxies for what will eventually be an INNER + * join. + * + * Note: semijoins are a hybrid case, but we choose to treat them as not + * being outer joins. This is okay principally because the SQL syntax makes + * it impossible to have a pushed-down qual that refers to the inner relation + * of a semijoin; so there is no strong need to distinguish join quals from + * pushed-down quals. This is convenient because for almost all purposes, + * quals attached to a semijoin can be treated the same as innerjoin quals. + */ #define IS_OUTER_JOIN(jointype) \ - ((jointype) == JOIN_LEFT || \ - (jointype) == JOIN_FULL || \ - (jointype) == JOIN_RIGHT) + (((1 << (jointype)) & \ + ((1 << JOIN_LEFT) | \ + (1 << JOIN_FULL) | \ + (1 << JOIN_RIGHT) | \ + (1 << JOIN_ANTI))) != 0) #endif /* NODES_H */ diff --git a/parser/outfuncs.c b/parser/outfuncs.c index dadc74278..c3e7f7bf8 100644 --- a/parser/outfuncs.c +++ b/parser/outfuncs.c @@ -3,13 +3,13 @@ * outfuncs.c * Output functions for Postgres tree nodes. * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.261.2.1 2005/11/14 23:54:34 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.360 2009/06/11 14:48:58 momjian Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -81,8 +81,8 @@ static void _outColumnDef(String *str, ColumnDef *node); static void _outTypeName(String *str, TypeName *node); static void _outTypeCast(String *str, TypeCast *node); static void _outIndexElem(String *str, IndexElem *node); -static void _outSortClause(String *str, SortClause *node); -static void _outGroupClause(String *str, GroupClause *node); +static void _outWithClause(String *str, WithClause *node); +static void _outCommonTableExpr(String *str, CommonTableExpr *node); static void _outSetOperationStmt(String *str, SetOperationStmt *node); static void _outAExpr(String *str, A_Expr *node); static void _outValue(String *str, Value *value); @@ -92,6 +92,7 @@ static void _outAConst(String *str, A_Const *node); static void _outA_Indices(String *str, A_Indices *node); static void _outA_Indirection(String *str, A_Indirection *node); static void _outResTarget(String *str, ResTarget *node); +static void _outWindowDef(String *str, WindowDef *node); static void _outConstraint(String *str, Constraint *node); static void _outFkConstraint(String *str, FkConstraint *node); @@ -171,7 +172,6 @@ static void _outSetTransactionModeList(String *str, List *list); static void _outAlterTableCmd(String *str, AlterTableCmd *node); static void _outOptSeqList(String *str, List *options); static void _outPrivGrantee(String *str, PrivGrantee *node); -static void _outPrivTarget(String *str, PrivTarget *node); static void _outFuncWithArgs(String *str, FuncWithArgs *node); static void _outFunctionParameter(String *str, FunctionParameter *node); static void _outPrivilegeList(String *str, List *list); @@ -769,7 +769,9 @@ static void _outNotifyStmt(String *str, NotifyStmt *node) { string_append_char(str, "NOTIFY "); - _outNode(str, node->relation); + string_append_char(str, "\""); + string_append_char(str, node->conditionname); + string_append_char(str, "\""); } static void @@ -890,6 +892,9 @@ _outSelectStmt(String *str, SelectStmt *node) string_append_char(str, " AS"); } + if (node->withClause) + _outWithClause(str, node->withClause); + string_append_char(str, " SELECT "); if (node->distinctClause) @@ -928,6 +933,12 @@ _outSelectStmt(String *str, SelectStmt *node) string_append_char(str, " HAVING "); _outNode(str, node->havingClause); } + + if (node->windowClause) + { + string_append_char(str, " WINDOW "); + _outNode(str, node->windowClause); + } } if (node->sortClause) @@ -984,6 +995,19 @@ _outFuncCall(String *str, FuncCall *node) _outNode(str, node->args); string_append_char(str, ")"); + + if (node->over) + { + string_append_char(str, " OVER "); + if (node->over->name) + { + string_append_char(str, "\""); + string_append_char(str, node->over->name); + string_append_char(str, "\""); + } + else + _outWindowDef(str, node->over); + } } static void @@ -1022,45 +1046,104 @@ _outColumnDef(String *str, ColumnDef *node) static void _outTypeName(String *str, TypeName *node) { - ListCell *lc; - char dot = 0; - foreach (lc, node->names) - { - Value *v = (Value *) lfirst(lc); - char *typename = v->val.str; + /* don't quote SystemType name, because + * 1. char is not "char". + * 2. in 8.4, interval with fields cause error. + * =# SELECT '1'::"interval" year; + * ERROR: syntax error at or near "year" + * LINE 1: SELECT '1'::"interval" year; + */ + if (list_length(node->names) == 2 && + strcmp("pg_catalog", strVal(linitial(node->names))) == 0) + { + string_append_char(str, strVal(lsecond(node->names))); - if (dot == 0) - dot = 1; - else - string_append_char(str, "."); - if(node->typemod < 0) + if (strcmp("interval", strVal(lsecond(node->names))) == 0) { - string_append_char(str, "\""); - string_append_char(str, typename); - string_append_char(str, "\""); - } else - string_append_char(str, typename); + if (node->typmods != NIL) + { + A_Const *v = (A_Const *) linitial(node->typmods); + int mask = v->val.val.ival; + + /* precision for SECOND field. + * backword comaptibility. + * use `'1.2 second'::interval(0) second' + * not `'1.2 second'::interval second(0)'(standarad for 8.4). + */ + if ((INTERVAL_MASK(SECOND) & mask) && + list_length(node->typmods) == 2) + { + string_append_char(str, "("); + _outAConst(str, lsecond(node->typmods)); + string_append_char(str, ")"); + } + + /* optional fields */ + if (mask == INTERVAL_MASK(YEAR)) + string_append_char(str, " YEAR"); + else if (mask == INTERVAL_MASK(MONTH)) + string_append_char(str, " MONTH"); + else if (mask == INTERVAL_MASK(DAY)) + string_append_char(str, " DAY"); + else if (mask == INTERVAL_MASK(HOUR)) + string_append_char(str, " HOUR"); + else if (mask == INTERVAL_MASK(MINUTE)) + string_append_char(str, " MINUTE"); + else if (mask == INTERVAL_MASK(SECOND)) + string_append_char(str, " SECOND"); + else if (mask == (INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH))) + string_append_char(str, " YEAR TO MONTH"); + else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR))) + string_append_char(str, " DAY TO HOUR"); + else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE))) + string_append_char(str, " DAY TO MINUTE"); + else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND))) + string_append_char(str, " DAY TO SECOND"); + else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) + string_append_char(str, " HOUR TO MINUTE"); + else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND))) + string_append_char(str, " HOUR TO SECOND"); + else if (mask == (INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND))) + string_append_char(str, " MINUTE TO SECOND"); + } + + return; + } } - - if (node->typemod > 0) + else { - int lower; - char buf[16]; - string_append_char(str, "("); - snprintf(buf, 16, "%d", ((node->typemod - VARHDRSZ) >> 16) & 0x00FF); - string_append_char(str, buf); - lower = (node->typemod-VARHDRSZ) & 0x00FF; + ListCell *lc; + char dot = 0; - if(lower != 0) - { - char buf2[16]; - string_append_char(str, ","); - snprintf(buf2, 16, "%d",lower); - string_append_char(str, buf2); - } + foreach (lc, node->names) + { + Value *v = (Value *) lfirst(lc); + char *typename = v->val.str; - string_append_char(str, ")"); + if (dot == 0) + dot = 1; + else + string_append_char(str, "."); + if(node->typemod < 0) + { + string_append_char(str, "\""); + string_append_char(str, typename); + string_append_char(str, "\""); + } else + string_append_char(str, typename); + } + } + + /* precisions */ + if (node->typmods) + { + string_append_char(str, "("); + _outList(str, node->typmods); + string_append_char(str, ")"); } } @@ -1094,17 +1177,33 @@ _outIndexElem(String *str, IndexElem *node) } } - static void -_outSortClause(String *str, SortClause *node) +_outWithClause(String *str, WithClause *node) { + string_append_char(str, " WITH "); + if (node->recursive) + string_append_char(str, "RECURSIVE "); + _outList(str, node->ctes); } static void -_outGroupClause(String *str, GroupClause *node) +_outCommonTableExpr(String *str, CommonTableExpr *node) { + string_append_char(str, "\""); + string_append_char(str, node->ctename); + string_append_char(str, "\" "); + if (node->aliascolnames) + { + string_append_char(str, "("); + _outIdList(str, node->aliascolnames); + string_append_char(str, ") "); + } + + string_append_char(str, "AS ("); + _outNode(str, node->ctequery); + string_append_char(str, ")"); } static void @@ -1271,6 +1370,15 @@ _outColumnRef(String *str, ColumnRef *node) string_append_char(str, v->val.str); string_append_char(str, "\""); } + else if (IsA(n, A_Star)) + { + if (first == 0) + first = 1; + else + string_append_char(str, "."); + + string_append_char(str, "*"); + } } } @@ -1288,15 +1396,6 @@ static void _outAConst(String *str, A_Const *node) { char buf[16]; - char *name = NULL; - - if (node->typename) - { - Value *v = linitial(node->typename->names); - name = v->val.str; - _outNode(str, node->typename); - string_append_char(str, " "); - } switch (node->val.type) { @@ -1322,41 +1421,6 @@ _outAConst(String *str, A_Const *node) default: break; } - - if (name && (strcmp(name, "interval") == 0) && - node->typename->typmods) - { - A_Const *v = linitial(node->typename->typmods); - int mask = v->val.val.ival; - - if (mask == INTERVAL_MASK(YEAR)) - string_append_char(str, " YEAR"); - else if (mask == INTERVAL_MASK(MONTH)) - string_append_char(str, " MONTH"); - else if (mask == INTERVAL_MASK(DAY)) - string_append_char(str, " DAY"); - else if (mask == INTERVAL_MASK(HOUR)) - string_append_char(str, " HOUR"); - else if (mask == INTERVAL_MASK(MINUTE)) - string_append_char(str, " MINUTE"); - else if (mask == INTERVAL_MASK(SECOND)) - string_append_char(str, " SECOND"); - else if (mask == (INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH))) - string_append_char(str, " YEAR TO MONTH"); - else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR))) - string_append_char(str, " DAY TO HOUR"); - else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE))) - string_append_char(str, " DAY TO MINUTE"); - else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND))) - string_append_char(str, " DAY TO SECOND"); - else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) - string_append_char(str, " HOUR TO MINUTE"); - else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND))) - string_append_char(str, " HOUR TO SECOND"); - } } static void @@ -1403,6 +1467,67 @@ _outResTarget(String *str, ResTarget *node) } } +static void +_outWindowDef(String *str, WindowDef *node) +{ + if (node->name) + { + string_append_char(str, "\""); + string_append_char(str, node->name); + string_append_char(str, "\" AS "); + } + string_append_char(str, "("); + + if (node->refname) + { + string_append_char(str, "\""); + string_append_char(str, node->refname); + string_append_char(str, "\" "); + } + + if (node->partitionClause) + { + string_append_char(str, " PARTITION BY "); + _outNode(str, node->partitionClause); + } + + if (node->orderClause) + { + string_append_char(str, " ORDER BY "); + _outNode(str, node->orderClause); + } + + if (node->frameOptions != FRAMEOPTION_DEFAULTS) + { + if (node->frameOptions & FRAMEOPTION_RANGE) + string_append_char(str, " RANGE"); + else if (node->frameOptions & FRAMEOPTION_ROWS) + string_append_char(str, " ROWS"); + + if (node->frameOptions & FRAMEOPTION_BETWEEN) + string_append_char(str, " BETWEEN"); + + if (node->frameOptions & FRAMEOPTION_START_UNBOUNDED_PRECEDING) + string_append_char(str, " UNBOUNDED PRECEDING"); + else if (node->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + string_append_char(str, " UNBOUNDED FOLLOWING"); + else if (node->frameOptions & FRAMEOPTION_START_CURRENT_ROW) + string_append_char(str, " UNBOUNDED CURRENT ROW"); + + if (node->frameOptions & FRAMEOPTION_BETWEEN) + { + string_append_char(str, " AND"); + if (node->frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) + string_append_char(str, " UNBOUNDED PRECEDING"); + else if (node->frameOptions & FRAMEOPTION_END_UNBOUNDED_FOLLOWING) + string_append_char(str, " UNBOUNDED FOLLOWING"); + else if (node->frameOptions & FRAMEOPTION_END_CURRENT_ROW) + string_append_char(str, " UNBOUNDED CURRENT ROW"); + } + } + string_append_char(str, ")"); +} + static void _outConstraint(String *str, Constraint *node) { @@ -1834,13 +1959,21 @@ static void _outClosePortalStmt(String *str, ClosePortalStmt *node) static void _outListenStmt(String *str, ListenStmt *node) { string_append_char(str, "LISTEN "); - _outNode(str, node->relation); + string_append_char(str, "\""); + string_append_char(str, node->conditionname); + string_append_char(str, "\""); } static void _outUnlistenStmt(String *str, UnlistenStmt *node) { string_append_char(str, "UNLISTEN "); - _outNode(str, node->relation); + if (node->conditionname == NULL) + string_append_char(str, "*"); + else { + string_append_char(str, "\""); + string_append_char(str, node->conditionname); + string_append_char(str, "\""); + } } static void _outLoadStmt(String *str, LoadStmt *node) @@ -2852,7 +2985,7 @@ _outFuncName(String *str, List *func_name) static void _outCreateTrigStmt(String *str, CreateTrigStmt *node) { - int i, len; + bool has_events = false; if (node->isconstraint == TRUE) string_append_char(str, "CREATE CONSTRAINT TRIGGER \""); @@ -2866,18 +2999,33 @@ _outCreateTrigStmt(String *str, CreateTrigStmt *node) else string_append_char(str, "AFTER "); - len = strlen(node->actions); - for (i = 0; i < len; i++) + if (node->events & TRIGGER_TYPE_INSERT) { - if (i) + if (has_events) string_append_char(str, "OR "); - - if (node->actions[i] == 'i') - string_append_char(str, "INSERT "); - else if (node->actions[i] == 'd') - string_append_char(str, "DELETE "); - else - string_append_char(str, "UPDATE "); + string_append_char(str, "INSERT "); + has_events = true; + } + if (node->events & TRIGGER_TYPE_DELETE) + { + if (has_events) + string_append_char(str, "OR "); + string_append_char(str, "DELETE "); + has_events = true; + } + if (node->events & TRIGGER_TYPE_UPDATE) + { + if (has_events) + string_append_char(str, "OR "); + string_append_char(str, "UPDATE "); + has_events = true; + } + if (node->events & TRIGGER_TYPE_TRUNCATE) + { + if (has_events) + string_append_char(str, "OR "); + string_append_char(str, "TRUNCATE "); + has_events = true; } string_append_char(str, "ON "); @@ -3076,8 +3224,10 @@ _outCreateOpClassItem(String *str, CreateOpClassItem *node) _outNode(str, node->args); string_append_char(str, ")"); } + /* XXX if (node->recheck == TRUE) string_append_char(str, " RECHECK"); + */ break; case OPCLASS_ITEM_FUNCTION: @@ -3311,82 +3461,70 @@ _outFuncWithArgs(String *str, FuncWithArgs *node) } static void -_outPrivTarget(String *str, PrivTarget *node) +_outPrivGrantee(String *str, PrivGrantee *node) +{ + if (node->rolname == NULL) + string_append_char(str, "PUBLIC"); + else + { + string_append_char(str, "\""); + string_append_char(str, node->rolname); + string_append_char(str, "\""); + } +} + +static void +_outGrantStmt(String *str, GrantStmt *node) { + if (node->is_grant == true) + string_append_char(str, "GRANT "); + else + { + string_append_char(str, "REVOKE "); + if (node->grant_option == true) + string_append_char(str, "GRANT OPTION FOR "); + } + + _outPrivilegeList(str, node->privileges); + + string_append_char(str, " ON "); + switch (node->objtype) { case ACL_OBJECT_RELATION: - _outNode(str, node->objs); + _outNode(str, node->objects); break; case ACL_OBJECT_SEQUENCE: string_append_char(str, "SEQUENCE "); - _outNode(str, node->objs); + _outNode(str, node->objects); break; case ACL_OBJECT_FUNCTION: string_append_char(str, "FUNCTION "); - _outNode(str, node->objs); + _outNode(str, node->objects); break; case ACL_OBJECT_DATABASE: string_append_char(str, "DATABASE "); - _outIdList(str, node->objs); + _outIdList(str, node->objects); break; case ACL_OBJECT_LANGUAGE: string_append_char(str, "LANGUAGE "); - _outIdList(str, node->objs); + _outIdList(str, node->objects); break; case ACL_OBJECT_NAMESPACE: string_append_char(str, "SCHEMA "); - _outIdList(str, node->objs); + _outIdList(str, node->objects); break; case ACL_OBJECT_TABLESPACE: string_append_char(str, "TABLESPACE "); - _outIdList(str, node->objs); + _outIdList(str, node->objects); break; } -} - -static void -_outPrivGrantee(String *str, PrivGrantee *node) -{ - if (node->rolname == NULL) - string_append_char(str, "PUBLIC"); - else - { - string_append_char(str, "\""); - string_append_char(str, node->rolname); - string_append_char(str, "\""); - } -} - -static void -_outGrantStmt(String *str, GrantStmt *node) -{ - PrivTarget *n; - - if (node->is_grant == true) - string_append_char(str, "GRANT "); - else - { - string_append_char(str, "REVOKE "); - if (node->grant_option == true) - string_append_char(str, "GRANT OPTION FOR "); - } - - _outPrivilegeList(str, node->privileges); - - string_append_char(str, " ON "); - - n = makeNode(PrivTarget); - n->objtype = node->objtype; - n->objs = node->objects; - _outNode(str, n); - pfree(n); if (node->is_grant == true) string_append_char(str, " TO "); @@ -3716,25 +3854,25 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) break; case OBJECT_CONVERSION: - string_append_char(str, "CONVERSION "); - _outFuncName(str, node->object); - string_append_char(str, " OWNER TO \""); + string_append_char(str, "CONVERSION \""); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); string_append_char(str, node->newowner); string_append_char(str, "\""); break; case OBJECT_DATABASE: string_append_char(str, "DATABASE \""); - _outIdList(str, node->object); + string_append_char(str, strVal(linitial(node->object))); string_append_char(str, "\" OWNER TO \""); string_append_char(str, node->newowner); string_append_char(str, "\""); break; case OBJECT_DOMAIN: - string_append_char(str, "DOMAIN "); - _outFuncName(str, node->object); - string_append_char(str, " OWNER TO \""); + string_append_char(str, "DOMAIN \""); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); string_append_char(str, node->newowner); string_append_char(str, "\""); break; @@ -3749,6 +3887,14 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) string_append_char(str, "\""); break; + case OBJECT_LANGUAGE: + string_append_char(str, "LANGUAGE \""); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); + string_append_char(str, node->newowner); + string_append_char(str, "\""); + break; + case OBJECT_OPERATOR: string_append_char(str, "OPERATOR "); _outOperatorName(str, node->object); @@ -3769,25 +3915,67 @@ _outAlterOwnerStmt(String *str, AlterOwnerStmt *node) string_append_char(str, "\""); break; + case OBJECT_OPFAMILY: + string_append_char(str, "OPERATOR FAMILY "); + _outFuncName(str, node->object); + string_append_char(str, " USING "); + string_append_char(str, node->addname); + string_append_char(str, " OWNER TO \""); + string_append_char(str, node->newowner); + string_append_char(str, "\""); + break; + case OBJECT_SCHEMA: string_append_char(str, "SCHEMA \""); - string_append_char(str, linitial(node->object)); + string_append_char(str, strVal(linitial(node->object))); string_append_char(str, "\" OWNER TO \""); string_append_char(str, node->newowner); string_append_char(str, "\""); break; case OBJECT_TYPE: - string_append_char(str, "TYPE "); - _outFuncName(str, node->object); - string_append_char(str, " OWNER TO \""); + string_append_char(str, "TYPE \""); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); string_append_char(str, node->newowner); string_append_char(str, "\""); break; case OBJECT_TABLESPACE: string_append_char(str, "TABLESPACE \""); - string_append_char(str, linitial(node->object)); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); + string_append_char(str, node->newowner); + string_append_char(str, "\""); + break; + + case OBJECT_TSDICTIONARY: + string_append_char(str, "TEXT SEARCH DICTIONARY \""); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); + string_append_char(str, node->newowner); + string_append_char(str, "\""); + break; + + case OBJECT_TSCONFIGURATION: + string_append_char(str, "TEXT SEARCH CONFIGURATION \""); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); + string_append_char(str, node->newowner); + string_append_char(str, "\""); + break; + + case OBJECT_FDW: + string_append_char(str, "FOREIGN DATA WRAPPER \""); + string_append_char(str, strVal(linitial(node->object))); + string_append_char(str, "\" OWNER TO \""); + string_append_char(str, node->newowner); + string_append_char(str, "\""); + break; + + case OBJECT_FOREIGN_SERVER: + string_append_char(str, "SERVER \""); + string_append_char(str, strVal(linitial(node->object))); string_append_char(str, "\" OWNER TO \""); string_append_char(str, node->newowner); string_append_char(str, "\""); @@ -4530,8 +4718,12 @@ _outXmlExpr(String *str, XmlExpr *node) _outNode(str, linitial(node->args)); n = lsecond(node->args); - if (n->val.val.str[0] == 't') - string_append_char(str, " PRESERVE WHITESPACE"); + { + Node *arg = ((TypeCast *) n)->arg; + + if (((A_Const *) arg)->val.val.str[0] == 't') + string_append_char(str, " PRESERVE WHITESPACE"); + } string_append_char(str, ")"); break; @@ -4665,6 +4857,11 @@ _outNode(String *str, void *obj) case T_RangeVar: _outRangeVar(str, obj); break; + /* + case T_IntoClause: + _outIntoClause(str, obj); + break; + */ case T_Var: _outVar(str, obj); break; @@ -4677,6 +4874,11 @@ _outNode(String *str, void *obj) case T_Aggref: _outAggref(str, obj); break; + /* + case T_WindowFunc: + _outWindowFunc(str, obj); + break; + */ case T_ArrayRef: _outArrayRef(str, obj); break; @@ -4701,6 +4903,11 @@ _outNode(String *str, void *obj) case T_SubPlan: _outSubPlan(str, obj); break; + /* + case T_AlternativeSubPlan: + _outAlternativeSubPlan(str, obj); + break; + */ case T_FieldSelect: _outFieldSelect(str, obj); break; @@ -4710,6 +4917,14 @@ _outNode(String *str, void *obj) case T_RelabelType: _outRelabelType(str, obj); break; + /* + case T_CoerceViaIO: + _outCoerceViaIO(str, obj); + break; + case T_ArrayCoerceExpr: + _outArrayCoerceExpr(str, obj); + break; + */ case T_ConvertRowtypeExpr: _outConvertRowtypeExpr(str, obj); break; @@ -4728,6 +4943,11 @@ _outNode(String *str, void *obj) case T_RowExpr: _outRowExpr(str, obj); break; + /* + case T_RowCompareExpr: + _outRowCompareExpr(str, obj); + break; + */ case T_CoalesceExpr: _outCoalesceExpr(str, obj); break; @@ -4792,11 +5012,16 @@ _outNode(String *str, void *obj) case T_IndexElem: _outIndexElem(str, obj); break; - case T_SortClause: - _outSortClause(str, obj); + /* + case T_RowMarkClause: + _outRowMarkClause(str, obj); break; - case T_GroupClause: - _outGroupClause(str, obj); + */ + case T_WithClause: + _outWithClause(str, obj); + break; + case T_CommonTableExpr: + _outCommonTableExpr(str, obj); break; case T_SetOperationStmt: _outSetOperationStmt(str, obj); @@ -4816,15 +5041,28 @@ _outNode(String *str, void *obj) case T_A_Const: _outAConst(str, obj); break; + /* + case T_A_Star: + _outA_Star(str, obj); + break; + */ case T_A_Indices: _outA_Indices(str, obj); break; case T_A_Indirection: _outA_Indirection(str, obj); break; + /* + case T_A_ArrayExpr: + _outA_ArrayExpr(str, obj); + break; + */ case T_ResTarget: _outResTarget(str, obj); break; + case T_WindowDef: + _outWindowDef(str, obj); + break; case T_Constraint: _outConstraint(str, obj); break; @@ -5009,10 +5247,6 @@ _outNode(String *str, void *obj) _outGrantStmt(str, obj); break; - case T_PrivTarget: - _outPrivTarget(str, obj); - break; - case T_FuncWithArgs: _outFuncWithArgs(str, obj); break; @@ -5172,6 +5406,7 @@ _outNode(String *str, void *obj) case T_CurrentOfExpr: _outCurrentOfExpr(str, obj); + break; default: break; diff --git a/parser/parsenodes.h b/parser/parsenodes.h index fc59a8ab2..896082d12 100644 --- a/parser/parsenodes.h +++ b/parser/parsenodes.h @@ -3,21 +3,41 @@ * parsenodes.h * definitions for parse tree nodes * + * Many of the node types used in parsetrees include a "location" field. + * 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. * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.353 2007/09/03 18:46:30 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.393 2009/04/04 21:12:31 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef PARSENODES_H #define PARSENODES_H +#include "../pool_type.h" #include "primnodes.h" #include "value.h" +/* 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 */ + + /* Possible sources of a Query */ typedef enum QuerySource { @@ -44,7 +64,6 @@ typedef enum SortByNulls SORTBY_NULLS_LAST } SortByNulls; - /* * Grantable rights are encoded so that we can OR them together in a bitmask. * The present representation of AclItem limits us to 16 distinct rights, @@ -52,17 +71,18 @@ typedef enum SortByNulls * * Caution: changing these codes breaks stored ACLs, hence forces initdb. */ -typedef unsigned int AclMode; /* a bitmask of privilege bits */ +typedef uint32 AclMode; /* a bitmask of privilege bits */ #define ACL_INSERT (1<<0) /* for relations */ #define ACL_SELECT (1<<1) #define ACL_UPDATE (1<<2) #define ACL_DELETE (1<<3) -/* #define ACL_RULE (1<<4) unused, available */ +#define ACL_TRUNCATE (1<<4) #define ACL_REFERENCES (1<<5) #define ACL_TRIGGER (1<<6) #define ACL_EXECUTE (1<<7) /* for functions */ -#define ACL_USAGE (1<<8) /* for languages and namespaces */ +#define ACL_USAGE (1<<8) /* for languages, namespaces, FDWs, and + * servers */ #define ACL_CREATE (1<<9) /* for namespaces and databases */ #define ACL_CREATE_TEMP (1<<10) /* for databases */ #define ACL_CONNECT (1<<11) /* for databases */ @@ -108,7 +128,12 @@ typedef struct Query IntoClause *intoClause; /* target for SELECT INTO / CREATE TABLE AS */ bool hasAggs; /* has aggregates in tlist or havingQual */ + bool hasWindowFuncs; /* has window functions in tlist */ bool hasSubLinks; /* has subquery SubLink */ + bool hasDistinctOn; /* distinctClause is from DISTINCT ON */ + bool hasRecursive; /* WITH RECURSIVE was specified */ + + List *cteList; /* WITH list (of CommonTableExpr's) */ List *rtable; /* list of range table entries */ FromExpr *jointree; /* table join tree (FROM and WHERE clauses) */ @@ -117,13 +142,15 @@ typedef struct Query List *returningList; /* return-values list (of TargetEntry) */ - List *groupClause; /* a list of GroupClause's */ + List *groupClause; /* a list of SortGroupClause's */ Node *havingQual; /* qualifications applied to groups */ - List *distinctClause; /* a list of SortClause's */ + List *windowClause; /* a list of WindowClause's */ + + List *distinctClause; /* a list of SortGroupClause's */ - List *sortClause; /* a list of SortClause's */ + List *sortClause; /* a list of SortGroupClause's */ Node *limitOffset; /* # of result tuples to skip (int8 expr) */ Node *limitCount; /* # of result tuples to return (int8 expr) */ @@ -141,11 +168,6 @@ typedef struct Query * Most of these node types appear in raw parsetrees output by the grammar, * and get transformed to something else by the analyzer. A few of them * are used as-is in transformed querytrees. - * - * Many of the node types used in raw parsetrees include a "location" field. - * This is a byte (not character) offset in the original source text, to be - * used for positioning an error cursor when there is an analysis-time - * error related to the node. ****************************************************************************/ /* @@ -166,7 +188,6 @@ typedef struct TypeName NodeTag type; List *names; /* qualified name (list of Value strings) */ Oid typeid; /* type identified by OID */ - bool timezone; /* timezone specified? */ bool setof; /* is a set? */ bool pct_type; /* %TYPE specified? */ List *typmods; /* type modifier expression(s) */ @@ -178,8 +199,10 @@ typedef struct TypeName /* * ColumnRef - specifies a reference to a column, or possibly a whole tuple * - * The "fields" list must be nonempty; its last component may be "*" - * instead of a regular field name. + * The "fields" list must be nonempty. It can contain string Value nodes + * (representing names) and A_Star nodes (representing occurrence of a '*'). + * Currently, A_Star must appear only as the last list element --- the grammar + * is responsible for enforcing this! * * Note: any array subscripting or selection of fields from composite columns * is represented by an A_Indirection node above the ColumnRef. However, @@ -189,7 +212,7 @@ typedef struct TypeName typedef struct ColumnRef { NodeTag type; - List *fields; /* field names (list of Value strings) */ + List *fields; /* field names (Value strings) or A_Star */ int location; /* token location, or -1 if unknown */ } ColumnRef; @@ -200,6 +223,7 @@ typedef struct ParamRef { NodeTag type; int number; /* the number of the parameter */ + int location; /* token location, or -1 if unknown */ } ParamRef; /* @@ -230,29 +254,24 @@ typedef struct A_Expr } A_Expr; /* - * A_Const - a constant expression + * A_Const - a literal constant */ typedef struct A_Const { NodeTag type; - Value val; /* the value (with the tag) */ - TypeName *typename; /* typecast, or NULL if none */ + Value val; /* value (includes type info, see value.h) */ + int location; /* token location, or -1 if unknown */ } A_Const; /* * TypeCast - a CAST expression - * - * NOTE: for mostly historical reasons, A_Const parsenodes contain - * room for a TypeName; we only generate a separate TypeCast node if the - * argument to be casted is not a constant. In theory either representation - * would work, but the combined representation saves a bit of code in many - * productions in gram.y. */ typedef struct TypeCast { NodeTag type; Node *arg; /* the expression being casted */ TypeName *typename; /* the target type */ + int location; /* token location, or -1 if unknown */ } TypeCast; /* @@ -261,7 +280,8 @@ typedef struct TypeCast * agg_star indicates we saw a 'foo(*)' construct, while agg_distinct * indicates we saw 'foo(DISTINCT ...)'. In either case, the construct * *must* be an aggregate call. Otherwise, it might be either an - * aggregate or some other kind of function. + * aggregate or some other kind of function. However, if OVER is present + * it had better be an aggregate or window function. */ typedef struct FuncCall { @@ -270,41 +290,64 @@ typedef struct FuncCall List *args; /* the arguments (list of exprs) */ bool agg_star; /* argument was really '*' */ bool agg_distinct; /* arguments were labeled DISTINCT */ + bool func_variadic; /* last argument was labeled VARIADIC */ + struct WindowDef *over; /* OVER clause, if any */ int location; /* token location, or -1 if unknown */ } FuncCall; /* - * A_Indices - array reference or bounds ([lidx:uidx] or [uidx]) + * A_Star - '*' representing all columns of a table or compound field + * + * This can appear within ColumnRef.fields, A_Indirection.indirection, and + * ResTarget.indirection lists. + */ +typedef struct A_Star +{ + NodeTag type; +} A_Star; + +/* + * A_Indices - array subscript or slice bounds ([lidx:uidx] or [uidx]) */ typedef struct A_Indices { NodeTag type; - Node *lidx; /* could be NULL */ + Node *lidx; /* NULL if it's a single subscript */ Node *uidx; } A_Indices; /* * A_Indirection - select a field and/or array element from an expression * - * The indirection list can contain both A_Indices nodes (representing - * subscripting) and string Value nodes (representing field selection - * --- the string value is the name of the field to select). For example, - * a complex selection operation like + * The indirection list can contain A_Indices nodes (representing + * subscripting), string Value nodes (representing field selection --- the + * string value is the name of the field to select), and A_Star nodes + * (representing selection of all fields of a composite type). + * For example, a complex selection operation like * (foo).field1[42][7].field2 * would be represented with a single A_Indirection node having a 4-element * indirection list. * - * Note: as of Postgres 8.0, we don't support arrays of composite values, - * so cases in which a field select follows a subscript aren't actually - * semantically legal. However the parser is prepared to handle such. + * Currently, A_Star must appear only as the last list element --- the grammar + * is responsible for enforcing this! */ typedef struct A_Indirection { NodeTag type; Node *arg; /* the thing being selected from */ - List *indirection; /* subscripts and/or field names */ + List *indirection; /* subscripts and/or field names and/or * */ } A_Indirection; +/* + * A_ArrayExpr - an ARRAY[] construct + */ +typedef struct A_ArrayExpr +{ + NodeTag type; + List *elements; /* array element expressions */ + int location; /* token location, or -1 if unknown */ +} A_ArrayExpr; + /* * ResTarget - * result target (used in target list of pre-transformed parse trees) @@ -327,7 +370,7 @@ typedef struct ResTarget { NodeTag type; char *name; /* column name or NULL */ - List *indirection; /* subscripts and field names, or NIL */ + List *indirection; /* subscripts, field names, and '*', or NIL */ Node *val; /* the value expression to compute or assign */ int location; /* token location, or -1 if unknown */ } ResTarget; @@ -338,12 +381,55 @@ typedef struct ResTarget typedef struct SortBy { NodeTag type; - SortByDir sortby_dir; /* ASC/DESC/USING */ - SortByNulls sortby_nulls; /* NULLS FIRST/LAST */ - List *useOp; /* name of op to use, if SORTBY_USING */ Node *node; /* expression to sort on */ + SortByDir sortby_dir; /* ASC/DESC/USING/default */ + SortByNulls sortby_nulls; /* NULLS FIRST/LAST */ + List *useOp; /* name of op to use, if SORTBY_USING */ + int location; /* operator location, or -1 if none/unknown */ } SortBy; +/* + * WindowDef - raw representation of WINDOW and OVER clauses + * + * For entries in a WINDOW list, "name" is the window name being defined. + * For OVER clauses, we use "name" for the "OVER window" syntax, or "refname" + * for the "OVER (window)" syntax, which is subtly different --- the latter + * implies overriding the window frame clause. + */ +typedef struct WindowDef +{ + NodeTag type; + char *name; /* window's own name */ + char *refname; /* referenced window name, if any */ + List *partitionClause; /* PARTITION BY expression list */ + List *orderClause; /* ORDER BY (list of SortBy) */ + int frameOptions; /* frame_clause options, see below */ + int location; /* parse location, or -1 if none/unknown */ +} WindowDef; + +/* + * frameOptions is an OR of these bits. The NONDEFAULT and BETWEEN bits are + * used so that ruleutils.c can tell which properties were specified and + * which were defaulted; the correct behavioral bits must be set either way. + * The START_foo and END_foo options must come in pairs of adjacent bits for + * the convenience of gram.y, even though some of them are useless/invalid. + * We will need more bits (and fields) to cover the full SQL:2008 option set. + */ +#define FRAMEOPTION_NONDEFAULT 0x00001 /* any specified? */ +#define FRAMEOPTION_RANGE 0x00002 /* RANGE behavior */ +#define FRAMEOPTION_ROWS 0x00004 /* ROWS behavior */ +#define FRAMEOPTION_BETWEEN 0x00008 /* BETWEEN given? */ +#define FRAMEOPTION_START_UNBOUNDED_PRECEDING 0x00010 /* start is U. P. */ +#define FRAMEOPTION_END_UNBOUNDED_PRECEDING 0x00020 /* (disallowed) */ +#define FRAMEOPTION_START_UNBOUNDED_FOLLOWING 0x00040 /* (disallowed) */ +#define FRAMEOPTION_END_UNBOUNDED_FOLLOWING 0x00080 /* end is U. F. */ +#define FRAMEOPTION_START_CURRENT_ROW 0x00100 /* start is C. R. */ +#define FRAMEOPTION_END_CURRENT_ROW 0x00200 /* end is C. R. */ + +#define FRAMEOPTION_DEFAULTS \ + (FRAMEOPTION_RANGE | FRAMEOPTION_START_UNBOUNDED_PRECEDING | \ + FRAMEOPTION_END_CURRENT_ROW) + /* * RangeSubselect - subquery appearing in a FROM clause */ @@ -428,25 +514,43 @@ typedef struct IndexElem Node *expr; /* expression to index, or NULL */ List *opclass; /* name of desired opclass; NIL = default */ SortByDir ordering; /* ASC/DESC/default */ - SortByNulls nulls_ordering; /* FIRST/LAST/default */ + SortByNulls nulls_ordering; /* FIRST/LAST/default */ } IndexElem; /* - * DefElem - - * a definition (used in definition lists in the form of defname = arg) + * DefElem - a generic "name = value" option definition + * + * In some contexts the name can be qualified. Also, certain SQL commands + * allow a SET/ADD/DROP action to be attached to option settings, so it's + * convenient to carry a field for that too. (Note: currently, it is our + * practice that the grammar allows namespace and action only in statements + * where they are relevant; C code can just ignore those fields in other + * statements.) */ +typedef enum DefElemAction +{ + DEFELEM_UNSPEC, /* no action given */ + DEFELEM_SET, + DEFELEM_ADD, + DEFELEM_DROP +} DefElemAction; + typedef struct DefElem { NodeTag type; + char *defnamespace; /* NULL if unqualified name */ char *defname; Node *arg; /* a (Value *) or a (TypeName *) */ + DefElemAction defaction; /* unspecified action, or SET/ADD/DROP */ } DefElem; /* * LockingClause - raw representation of FOR UPDATE/SHARE options * * Note: lockedRels == NIL means "all relations in query". Otherwise it - * is a list of String nodes giving relation eref names. + * is a list of RangeVar nodes. (We use RangeVar mainly because it carries + * a location field --- currently, parse analysis insists on unqualified + * names in LockingClause.) */ typedef struct LockingClause { @@ -457,14 +561,15 @@ typedef struct LockingClause } LockingClause; /* - * XMLSERIALIZE + * XMLSERIALIZE (in raw parse tree only) */ typedef struct XmlSerialize { NodeTag type; - XmlOptionType xmloption; + XmlOptionType xmloption; /* DOCUMENT or CONTENT */ Node *expr; TypeName *typename; + int location; /* token location, or -1 if unknown */ } XmlSerialize; @@ -530,6 +635,15 @@ typedef struct XmlSerialize * then do the permissions checks using the access rights of that user, * not the current effective user ID. (This allows rules to act as * setuid gateways.) + * + * For SELECT/INSERT/UPDATE permissions, if the user doesn't have + * table-wide permissions then it is sufficient to have the permissions + * on all columns identified in selectedCols (for SELECT) and/or + * modifiedCols (for INSERT/UPDATE; we can tell which from the query type). + * selectedCols and modifiedCols are bitmapsets, which cannot have negative + * integer members, so we subtract FirstLowInvalidHeapAttributeNumber from + * column numbers before storing them in these fields. A whole-row Var + * reference is represented by setting the bit for InvalidAttrNumber. *-------------------- */ typedef enum RTEKind @@ -539,7 +653,8 @@ typedef enum RTEKind RTE_JOIN, /* join */ RTE_SPECIAL, /* special rule relation (NEW or OLD) */ RTE_FUNCTION, /* function in FROM */ - RTE_VALUES /* VALUES (<exprlist>), (<exprlist>), ... */ + RTE_VALUES, /* VALUES (<exprlist>), (<exprlist>), ... */ + RTE_CTE /* common table expr (WITH list element) */ } RTEKind; typedef struct RangeTblEntry @@ -551,7 +666,7 @@ typedef struct RangeTblEntry /* * XXX the fields applicable to only some rte kinds should be merged into * a union. I didn't do this yet because the diffs would impact a lot of - * code that is being actively worked on. FIXME later. + * code that is being actively worked on. FIXME someday. */ /* @@ -564,6 +679,20 @@ typedef struct RangeTblEntry */ Query *subquery; /* the sub-query */ + /* + * Fields valid for a join RTE (else NULL/zero): + * + * joinaliasvars is a list of Vars or COALESCE expressions corresponding + * to the columns of the join result. An alias Var referencing column K + * of the join result can be replaced by the K'th element of joinaliasvars + * --- but to simplify the task of reverse-listing aliases correctly, we + * do not do that until planning time. In a Query loaded from a stored + * rule, it is also possible for joinaliasvars items to be NULL Consts, + * denoting columns dropped since the rule was made. + */ + JoinType jointype; /* type of join */ + List *joinaliasvars; /* list of alias-var expansions */ + /* * Fields valid for a function RTE (else NULL): * @@ -581,18 +710,13 @@ typedef struct RangeTblEntry List *values_lists; /* list of expression lists */ /* - * Fields valid for a join RTE (else NULL/zero): - * - * joinaliasvars is a list of Vars or COALESCE expressions corresponding - * to the columns of the join result. An alias Var referencing column K - * of the join result can be replaced by the K'th element of joinaliasvars - * --- but to simplify the task of reverse-listing aliases correctly, we - * do not do that until planning time. In a Query loaded from a stored - * rule, it is also possible for joinaliasvars items to be NULL Consts, - * denoting columns dropped since the rule was made. + * Fields valid for a CTE RTE (else NULL/zero): */ - JoinType jointype; /* type of join */ - List *joinaliasvars; /* list of alias-var expansions */ + 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 */ /* * Fields valid in all RTEs: @@ -603,60 +727,151 @@ typedef struct RangeTblEntry bool inFromCl; /* present in FROM clause? */ AclMode requiredPerms; /* bitmask of required access permissions */ Oid checkAsUser; /* if valid, check access as this role */ + Bitmapset *selectedCols; /* columns needing SELECT permission */ + Bitmapset *modifiedCols; /* columns needing INSERT/UPDATE permission */ } RangeTblEntry; /* - * SortClause - - * representation of ORDER BY clauses + * SortGroupClause - + * representation of ORDER BY, GROUP BY, PARTITION BY, + * DISTINCT, DISTINCT ON items + * + * You might think that ORDER BY is only interested in defining ordering, + * and GROUP/DISTINCT are only interested in defining equality. However, + * one way to implement grouping is to sort and then apply a "uniq"-like + * filter. So it's also interesting to keep track of possible sort operators + * for GROUP/DISTINCT, and in particular to try to sort for the grouping + * in a way that will also yield a requested ORDER BY ordering. So we need + * to be able to compare ORDER BY and GROUP/DISTINCT lists, which motivates + * the decision to give them the same representation. * * tleSortGroupRef must match ressortgroupref of exactly one entry of the - * associated targetlist; that is the expression to be sorted (or grouped) by. - * sortop is the OID of the ordering operator (a "<" or ">" operator). - * nulls_first does about what you'd expect. + * query's targetlist; that is the expression to be sorted or grouped by. + * eqop is the OID of the equality operator. + * sortop is the OID of the ordering operator (a "<" or ">" operator), + * or InvalidOid if not available. + * nulls_first means about what you'd expect. If sortop is InvalidOid + * then nulls_first is meaningless and should be set to false. + * + * In an ORDER BY item, all fields must be valid. (The eqop isn't essential + * here, but it's cheap to get it along with the sortop, and requiring it + * to be valid eases comparisons to grouping items.) + * + * In a grouping item, eqop must be valid. If the eqop is a btree equality + * operator, then sortop should be set to a compatible ordering operator. + * We prefer to set eqop/sortop/nulls_first to match any ORDER BY item that + * the query presents for the same tlist item. If there is none, we just + * use the default ordering op for the datatype. * - * SortClauses are also used to identify targets that we will do a "Unique" - * filter step on (for SELECT DISTINCT and SELECT DISTINCT ON). The - * distinctClause list is simply a copy of the relevant members of the - * sortClause list. Note that distinctClause can be a subset of sortClause, - * but cannot have members not present in sortClause; and the members that - * do appear must be in the same order as in sortClause. + * If the tlist item's type has a hash opclass but no btree opclass, then + * we will set eqop to the hash equality operator, sortop to InvalidOid, + * and nulls_first to false. A grouping item of this kind can only be + * implemented by hashing, and of course it'll never match an ORDER BY item. + * + * A query might have both ORDER BY and DISTINCT (or DISTINCT ON) clauses. + * In SELECT DISTINCT, the distinctClause list is as long or longer than the + * sortClause list, while in SELECT DISTINCT ON it's typically shorter. + * The two lists must match up to the end of the shorter one --- the parser + * rearranges the distinctClause if necessary to make this true. (This + * restriction ensures that only one sort step is needed to both satisfy the + * ORDER BY and set up for the Unique step. This is semantically necessary + * for DISTINCT ON, and presents no real drawback for DISTINCT.) */ -typedef struct SortClause +typedef struct SortGroupClause { NodeTag type; Index tleSortGroupRef; /* reference into targetlist */ - Oid sortop; /* the ordering operator ('<' op) */ - bool nulls_first; /* do NULLs come before normal values? */ -} SortClause; + Oid eqop; /* the equality operator ('=' op) */ + Oid sortop; /* the ordering operator ('<' op), or 0 */ + bool nulls_first; /* do NULLs come before normal values? */ +} SortGroupClause; /* - * GroupClause - - * representation of GROUP BY clauses - * - * GroupClause is exactly like SortClause except for the nodetag value. - * We have routines that operate interchangeably on both. + * WindowClause - + * transformed representation of WINDOW and OVER clauses * - * XXX SortClause overspecifies the semantics so far as GROUP BY is concerned - * (ditto for DISTINCT). It'd be better to specify an equality operator not - * an ordering operator. However, the two implementations are tightly entwined - * at the moment ... breaking them apart is work for another day. - */ -typedef SortClause GroupClause; + * A parsed Query's windowClause list contains these structs. "name" is set + * if the clause originally came from WINDOW, and is NULL if it originally + * was an OVER clause (but note that we collapse out duplicate OVERs). + * partitionClause and orderClause are lists of SortGroupClause structs. + * winref is an ID number referenced by WindowFunc nodes; it must be unique + * among the members of a Query's windowClause list. + * When refname isn't null, the partitionClause is always copied from there; + * the orderClause might or might not be copied (see copiedOrder); the framing + * options are never copied, per spec. + */ +typedef struct WindowClause +{ + NodeTag type; + char *name; /* window name (NULL in an OVER clause) */ + char *refname; /* referenced window name, if any */ + List *partitionClause; /* PARTITION BY list */ + List *orderClause; /* ORDER BY list */ + int frameOptions; /* frame_clause options, see WindowDef */ + Index winref; /* ID referenced by window functions */ + bool copiedOrder; /* did we copy orderClause from refname? */ +} WindowClause; /* * RowMarkClause - * representation of FOR UPDATE/SHARE clauses * - * We create a separate RowMarkClause node for each target relation + * We create a separate RowMarkClause node for each target relation. In the + * output of the parser and rewriter, all RowMarkClauses have rti == prti and + * isParent == false. When the planner discovers that a target relation + * is the root of an inheritance tree, it sets isParent true, and adds an + * additional RowMarkClause to the list for each child relation (including + * the target rel itself in its role as a child). The child entries have + * rti == child rel's RT index, prti == parent's RT index, and can therefore + * be recognized as children by the fact that prti != rti. */ typedef struct RowMarkClause { NodeTag type; Index rti; /* range table index of target relation */ + Index prti; /* range table index of parent relation */ bool forUpdate; /* true = FOR UPDATE, false = FOR SHARE */ bool noWait; /* NOWAIT option */ + bool isParent; /* set by planner when expanding inheritance */ } RowMarkClause; +/* + * WithClause - + * representation of WITH clause + * + * Note: WithClause does not propagate into the Query representation; + * but CommonTableExpr does. + */ +typedef struct WithClause +{ + NodeTag type; + List *ctes; /* list of CommonTableExprs */ + bool recursive; /* true = WITH RECURSIVE */ + int location; /* token location, or -1 if unknown */ +} WithClause; + +/* + * CommonTableExpr - + * representation of WITH list element + * + * We don't currently support the SEARCH or CYCLE clause. + */ +typedef struct CommonTableExpr +{ + NodeTag type; + char *ctename; /* query name (never qualified) */ + List *aliascolnames; /* optional list of column names */ + Node *ctequery; /* subquery (SelectStmt or Query) */ + int location; /* token location, or -1 if unknown */ + /* These fields are set during parse analysis: */ + bool cterecursive; /* is this CTE actually recursive? */ + int cterefcount; /* number of RTEs referencing this CTE + * (excluding internal self-references) */ + List *ctecolnames; /* list of output column names */ + List *ctecoltypes; /* OID list of output column type OIDs */ + List *ctecoltypmods; /* integer list of output column typmods */ +} CommonTableExpr; + /***************************************************************************** * Optimizable Statements *****************************************************************************/ @@ -741,6 +956,8 @@ typedef struct SelectStmt Node *whereClause; /* WHERE qualification */ List *groupClause; /* GROUP BY clauses */ Node *havingClause; /* HAVING conditional-expression */ + List *windowClause; /* WINDOW window_name AS (...), ... */ + WithClause *withClause; /* WITH clause */ /* * In a "leaf" node representing a VALUES list, the above fields are all @@ -779,7 +996,12 @@ typedef struct SelectStmt * top-level Query node containing the leaf SELECTs as subqueries in its * range table. Its setOperations field shows the tree of set operations, * with leaf SelectStmt nodes replaced by RangeTblRef nodes, and internal - * nodes replaced by SetOperationStmt nodes. + * nodes replaced by SetOperationStmt nodes. Information about the output + * column types is added, too. (Note that the child nodes do not necessarily + * produce these types directly, but we've checked that their output types + * can be coerced to the output column type.) Also, if it's not UNION ALL, + * information about the types' sort/group semantics is provided in the form + * of a SortGroupClause list (same representation as, eg, DISTINCT). * ---------------------- */ typedef struct SetOperationStmt @@ -794,6 +1016,8 @@ typedef struct SetOperationStmt /* Fields derived during parse analysis: */ List *colTypes; /* OID list of output column type OIDs */ List *colTypmods; /* integer list of output column typmods */ + List *groupClauses; /* a list of SortGroupClause's */ + /* groupClauses is NIL if UNION ALL, but must be set otherwise */ } SetOperationStmt; @@ -823,6 +1047,8 @@ typedef enum ObjectType OBJECT_CONVERSION, OBJECT_DATABASE, OBJECT_DOMAIN, + OBJECT_FDW, + OBJECT_FOREIGN_SERVER, OBJECT_FUNCTION, OBJECT_INDEX, OBJECT_LANGUAGE, @@ -882,6 +1108,7 @@ typedef struct AlterTableStmt typedef enum AlterTableType { AT_AddColumn, /* add column */ + AT_AddColumnToView, /* implicitly via CREATE OR REPLACE VIEW */ AT_ColumnDefault, /* alter column default */ AT_DropNotNull, /* alter column drop not null */ AT_SetNotNull, /* alter column set not null */ @@ -892,15 +1119,16 @@ typedef enum AlterTableType AT_AddIndex, /* add index */ AT_ReAddIndex, /* internal to commands/tablecmds.c */ AT_AddConstraint, /* add constraint */ + AT_AddConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ProcessedConstraint, /* pre-processed add constraint (local in * parser/parse_utilcmd.c) */ AT_DropConstraint, /* drop constraint */ - AT_DropConstraintQuietly, /* drop constraint, no error/warning (local in - * commands/tablecmds.c) */ + AT_DropConstraintRecurse, /* internal to commands/tablecmds.c */ AT_AlterColumnType, /* alter column type */ AT_ChangeOwner, /* change owner */ AT_ClusterOn, /* CLUSTER ON */ AT_DropCluster, /* SET WITHOUT CLUSTER */ + AT_AddOids, /* SET WITH OIDS */ AT_DropOids, /* SET WITHOUT OIDS */ AT_SetTableSpace, /* SET TABLESPACE */ AT_SetRelOptions, /* SET (...) -- AM specific parameters */ @@ -965,9 +1193,12 @@ typedef struct AlterDomainStmt */ typedef enum GrantObjectType { + ACL_OBJECT_COLUMN, /* column */ ACL_OBJECT_RELATION, /* table, view */ ACL_OBJECT_SEQUENCE, /* sequence */ ACL_OBJECT_DATABASE, /* database */ + ACL_OBJECT_FDW, /* foreign-data wrapper */ + ACL_OBJECT_FOREIGN_SERVER, /* foreign server */ ACL_OBJECT_FUNCTION, /* function */ ACL_OBJECT_LANGUAGE, /* procedural language */ ACL_OBJECT_NAMESPACE, /* namespace */ @@ -981,8 +1212,8 @@ typedef struct GrantStmt GrantObjectType objtype; /* kind of object being operated on */ List *objects; /* list of RangeVar nodes, FuncWithArgs nodes, * or plain names (as Value strings) */ - List *privileges; /* list of privilege names (as Strings) */ - /* privileges == NIL denotes "all privileges" */ + List *privileges; /* list of AccessPriv nodes */ + /* privileges == NIL denotes ALL PRIVILEGES */ List *grantees; /* list of PrivGrantee nodes */ bool grant_option; /* grant or revoke grant option */ DropBehavior behavior; /* drop behavior (for REVOKE) */ @@ -1006,18 +1237,27 @@ typedef struct FuncWithArgs List *funcargs; /* list of Typename nodes */ } FuncWithArgs; -/* This is only used internally in gram.y. */ -typedef struct PrivTarget +/* + * An access privilege, with optional list of column names + * priv_name == NULL denotes ALL PRIVILEGES (only used with a column list) + * cols == NIL denotes "all columns" + * Note that simple "ALL PRIVILEGES" is represented as a NIL list, not + * an AccessPriv with both fields null. + */ +typedef struct AccessPriv { NodeTag type; - GrantObjectType objtype; - List *objs; -} PrivTarget; + char *priv_name; /* string name of privilege */ + List *cols; /* list of Value strings */ +} AccessPriv; /* ---------------------- * Grant/Revoke Role Statement * - * Note: the lists of roles are lists of names, as Value strings + * Note: because of the parsing ambiguity with the GRANT <privileges> + * statement, granted_roles is a list of AccessPriv; the execution code + * should complain if any column lists appear. grantee_roles is a list + * of role names, as Value strings. * ---------------------- */ typedef struct GrantRoleStmt @@ -1220,6 +1460,97 @@ typedef struct DropTableSpaceStmt bool missing_ok; /* skip error if missing? */ } DropTableSpaceStmt; +/* ---------------------- + * Create/Drop FOREIGN DATA WRAPPER Statements + * ---------------------- + */ + +typedef struct CreateFdwStmt +{ + NodeTag type; + char *fdwname; /* foreign-data wrapper name */ + List *validator; /* optional validator function (qual. name) */ + List *options; /* generic options to FDW */ +} CreateFdwStmt; + +typedef struct AlterFdwStmt +{ + NodeTag type; + char *fdwname; /* foreign-data wrapper name */ + List *validator; /* optional validator function (qual. name) */ + bool change_validator; + List *options; /* generic options to FDW */ +} AlterFdwStmt; + +typedef struct DropFdwStmt +{ + NodeTag type; + char *fdwname; /* foreign-data wrapper name */ + bool missing_ok; /* don't complain if missing */ + DropBehavior behavior; /* drop behavior - cascade/restrict */ +} DropFdwStmt; + +/* ---------------------- + * Create/Drop FOREIGN SERVER Statements + * ---------------------- + */ + +typedef struct CreateForeignServerStmt +{ + NodeTag type; + char *servername; /* server name */ + char *servertype; /* optional server type */ + char *version; /* optional server version */ + char *fdwname; /* FDW name */ + List *options; /* generic options to server */ +} CreateForeignServerStmt; + +typedef struct AlterForeignServerStmt +{ + NodeTag type; + char *servername; /* server name */ + char *version; /* optional server version */ + List *options; /* generic options to server */ + bool has_version; /* version specified */ +} AlterForeignServerStmt; + +typedef struct DropForeignServerStmt +{ + NodeTag type; + char *servername; /* server name */ + bool missing_ok; /* ignore missing servers */ + DropBehavior behavior; /* drop behavior - cascade/restrict */ +} DropForeignServerStmt; + +/* ---------------------- + * Create/Drop USER MAPPING Statements + * ---------------------- + */ + +typedef struct CreateUserMappingStmt +{ + NodeTag type; + char *username; /* username or PUBLIC/CURRENT_USER */ + char *servername; /* server name */ + List *options; /* generic options to server */ +} CreateUserMappingStmt; + +typedef struct AlterUserMappingStmt +{ + NodeTag type; + char *username; /* username or PUBLIC/CURRENT_USER */ + char *servername; /* server name */ + List *options; /* generic options to server */ +} AlterUserMappingStmt; + +typedef struct DropUserMappingStmt +{ + NodeTag type; + char *username; /* username or PUBLIC/CURRENT_USER */ + char *servername; /* server name */ + bool missing_ok; /* ignore missing mappings */ +} DropUserMappingStmt; + /* ---------------------- * Create/Drop TRIGGER Statements * ---------------------- @@ -1234,7 +1565,8 @@ typedef struct CreateTrigStmt List *args; /* list of (T_String) Values or NIL */ bool before; /* BEFORE/AFTER */ bool row; /* ROW/STATEMENT */ - char actions[4]; /* 1 to 3 of 'i', 'u', 'd', + trailing \0 */ + /* events uses the TRIGGER_TYPE bits defined in catalog/pg_trigger.h */ + int16 events; /* INSERT/UPDATE/DELETE/TRUNCATE */ /* The following are used for referential */ /* integrity constraint triggers */ @@ -1383,7 +1715,6 @@ typedef struct CreateOpClassItem List *name; /* operator or function name */ List *args; /* argument types */ int number; /* strategy num or support proc num */ - bool recheck; /* only used for operators */ List *class_args; /* only used for functions */ /* fields used for a storagetype item: */ TypeName *storedtype; /* datatype stored in index */ @@ -1453,6 +1784,7 @@ typedef struct TruncateStmt { NodeTag type; List *relations; /* relations (RangeVars) to be truncated */ + bool restart_seqs; /* restart owned sequences? */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ } TruncateStmt; @@ -1473,16 +1805,16 @@ typedef struct CommentStmt * 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 + * output. After parse analysis it's set to null, and the Query points to the * DeclareCursorStmt, not vice versa. * ---------------------- */ -#define CURSOR_OPT_BINARY 0x0001 /* BINARY */ -#define CURSOR_OPT_SCROLL 0x0002 /* SCROLL explicitly given */ -#define CURSOR_OPT_NO_SCROLL 0x0004 /* NO SCROLL explicitly given */ -#define CURSOR_OPT_INSENSITIVE 0x0008 /* INSENSITIVE (unimplemented) */ -#define CURSOR_OPT_HOLD 0x0010 /* WITH HOLD */ -#define CURSOR_OPT_FAST_PLAN 0x0020 /* prefer fast-start plan */ +#define CURSOR_OPT_BINARY 0x0001 /* BINARY */ +#define CURSOR_OPT_SCROLL 0x0002 /* SCROLL explicitly given */ +#define CURSOR_OPT_NO_SCROLL 0x0004 /* NO SCROLL explicitly given */ +#define CURSOR_OPT_INSENSITIVE 0x0008 /* INSENSITIVE */ +#define CURSOR_OPT_HOLD 0x0010 /* WITH HOLD */ +#define CURSOR_OPT_FAST_PLAN 0x0020 /* prefer fast-start plan */ typedef struct DeclareCursorStmt { @@ -1500,7 +1832,7 @@ typedef struct ClosePortalStmt { NodeTag type; char *portalname; /* name of the portal (cursor) */ - /* NULL means CLOSE ALL */ + /* NULL means CLOSE ALL */ } ClosePortalStmt; /* ---------------------- @@ -1538,10 +1870,9 @@ typedef struct IndexStmt char *idxname; /* name of new index, or NULL for default */ RangeVar *relation; /* relation to build index on */ char *accessMethod; /* name of access method (eg. btree) */ - char *tableSpace; /* tablespace, or NULL to use parent's */ + char *tableSpace; /* tablespace, or NULL for default */ List *indexParams; /* a list of IndexElem */ List *options; /* options from WITH clause */ - char *src_options; /* relopts inherited from source index */ Node *whereClause; /* qualification (partial-index predicate) */ bool unique; /* is index unique? */ bool primary; /* is index on primary key? */ @@ -1569,7 +1900,9 @@ typedef enum FunctionParameterMode /* the assigned enum values appear in pg_proc, don't change 'em! */ FUNC_PARAM_IN = 'i', /* input only */ FUNC_PARAM_OUT = 'o', /* output only */ - FUNC_PARAM_INOUT = 'b' /* both */ + FUNC_PARAM_INOUT = 'b', /* both */ + FUNC_PARAM_VARIADIC = 'v', /* variadic (always input) */ + FUNC_PARAM_TABLE = 't' /* table function output column */ } FunctionParameterMode; typedef struct FunctionParameter @@ -1577,7 +1910,8 @@ typedef struct FunctionParameter NodeTag type; char *name; /* parameter name, or NULL if not given */ TypeName *argType; /* TypeName for parameter type */ - FunctionParameterMode mode; /* IN/OUT/INOUT */ + FunctionParameterMode mode; /* IN/OUT/etc */ + Node *defexpr; /* raw default expr, or NULL if not given */ } FunctionParameter; typedef struct AlterFunctionStmt @@ -1697,7 +2031,7 @@ typedef struct RuleStmt typedef struct NotifyStmt { NodeTag type; - RangeVar *relation; /* qualified name to notify */ + char *conditionname; /* condition name to notify */ } NotifyStmt; /* ---------------------- @@ -1707,7 +2041,7 @@ typedef struct NotifyStmt typedef struct ListenStmt { NodeTag type; - RangeVar *relation; /* qualified name to listen on */ + char *conditionname; /* condition name to listen on */ } ListenStmt; /* ---------------------- @@ -1717,7 +2051,7 @@ typedef struct ListenStmt typedef struct UnlistenStmt { NodeTag type; - RangeVar *relation; /* qualified name to unlisten on, or '*' */ + char *conditionname; /* name to unlisten on, or NULL for all */ } UnlistenStmt; /* ---------------------- @@ -1841,6 +2175,7 @@ typedef struct ClusterStmt NodeTag type; RangeVar *relation; /* relation being indexed, or NULL if all */ char *indexname; /* original index defined */ + bool verbose; /* print progress info */ } ClusterStmt; /* ---------------------- @@ -1857,7 +2192,8 @@ typedef struct VacuumStmt bool full; /* do FULL (non-concurrent) vacuum */ bool analyze; /* do ANALYZE step */ bool verbose; /* print progress info */ - int freeze_min_age; /* min freeze age, or -1 to use default */ + int freeze_min_age; /* min freeze age, or -1 to use default */ + int freeze_table_age; /* age at which to scan whole table */ RangeVar *relation; /* single table to process, or NULL */ List *va_cols; /* list of column names, or NIL for all */ } VacuumStmt; @@ -1898,7 +2234,7 @@ typedef enum DiscardMode typedef struct DiscardStmt { NodeTag type; - DiscardMode target; + DiscardMode target; } DiscardStmt; /* ---------------------- @@ -1963,6 +2299,7 @@ typedef struct CreateCastStmt TypeName *targettype; FuncWithArgs *func; CoercionContext context; + bool inout; } CreateCastStmt; /* ---------------------- @@ -2014,7 +2351,7 @@ typedef struct DeallocateStmt { NodeTag type; char *name; /* The name of the plan to remove */ - /* NULL means DEALLOCATE ALL */ + /* NULL means DEALLOCATE ALL */ } DeallocateStmt; /* @@ -2056,14 +2393,14 @@ typedef struct AlterTSConfigurationStmt List *cfgname; /* qualified name (list of Value strings) */ /* - * dicts will be non-NIL if ADD/ALTER MAPPING was specified. - * If dicts is NIL, but tokentype isn't, DROP MAPPING was specified. + * dicts will be non-NIL if ADD/ALTER MAPPING was specified. If dicts is + * NIL, but tokentype isn't, DROP MAPPING was specified. */ - List *tokentype; /* list of Value strings */ - List *dicts; /* list of list of Value strings */ - bool override; /* if true - remove old variant */ - bool replace; /* if true - replace dictionary by another */ - bool missing_ok; /* for DROP - skip error if missing? */ + List *tokentype; /* list of Value strings */ + List *dicts; /* list of list of Value strings */ + bool override; /* if true - remove old variant */ + bool replace; /* if true - replace dictionary by another */ + bool missing_ok; /* for DROP - skip error if missing? */ } AlterTSConfigurationStmt; #endif /* PARSENODES_H */ diff --git a/parser/parser.c b/parser/parser.c index 17c5d74ab..6884dc69f 100644 --- a/parser/parser.c +++ b/parser/parser.c @@ -7,14 +7,15 @@ * (since we need to be able to do basic parsing even while inside an * aborted transaction). Therefore, the data structures returned by * the grammar are "raw" parsetrees that still need to be analyzed by - * parse_analyze. + * analyze.c and related files. * * - * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parser.c,v 1.63 2004/12/31 22:00:27 pgsql Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parser.c,v 1.76 2009/01/01 17:23:46 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -22,16 +23,16 @@ #include <string.h> #include "pool_parser.h" #include "pool_memory.h" -#include "gramparse.h" +#include "gramparse.h" /* required before parser/gram.h! */ #include "gram.h" #include "parser.h" -#include "value.h" + List *parsetree; /* result of parsing is left here */ jmp_buf jmpbuffer; +static bool have_lookahead; /* is lookahead info valid? */ static int lookahead_token; /* one-token lookahead */ -static bool have_lookahead; /* lookahead_token set? */ static YYSTYPE lookahead_yylval; /* yylval for lookahead token */ static YYLTYPE lookahead_yylloc; /* yylloc for lookahead token */ @@ -114,6 +115,7 @@ filtered_base_yylex(void) switch (cur_token) { case NULLS_P: + /* * NULLS FIRST and NULLS LAST must be reduced to one token */ @@ -142,29 +144,17 @@ filtered_base_yylex(void) break; case WITH: + /* - * WITH CASCADED, LOCAL, or CHECK must be reduced to one token - * - * XXX an alternative way is to recognize just WITH_TIME and put - * the ugliness into the datetime datatype productions instead of - * WITH CHECK OPTION. However that requires promoting WITH to a - * fully reserved word. If we ever have to do that anyway - * (perhaps for SQL99 recursive queries), come back and simplify - * this code. + * WITH TIME must be reduced to one token */ cur_yylval = base_yylval; cur_yylloc = base_yylloc; next_token = base_yylex(); switch (next_token) { - case CASCADED: - cur_token = WITH_CASCADED; - break; - case LOCAL: - cur_token = WITH_LOCAL; - break; - case CHECK: - cur_token = WITH_CHECK; + case TIME: + cur_token = WITH_TIME; break; default: /* save the lookahead token for next time */ diff --git a/parser/pool_memory.h b/parser/pool_memory.h index 5034e9306..3b6cde7cc 100644 --- a/parser/pool_memory.h +++ b/parser/pool_memory.h @@ -5,7 +5,7 @@ * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * - * Copyright (c) 2003-2008 PgPool Global Development Group + * Copyright (c) 2003-2009 PgPool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -71,5 +71,6 @@ extern void *pool_memory_alloc_zero(POOL_MEMORY_POOL *pool_memory, unsigned int #define repalloc(p, s) pool_memory_realloc(pool_memory, (p), (s)) #define pstrdup(s) pool_memory_strdup(pool_memory, (s)) #define palloc0(s) pool_memory_alloc_zero(pool_memory, (s)) +#define palloc0fast(s) pool_memory_alloc_zero(pool_memory, (s)) /* Added in 8.4 */ #endif /* POOL_MEMORY_H */ diff --git a/parser/pool_parser.h b/parser/pool_parser.h index 51ec14f3d..32e9f7199 100644 --- a/parser/pool_parser.h +++ b/parser/pool_parser.h @@ -2,7 +2,7 @@ /* * $Header$ * - * Copyright (c) 2006-2008, pgpool Global Development Group + * Copyright (c) 2006-2009, pgpool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -24,9 +24,17 @@ extern jmp_buf jmpbuffer; +#define AssertMacro + /* integer */ -typedef signed int int32; -typedef signed short int16; + +/* + * move int32 and int16 to pool_types.h since there's no point that + * these are solely used for parser + * typedef signed int int32; + * typedef signed short int16; + */ + typedef unsigned int PoolOid; typedef unsigned int Index; typedef short AttrNumber; @@ -114,4 +122,14 @@ typedef unsigned long Datum; /* XXX sizeof(long) >= sizeof(void *) */ #define lengthof(array) (sizeof(array) / sizeof(((array)[0]))) #define endof(array) (&(array)[lengthof(array)]) +/* from include/catalog/pg_trigger.h start */ +/* Bits within tgtype */ +#define TRIGGER_TYPE_ROW (1 << 0) +#define TRIGGER_TYPE_BEFORE (1 << 1) +#define TRIGGER_TYPE_INSERT (1 << 2) +#define TRIGGER_TYPE_DELETE (1 << 3) +#define TRIGGER_TYPE_UPDATE (1 << 4) +#define TRIGGER_TYPE_TRUNCATE (1 << 5) +/* from include/catalog/pg_trigger.h end */ + #endif /* POOL_PARSER_H */ diff --git a/parser/primnodes.h b/parser/primnodes.h index 86cad18b4..7a278668f 100644 --- a/parser/primnodes.h +++ b/parser/primnodes.h @@ -7,11 +7,11 @@ * and join trees. * * - * Portions Copyright (c) 2003-2008, PgPool Global Development Group - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2009, PgPool Global Development Group + * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.133 2007/08/26 21:44:25 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.148 2009/04/05 19:59:40 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -76,6 +76,7 @@ typedef struct RangeVar * on children? */ bool istemp; /* is this a temp relation/sequence? */ Alias *alias; /* table alias & optional column aliases */ + int location; /* token location, or -1 if unknown */ } RangeVar; /* @@ -89,7 +90,7 @@ typedef struct IntoClause List *colNames; /* column names to assign, or NIL */ List *options; /* options from WITH clause */ OnCommitAction onCommit; /* what do we do at COMMIT? */ - char *tableSpaceName; /* table space to use, or NULL */ + char *tableSpaceName; /* table space to use, or NULL */ } IntoClause; @@ -138,14 +139,12 @@ typedef struct Var * all */ Oid vartype; /* pg_type OID for the type of this var */ int32 vartypmod; /* pg_attribute typmod value */ - Index varlevelsup; - - /* - * for subquery variables referencing outer relations; 0 in a normal var, - * >0 means N levels up - */ + Index varlevelsup; /* for subquery variables referencing outer + * relations; 0 in a normal var, >0 means N + * levels up */ Index varnoold; /* original value of varno, for debugging */ AttrNumber varoattno; /* original value of varattno */ + int location; /* token location, or -1 if unknown */ } Var; /* @@ -164,6 +163,7 @@ typedef struct Const * If true, then all the information is stored * in the Datum. If false, then the Datum * contains a pointer to the information. */ + int location; /* token location, or -1 if unknown */ } Const; /* ---------------- @@ -204,6 +204,7 @@ typedef struct Param int paramid; /* numeric ID for parameter */ Oid paramtype; /* pg_type OID of parameter's datatype */ int32 paramtypmod; /* typmod value, if known */ + int location; /* token location, or -1 if unknown */ } Param; /* @@ -218,8 +219,24 @@ typedef struct Aggref Index agglevelsup; /* > 0 if agg belongs to outer query */ bool aggstar; /* TRUE if argument list was really '*' */ bool aggdistinct; /* TRUE if it's agg(DISTINCT ...) */ + int location; /* token location, or -1 if unknown */ } Aggref; +/* + * WindowFunc + */ +typedef struct WindowFunc +{ + Expr xpr; + Oid winfnoid; /* pg_proc Oid of the function */ + Oid wintype; /* type Oid of result of the window function */ + List *args; /* arguments to the window function */ + Index winref; /* index of associated WindowClause */ + bool winstar; /* TRUE if argument list was really '*' */ + bool winagg; /* is function a simple aggregate? */ + int location; /* token location, or -1 if unknown */ +} WindowFunc; + /* ---------------- * ArrayRef: describes an array subscripting operation * @@ -293,6 +310,7 @@ typedef struct FuncExpr bool funcretset; /* true if function returns set */ CoercionForm funcformat; /* how to display this function call */ List *args; /* arguments to the function */ + int location; /* token location, or -1 if unknown */ } FuncExpr; /* @@ -302,7 +320,7 @@ typedef struct FuncExpr * * Note that opfuncid is not necessarily filled in immediately on creation * of the node. The planner makes sure it is valid before passing the node - * tree to the executor, but during parsing/planning opfuncid is typically 0. + * tree to the executor, but during parsing/planning opfuncid can be 0. */ typedef struct OpExpr { @@ -312,6 +330,7 @@ typedef struct OpExpr Oid opresulttype; /* PG_TYPE OID of result value */ bool opretset; /* true if operator returns set */ List *args; /* arguments to the operator (1 or 2) */ + int location; /* token location, or -1 if unknown */ } OpExpr; /* @@ -343,6 +362,7 @@ typedef struct ScalarArrayOpExpr Oid opfuncid; /* PG_PROC OID of underlying function */ bool useOr; /* true for ANY, false for ALL */ List *args; /* the scalar and array operands */ + int location; /* token location, or -1 if unknown */ } ScalarArrayOpExpr; /* @@ -350,9 +370,11 @@ typedef struct ScalarArrayOpExpr * * Notice the arguments are given as a List. For NOT, of course the list * must always have exactly one element. For AND and OR, the executor can - * handle any number of arguments. The parser treats AND and OR as binary - * and so it only produces two-element lists, but the optimizer will flatten - * trees of AND and OR nodes to produce longer lists when possible. + * handle any number of arguments. The parser generally treats AND and OR + * as binary and so it typically only produces two-element lists, but the + * optimizer will flatten trees of AND and OR nodes to produce longer lists + * when possible. There are also a few special cases where more arguments + * can appear before optimization. */ typedef enum BoolExprType { @@ -364,6 +386,7 @@ typedef struct BoolExpr Expr xpr; BoolExprType boolop; List *args; /* arguments to this expression */ + int location; /* token location, or -1 if unknown */ } BoolExpr; /* @@ -378,6 +401,7 @@ typedef struct BoolExpr * ROWCOMPARE_SUBLINK (lefthand) op (SELECT ...) * EXPR_SUBLINK (SELECT with single targetlist item ...) * ARRAY_SUBLINK ARRAY(SELECT with single targetlist item ...) + * CTE_SUBLINK WITH query (never actually part of an expression) * For ALL, ANY, and ROWCOMPARE, the lefthand is a list of expressions of the * same length as the subselect's targetlist. ROWCOMPARE will *always* have * a list with more than one entry; if the subselect has just one target @@ -404,6 +428,9 @@ typedef struct BoolExpr * * In EXISTS, EXPR, and ARRAY SubLinks, testexpr and operName are unused and * are always null. + * + * The CTE_SUBLINK case never occurs in actual SubLink nodes, but it is used + * in SubPlans generated for WITH subqueries. */ typedef enum SubLinkType { @@ -412,7 +439,8 @@ typedef enum SubLinkType ANY_SUBLINK, ROWCOMPARE_SUBLINK, EXPR_SUBLINK, - ARRAY_SUBLINK + ARRAY_SUBLINK, + CTE_SUBLINK /* for SubPlans only */ } SubLinkType; @@ -423,6 +451,7 @@ typedef struct SubLink Node *testexpr; /* outer-query test for ALL/ANY/ROWCOMPARE */ List *operName; /* originally specified operator name */ Node *subselect; /* subselect as Query* or parsetree */ + int location; /* token location, or -1 if unknown */ } SubLink; /* @@ -445,7 +474,8 @@ typedef struct SubLink * * If the sub-select becomes an initplan rather than a subplan, the executable * expression is part of the outer plan's expression tree (and the SubPlan - * node itself is not). In this case testexpr is NULL to avoid duplication. + * node itself is not, but rather is found in the outer plan's initPlan + * list). In this case testexpr is NULL to avoid duplication. * * The planner also derives lists of the values that need to be passed into * and out of the subplan. Input values are represented as a list "args" of @@ -457,6 +487,10 @@ typedef struct SubLink * is an initplan; they are listed in order by sub-select output column * position. (parParam and setParam are integer Lists, not Bitmapsets, * because their ordering is significant.) + * + * Also, the planner computes startup and per-call costs for use of the + * SubPlan. Note that these include the cost of the subquery proper, + * evaluation of the testexpr if any, and any hashtable management overhead. */ typedef struct SubPlan { @@ -468,8 +502,11 @@ typedef struct SubPlan List *paramIds; /* IDs of Params embedded in the above */ /* Identification of the Plan tree to use: */ int plan_id; /* Index (from 1) in PlannedStmt.subplans */ + /* Identification of the SubPlan for EXPLAIN and debugging purposes: */ + char *plan_name; /* A name assigned during planning */ /* 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 */ /* Information about execution strategy: */ bool useHashTable; /* TRUE to store subselect output in a hash * table (implies we are doing "IN") */ @@ -482,8 +519,25 @@ typedef struct SubPlan * Params for parent plan */ List *parParam; /* indices of input Params from parent plan */ List *args; /* exprs to pass as parParam values */ + /* Estimated execution costs: */ + Cost startup_cost; /* one-time setup cost */ + Cost per_call_cost; /* cost for each subplan evaluation */ } SubPlan; +/* + * AlternativeSubPlan - expression node for a choice among SubPlans + * + * The subplans are given as a List so that the node definition need not + * change if there's ever more than two alternatives. For the moment, + * though, there are always exactly two; and the first one is the fast-start + * plan. + */ +typedef struct AlternativeSubPlan +{ + Expr xpr; + List *subplans; /* SubPlan(s) with equivalent results */ +} AlternativeSubPlan; + /* ---------------- * FieldSelect * @@ -548,6 +602,7 @@ typedef struct RelabelType Oid resulttype; /* output type of coercion expression */ int32 resulttypmod; /* output typmod (usually -1) */ CoercionForm relabelformat; /* how to display this node */ + int location; /* token location, or -1 if unknown */ } RelabelType; /* ---------------- @@ -566,6 +621,7 @@ typedef struct CoerceViaIO Oid resulttype; /* output type of coercion */ /* output typmod is not stored, but is presumed -1 */ CoercionForm coerceformat; /* how to display this node */ + int location; /* token location, or -1 if unknown */ } CoerceViaIO; /* ---------------- @@ -589,6 +645,7 @@ typedef struct ArrayCoerceExpr int32 resulttypmod; /* output typmod (also element typmod) */ bool isExplicit; /* conversion semantics flag to pass to func */ CoercionForm coerceformat; /* how to display this node */ + int location; /* token location, or -1 if unknown */ } ArrayCoerceExpr; /* ---------------- @@ -610,6 +667,7 @@ typedef struct ConvertRowtypeExpr Oid resulttype; /* output type (always a composite type) */ /* result typmod is not stored, but must be -1; see RowExpr comments */ CoercionForm convertformat; /* how to display this node */ + int location; /* token location, or -1 if unknown */ } ConvertRowtypeExpr; /*---------- @@ -641,6 +699,7 @@ typedef struct CaseExpr Expr *arg; /* implicit equality comparison argument */ List *args; /* the arguments (list of WHEN clauses) */ Expr *defresult; /* the default result (ELSE clause) */ + int location; /* token location, or -1 if unknown */ } CaseExpr; /* @@ -651,6 +710,7 @@ typedef struct CaseWhen Expr xpr; Expr *expr; /* condition expression */ Expr *result; /* substitution result */ + int location; /* token location, or -1 if unknown */ } CaseWhen; /* @@ -683,6 +743,7 @@ typedef struct ArrayExpr Oid element_typeid; /* common type of array elements */ List *elements; /* the array elements or sub-arrays */ bool multidims; /* true if elements are sub-arrays */ + int location; /* token location, or -1 if unknown */ } ArrayExpr; /* @@ -697,6 +758,12 @@ typedef struct ArrayExpr * not RECORD types, since those are built from the RowExpr itself rather * than vice versa.) It is important not to assume that length(args) is * the same as the number of columns logically present in the rowtype. + * + * colnames is NIL in a RowExpr built from an ordinary ROW() expression. + * It is provided in cases where we expand a whole-row Var into a RowExpr, + * to retain the column alias names of the RTE that the Var referenced + * (which would otherwise be very difficult to extract from the parsetree). + * Like the args list, it is one-for-one with physical fields of the rowtype. */ typedef struct RowExpr { @@ -711,6 +778,8 @@ typedef struct RowExpr * parsetrees. We must assume typmod -1 for a RowExpr node. */ CoercionForm row_format; /* how to display this node */ + List *colnames; /* list of String, or NIL */ + int location; /* token location, or -1 if unknown */ } RowExpr; /* @@ -756,6 +825,7 @@ typedef struct CoalesceExpr Expr xpr; Oid coalescetype; /* type of expression result */ List *args; /* the arguments */ + int location; /* token location, or -1 if unknown */ } CoalesceExpr; /* @@ -773,6 +843,7 @@ typedef struct MinMaxExpr Oid minmaxtype; /* common type of arguments and result */ MinMaxOp op; /* function to execute */ List *args; /* the arguments */ + int location; /* token location, or -1 if unknown */ } MinMaxExpr; /* @@ -811,6 +882,7 @@ typedef struct XmlExpr XmlOptionType xmloption; /* DOCUMENT or CONTENT */ Oid type; /* target type for XMLSERIALIZE */ int32 typmod; + int location; /* token location, or -1 if unknown */ } XmlExpr; /* @@ -883,6 +955,7 @@ typedef struct CoerceToDomain Oid resulttype; /* domain type ID (result type) */ int32 resulttypmod; /* output typmod (currently always -1) */ CoercionForm coercionformat; /* how to display this node */ + int location; /* token location, or -1 if unknown */ } CoerceToDomain; /* @@ -899,6 +972,7 @@ typedef struct CoerceToDomainValue Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ + int location; /* token location, or -1 if unknown */ } CoerceToDomainValue; /* @@ -913,6 +987,7 @@ typedef struct SetToDefault Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ + int location; /* token location, or -1 if unknown */ } SetToDefault; /* @@ -969,14 +1044,14 @@ typedef struct CurrentOfExpr * a specific system-generated name (such as "ctid") or NULL; anything else * risks confusing ExecGetJunkAttribute! * - * ressortgroupref is used in the representation of ORDER BY and - * GROUP BY items. Targetlist entries with ressortgroupref=0 are not - * sort/group items. If ressortgroupref>0, then this item is an ORDER BY or - * GROUP BY value. No two entries in a targetlist may have the same nonzero - * ressortgroupref --- but there is no particular meaning to the nonzero - * values, except as tags. (For example, one must not assume that lower - * ressortgroupref means a more significant sort key.) The order of the - * associated SortClause or GroupClause lists determine the semantics. + * ressortgroupref is used in the representation of ORDER BY, GROUP BY, and + * DISTINCT items. Targetlist entries with ressortgroupref=0 are not + * sort/group items. If ressortgroupref>0, then this item is an ORDER BY, + * GROUP BY, and/or DISTINCT target value. No two entries in a targetlist + * may have the same nonzero ressortgroupref --- but there is no particular + * meaning to the nonzero values, except as tags. (For example, one must + * not assume that lower ressortgroupref means a more significant sort key.) + * The order of the associated SortGroupClause lists determine the semantics. * * resorigtbl/resorigcol identify the source of the column, if it is a * simple reference to a column of a base table (or view). If it is not @@ -1065,7 +1140,9 @@ typedef struct RangeTblRef * * During parse analysis, an RTE is created for the Join, and its index * is filled into rtindex. This RTE is present mainly so that Vars can - * be created that refer to the outputs of the join. + * be created that refer to the outputs of the join. The planner sometimes + * generates JoinExprs internally; these can have rtindex = 0 if there are + * no join alias variables referencing such joins. *---------- */ typedef struct JoinExpr @@ -1078,7 +1155,7 @@ typedef struct JoinExpr List *using; /* USING clause, if any (list of String) */ Node *quals; /* qualifiers on join, if any */ Alias *alias; /* user-written alias clause, if any */ - int rtindex; /* RT index assigned for join */ + int rtindex; /* RT index assigned for join, or 0 */ } JoinExpr; /*---------- diff --git a/pool_process_query.c b/pool_process_query.c index e5cfcdf35..80e140521 100644 --- a/pool_process_query.c +++ b/pool_process_query.c @@ -2216,7 +2216,8 @@ int is_select_query(Node *node, char *sql) return 0; if (IsA(node, SelectStmt)) - return (*sql == 's' || *sql == 'S' || *sql == '('); + return (*sql == 's' || *sql == 'S' || *sql == '(' || + *sql == 'w' || *sql == 'W' || *sql == 't' || *sql == 'T'); else return (*sql == 'd' || *sql == 'D'); } diff --git a/pool_rewrite_outfuncs.c b/pool_rewrite_outfuncs.c index 8259d3eda..cff467d58 100644 --- a/pool_rewrite_outfuncs.c +++ b/pool_rewrite_outfuncs.c @@ -83,8 +83,8 @@ static void _rewriteColumnDef(Node *BaseSelect, RewriteQuery *message, ConInfoTo static void _rewriteTypeName(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, TypeName *node); static void _rewriteTypeCast(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, TypeCast *node); static void _rewriteIndexElem(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, IndexElem *node); -static void _rewriteSortClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, SortClause *node); -static void _rewriteGroupClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, GroupClause *node); +static void _rewriteSortGroupClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, SortGroupClause *node); +static void _rewriteWindowClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, WindowClause *node); static void _rewriteSetOperationStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, SetOperationStmt *node); static void _rewriteAExpr(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, A_Expr *node); static void _rewriteValue(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, Value *value); @@ -163,7 +163,6 @@ static void _rewriteSetTransactionModeList(Node *BaseSelect, RewriteQuery *messa static void _rewriteAlterTableCmd(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, AlterTableCmd *node); static void _rewriteOptSeqList(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, List *options); static void _rewritePrivGrantee(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, PrivGrantee *node); -static void _rewritePrivTarget(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, PrivTarget *node); static void _rewriteFuncWithArgs(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, FuncWithArgs *node); static void _rewriteFunctionParameter(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, FunctionParameter *node); static void _rewritePrivilegeList(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, List *list); @@ -978,15 +977,8 @@ AnalyzeReturnRecord(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *db } else if(obj && (IsA(obj,A_Const))) { - A_Const *cst = (A_Const *) obj; char *column = NULL; - if(!typecast && cst->typename) - { - Value *v = linitial(cst->typename->names); - typecast = v->val.str; - } - if(!alias) { column = (char *)palloc(sizeof(char) * strlen("\"?column?\"") + 1); @@ -2449,7 +2441,9 @@ static void _rewriteNotifyStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, NotifyStmt *node) { delay_string_append_char(message, str, "NOTIFY "); - _rewriteNode(BaseSelect, message, dblink, str, node->relation); + delay_string_append_char(message, str, "\""); + _rewriteNode(BaseSelect, message, dblink, str, node->conditionname); + delay_string_append_char(message, str, "\""); } static void @@ -4242,51 +4236,103 @@ _rewriteColumnDef(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dbli static void _rewriteTypeName(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, TypeName *node) { - ListCell *lc; - char dot = 0; - - foreach (lc, node->names) - { - Value *v = (Value *) lfirst(lc); - char *typename = v->val.str; + if (list_length(node->names) == 2 && + strcmp("pg_catalog", strVal(linitial(node->names))) == 0) + { + delay_string_append_char(message, str, strVal(lsecond(node->names))); - if (dot == 0) - dot = 1; - else - delay_string_append_char(message, str, "."); - if(node->typemod < 0) + if (strcmp("interval", strVal(lsecond(node->names))) == 0) + { + if (node->typmods != NIL) { - if(message->rewritelock != -1) + A_Const *v = (A_Const *) linitial(node->typmods); + int mask = v->val.val.ival; + + /* precision for SECOND field. + * backword comaptibility. + * use `'1.2 second'::interval(0) second' + * not `'1.2 second'::interval second(0)'(standarad for 8.4). + */ + if ((INTERVAL_MASK(SECOND) & mask) && + list_length(node->typmods) == 2) { - delay_string_append_char(message, str, "\"\""); - delay_string_append_char(message, str, typename); - delay_string_append_char(message, str, "\"\""); - } else { - //delay_string_append_char(message, str, "\""); - delay_string_append_char(message, str, typename); - //delay_string_append_char(message, str, "\""); + delay_string_append_char(message, str, "("); + _rewriteAConst(BaseSelect, message, dblink, str, + lsecond(node->typmods)); + delay_string_append_char(message, str, ")"); } - } else - delay_string_append_char(message, str, typename); + + /* optional fields */ + if (mask == INTERVAL_MASK(YEAR)) + delay_string_append_char(message, str, " YEAR"); + else if (mask == INTERVAL_MASK(MONTH)) + delay_string_append_char(message, str, " MONTH"); + else if (mask == INTERVAL_MASK(DAY)) + delay_string_append_char(message, str, " DAY"); + else if (mask == INTERVAL_MASK(HOUR)) + delay_string_append_char(message, str, " HOUR"); + else if (mask == INTERVAL_MASK(MINUTE)) + delay_string_append_char(message, str, " MINUTE"); + else if (mask == INTERVAL_MASK(SECOND)) + delay_string_append_char(message, str, " SECOND"); + else if (mask == (INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH))) + delay_string_append_char(message, str, " YEAR TO MONTH"); + else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR))) + delay_string_append_char(message, str, " DAY TO HOUR"); + else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE))) + delay_string_append_char(message, str, " DAY TO MINUTE"); + else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND))) + delay_string_append_char(message, str, " DAY TO SECOND"); + else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) + delay_string_append_char(message, str, " HOUR TO MINUTE"); + else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND))) + delay_string_append_char(message, str, " HOUR TO SECOND"); + else if (mask == (INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND))) + delay_string_append_char(message, str, " MINUTE TO SECOND"); + } + + return; + } } - - if (node->typemod > 0) + else { - int lower; - char buf[16]; - delay_string_append_char(message, str, "("); - snprintf(buf, 16, "%d", ((node->typemod - VARHDRSZ) >> 16) & 0x00FF); - delay_string_append_char(message, str, buf); - lower = (node->typemod-VARHDRSZ) & 0x00FF; + ListCell *lc; + char dot = 0; - if(lower != 0) + foreach (lc, node->names) { - char buf2[16]; - delay_string_append_char(message, str, ","); - snprintf(buf2, 16, "%d",lower); - delay_string_append_char(message, str, buf2); - } + Value *v = (Value *) lfirst(lc); + char *typename = v->val.str; + if (dot == 0) + dot = 1; + else + delay_string_append_char(message, str, "."); + if(node->typemod < 0) + { + if(message->rewritelock != -1) + { + delay_string_append_char(message, str, "\"\""); + delay_string_append_char(message, str, typename); + delay_string_append_char(message, str, "\"\""); + } else { + //delay_string_append_char(message, str, "\""); + delay_string_append_char(message, str, typename); + //delay_string_append_char(message, str, "\""); + } + } else + delay_string_append_char(message, str, typename); + } + } + + /* precisions */ + if (node->typmods) + { + delay_string_append_char(message, str, "("); + _rewriteList(BaseSelect, message, dblink, str, node->typmods); delay_string_append_char(message, str, ")"); } } @@ -4323,13 +4369,13 @@ _rewriteIndexElem(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dbli static void -_rewriteSortClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, SortClause *node) +_rewriteSortGroupClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, SortGroupClause *node) { } static void -_rewriteGroupClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, GroupClause *node) +_rewriteWindowClause(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, WindowClause *node) { } @@ -5022,6 +5068,10 @@ _rewriteColumnRef(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dbli else column_name = v->val.str; } + else if (IsA(n, A_Star)) + { + column_name = "*"; + } } if(message->r_code == SELECT_ANALYZE) @@ -5084,15 +5134,6 @@ static void _rewriteAConst(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, A_Const *node) { char buf[16]; - char *name = NULL; - - if (node->typename) - { - Value *v = linitial(node->typename->names); - name = v->val.str; - _rewriteNode(BaseSelect, message, dblink, str, node->typename); - delay_string_append_char(message, str, " "); - } switch (node->val.type) { @@ -5125,41 +5166,6 @@ _rewriteAConst(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, default: break; } - - if (name && (strcmp(name, "interval") == 0) && - node->typename->typmods) - { - A_Const *v = linitial(node->typename->typmods); - int mask = v->val.val.ival; - - if (mask == INTERVAL_MASK(YEAR)) - delay_string_append_char(message, str, " YEAR"); - else if (mask == INTERVAL_MASK(MONTH)) - delay_string_append_char(message, str, " MONTH"); - else if (mask == INTERVAL_MASK(DAY)) - delay_string_append_char(message, str, " DAY"); - else if (mask == INTERVAL_MASK(HOUR)) - delay_string_append_char(message, str, " HOUR"); - else if (mask == INTERVAL_MASK(MINUTE)) - delay_string_append_char(message, str, " MINUTE"); - else if (mask == INTERVAL_MASK(SECOND)) - delay_string_append_char(message, str, " SECOND"); - else if (mask == (INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH))) - delay_string_append_char(message, str, " YEAR TO MONTH"); - else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR))) - delay_string_append_char(message, str, " DAY TO HOUR"); - else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE))) - delay_string_append_char(message, str, " DAY TO MINUTE"); - else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND))) - delay_string_append_char(message, str, " DAY TO SECOND"); - else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) - delay_string_append_char(message, str, " HOUR TO MINUTE"); - else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND))) - delay_string_append_char(message, str, " HOUR TO SECOND"); - } } static void @@ -5741,13 +5747,22 @@ static void _rewriteClosePortalStmt(Node *BaseSelect, RewriteQuery *message, Con static void _rewriteListenStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, ListenStmt *node) { delay_string_append_char(message, str, "LISTEN "); - _rewriteNode(BaseSelect, message, dblink, str, node->relation); + delay_string_append_char(message, str, "\""); + _rewriteNode(BaseSelect, message, dblink, str, node->conditionname); + delay_string_append_char(message, str, "\""); } static void _rewriteUnlistenStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, UnlistenStmt *node) { delay_string_append_char(message, str, "UNLISTEN "); - _rewriteNode(BaseSelect, message, dblink, str, node->relation); + if (node->conditionname == NULL) + delay_string_append_char(message, str, "*"); + else + { + delay_string_append_char(message, str, "\""); + _rewriteNode(BaseSelect, message, dblink, str, node->conditionname); + delay_string_append_char(message, str, "\""); + } } static void _rewriteLoadStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, LoadStmt *node) @@ -6757,7 +6772,7 @@ _rewriteFuncName(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblin static void _rewriteCreateTrigStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, CreateTrigStmt *node) { - int i, len; + bool has_events = false; if (node->isconstraint == TRUE) delay_string_append_char(message, str, "CREATE CONSTRAINT TRIGGER \""); @@ -6771,18 +6786,33 @@ _rewriteCreateTrigStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink else delay_string_append_char(message, str, "AFTER "); - len = strlen(node->actions); - for (i = 0; i < len; i++) + if (node->events & TRIGGER_TYPE_INSERT) { - if (i) + if (has_events) delay_string_append_char(message, str, "OR "); - - if (node->actions[i] == 'i') - delay_string_append_char(message, str, "INSERT "); - else if (node->actions[i] == 'd') - delay_string_append_char(message, str, "DELETE "); - else - delay_string_append_char(message, str, "UPDATE "); + delay_string_append_char(message, str, "INSERT "); + has_events = true; + } + if (node->events & TRIGGER_TYPE_DELETE) + { + if (has_events) + delay_string_append_char(message, str, "OR "); + delay_string_append_char(message, str, "DELETE "); + has_events = true; + } + if (node->events & TRIGGER_TYPE_UPDATE) + { + if (has_events) + delay_string_append_char(message, str, "OR "); + delay_string_append_char(message, str, "UPDATE "); + has_events = true; + } + if (node->events & TRIGGER_TYPE_TRUNCATE) + { + if (has_events) + delay_string_append_char(message, str, "OR "); + delay_string_append_char(message, str, "TRUNCATE "); + has_events = true; } delay_string_append_char(message, str, "ON "); @@ -6981,8 +7011,10 @@ _rewriteCreateOpClassItem(Node *BaseSelect, RewriteQuery *message, ConInfoTodbli _rewriteNode(BaseSelect, message, dblink, str, node->args); delay_string_append_char(message, str, ")"); } + /* XXX if (node->recheck == TRUE) delay_string_append_char(message, str, " RECHECK"); + */ break; case OPCLASS_ITEM_FUNCTION: @@ -7215,83 +7247,72 @@ _rewriteFuncWithArgs(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *d delay_string_append_char(message, str, ")"); } + +static void +_rewritePrivGrantee(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, PrivGrantee *node) +{ + if (node->rolname == NULL) + delay_string_append_char(message, str, "PUBLIC"); + else + { + delay_string_append_char(message, str, "\""); + delay_string_append_char(message, str, node->rolname); + delay_string_append_char(message, str, "\""); + } +} + static void -_rewritePrivTarget(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, PrivTarget *node) +_rewriteGrantStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, GrantStmt *node) { + if (node->is_grant == true) + delay_string_append_char(message, str, "GRANT "); + else + { + delay_string_append_char(message, str, "REVOKE "); + if (node->grant_option == true) + delay_string_append_char(message, str, "GRANT OPTION FOR "); + } + + _rewritePrivilegeList(BaseSelect, message, dblink, str, node->privileges); + + delay_string_append_char(message, str, " ON "); + switch (node->objtype) { case ACL_OBJECT_RELATION: - _rewriteNode(BaseSelect, message, dblink, str, node->objs); + _rewriteNode(BaseSelect, message, dblink, str, node->objects); break; case ACL_OBJECT_SEQUENCE: delay_string_append_char(message, str, "SEQUENCE "); - _rewriteNode(BaseSelect, message, dblink, str, node->objs); + _rewriteNode(BaseSelect, message, dblink, str, node->objects); break; case ACL_OBJECT_FUNCTION: delay_string_append_char(message, str, "FUNCTION "); - _rewriteNode(BaseSelect, message, dblink, str, node->objs); + _rewriteNode(BaseSelect, message, dblink, str, node->objects); break; case ACL_OBJECT_DATABASE: delay_string_append_char(message, str, "DATABASE "); - _rewriteIdList(BaseSelect, message, dblink, str, node->objs); + _rewriteIdList(BaseSelect, message, dblink, str, node->objects); break; case ACL_OBJECT_LANGUAGE: delay_string_append_char(message, str, "LANGUAGE "); - _rewriteIdList(BaseSelect, message, dblink, str, node->objs); + _rewriteIdList(BaseSelect, message, dblink, str, node->objects); break; case ACL_OBJECT_NAMESPACE: delay_string_append_char(message, str, "SCHEMA "); - _rewriteIdList(BaseSelect, message, dblink, str, node->objs); + _rewriteIdList(BaseSelect, message, dblink, str, node->objects); break; case ACL_OBJECT_TABLESPACE: delay_string_append_char(message, str, "TABLESPACE "); - _rewriteIdList(BaseSelect, message, dblink, str, node->objs); + _rewriteIdList(BaseSelect, message, dblink, str, node->objects); break; } -} - -static void -_rewritePrivGrantee(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, PrivGrantee *node) -{ - if (node->rolname == NULL) - delay_string_append_char(message, str, "PUBLIC"); - else - { - delay_string_append_char(message, str, "\""); - delay_string_append_char(message, str, node->rolname); - delay_string_append_char(message, str, "\""); - } -} - -static void -_rewriteGrantStmt(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, String *str, GrantStmt *node) -{ - PrivTarget *n; - - if (node->is_grant == true) - delay_string_append_char(message, str, "GRANT "); - else - { - delay_string_append_char(message, str, "REVOKE "); - if (node->grant_option == true) - delay_string_append_char(message, str, "GRANT OPTION FOR "); - } - - _rewritePrivilegeList(BaseSelect, message, dblink, str, node->privileges); - - delay_string_append_char(message, str, " ON "); - - n = makeNode(PrivTarget); - n->objtype = node->objtype; - n->objs = node->objects; - _rewriteNode(BaseSelect, message, dblink, str, n); - pfree(n); if (node->is_grant == true) delay_string_append_char(message, str, " TO "); @@ -8522,11 +8543,11 @@ _rewriteNode(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, S case T_IndexElem: _rewriteIndexElem(BaseSelect, message, dblink, str, obj); break; - case T_SortClause: - _rewriteSortClause(BaseSelect, message, dblink, str, obj); + case T_SortGroupClause: + _rewriteSortGroupClause(BaseSelect, message, dblink, str, obj); break; - case T_GroupClause: - _rewriteGroupClause(BaseSelect, message, dblink, str, obj); + case T_WindowClause: + _rewriteWindowClause(BaseSelect, message, dblink, str, obj); break; case T_SetOperationStmt: _rewriteSetOperationStmt(BaseSelect, message, dblink, str, obj); @@ -8739,10 +8760,6 @@ _rewriteNode(Node *BaseSelect, RewriteQuery *message, ConInfoTodblink *dblink, S _rewriteGrantStmt(BaseSelect, message, dblink, str, obj); break; - case T_PrivTarget: - _rewritePrivTarget(BaseSelect, message, dblink, str, obj); - break; - case T_FuncWithArgs: _rewriteFuncWithArgs(BaseSelect, message, dblink, str, obj); break; diff --git a/pool_type.h b/pool_type.h index f281376b5..b3092a24b 100644 --- a/pool_type.h +++ b/pool_type.h @@ -6,7 +6,7 @@ * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * - * Copyright (c) 2003-2008 PgPool Global Development Group + * Copyright (c) 2003-2009 PgPool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -30,6 +30,20 @@ #include <sys/types.h> #include <sys/socket.h> +typedef signed char int8; /* == 8 bits */ +typedef signed short int16; /* == 16 bits */ +typedef signed int int32; /* == 32 bits */ + +/* + * uintN + * Unsigned integer, EXACTLY N BITS IN SIZE, + * used for numerical computations and the + * frontend/backend protocol. + */ +typedef unsigned char uint8; /* == 8 bits */ +typedef unsigned short uint16; /* == 16 bits */ +typedef unsigned int uint32; /* == 32 bits */ + /* Define common boolean type. C++ and BEOS already has it so exclude them. */ #ifdef c_plusplus #ifndef __cplusplus diff --git a/test/parser/Makefile b/test/parser/Makefile index 90d7157a4..24adfb05b 100644 --- a/test/parser/Makefile +++ b/test/parser/Makefile @@ -2,7 +2,7 @@ PROGRAM=parser-test PGPOOL_SRC=../../parser -PARSER_OBJS=gram.o parser.o pool_string.o list.o makefuncs.o value.o nodes.o pool_memory.o main.o keywords.o outfuncs.o +PARSER_OBJS=gram.o parser.o pool_string.o list.o makefuncs.o value.o nodes.o pool_memory.o main.o keywords.o outfuncs.o copyfuncs.o kwlookup.o all: $(PROGRAM) @@ -61,6 +61,12 @@ scan.c : $(PGPOOL_SRC)/scan.l pool_memory.o: $(PGPOOL_SRC)/pool_memory.c $(PGPOOL_SRC)/pool_memory.h gcc -Wall -c -g -include pool.h -I. -I $(PGPOOL_SRC) $< +copyfuncs.o: $(PGPOOL_SRC)/copyfuncs.c + gcc -Wall -c -g -include pool.h -I. -I $(PGPOOL_SRC) $< + +kwlookup.o: $(PGPOOL_SRC)/kwlookup.c + gcc -Wall -c -g -include pool.h -I. -I $(PGPOOL_SRC) $< + test: $(PROGRAM) ./run-test parse_schedule diff --git a/test/parser/expected/copy.out b/test/parser/expected/copy.out index bec9f61a9..9072d770b 100644 --- a/test/parser/expected/copy.out +++ b/test/parser/expected/copy.out @@ -12,4 +12,4 @@ COPY "t" TO 'yyy' BINARY COPY "t" TO 'yyy' OIDS COPY "t" TO 'yyy' DELIMITERS ',' COPY "t" TO 'yyy' NULL 'x' -COPY ( SELECT "*" FROM "t") TO 'xxx' +COPY ( SELECT * FROM "t") TO 'xxx' diff --git a/test/parser/expected/create.out b/test/parser/expected/create.out index 79dfe0a49..48116c8f7 100644 --- a/test/parser/expected/create.out +++ b/test/parser/expected/create.out @@ -1,9 +1,9 @@ -CREATE TABLE "foo" ("a" "int4","b" "text") -CREATE TABLE "foo" ("a" "int4","b" "text") INHERITS ("bar") -CREATE TABLE "foo" ("a" "int4","b" "text") INHERITS ("a","b","c","d") -CREATE TABLE "foo" ("a" "int4","b" "numeric") WITH OIDS -CREATE TABLE "foo" ("a" "int4","b" "numeric") WITHOUT OIDS -CREATE TABLE "foo" ("a" "int4","b" "numeric") WITH ("fillfactor"=10) +CREATE TABLE "foo" ("a" int4,"b" "text") +CREATE TABLE "foo" ("a" int4,"b" "text") INHERITS ("bar") +CREATE TABLE "foo" ("a" int4,"b" "text") INHERITS ("a","b","c","d") +CREATE TABLE "foo" ("a" int4,"b" numeric) WITH OIDS +CREATE TABLE "foo" ("a" int4,"b" numeric) WITHOUT OIDS +CREATE TABLE "foo" ("a" int4,"b" numeric) WITH ("fillfactor"=10) CREATE TABLE "foo" ("a" ,"b" ) AS SELECT 1,2 CREATE TABLE "foo" ("a" ,"b" ) WITH OIDS AS SELECT 1,2 CREATE TABLE "foo" ("a" ,"b" ) WITHOUT OIDS AS SELECT 1,2 @@ -16,26 +16,26 @@ CREATE TABLE "foo" ("a" ,"b" ) ON COMMIT DROP AS SELECT 1,2 CREATE TABLE "foo" ("a" ,"b" ) ON COMMIT DELETE ROWS AS SELECT 1,2 CREATE TABLE "foo" ("a" ,"b" ) ON COMMIT PRESERVE ROWS AS SELECT 1,2 CREATE TABLE "foo" ("a" ,"b" ) ON COMMIT PRESERVE ROWS AS SELECT 1,2 -CREATE TABLE "foo" ("a" "int4",LIKE "a" INCLUDING DEFAULTS) -CREATE TABLE "foo" ("a" "int4",LIKE "a" INCLUDING CONSTRAINTS) -CREATE TABLE "foo" ("a" "int4",LIKE "a" EXCLUDING DEFAULTS) -CREATE TABLE "foo" ("a" "int4",LIKE "a" EXCLUDING CONSTRAINTS) -CREATE TABLE "foo" ("a" "int4" UNIQUE) -CREATE TABLE "foo" ("a" "int4" UNIQUE WITH ("fillfactor"=10)) -CREATE TABLE "foo" ("a" "int4" PRIMARY KEY) -CREATE TABLE "foo" ("a" "int4" CHECK ( ("a">100 ))) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c")) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") MATCH FULL) +CREATE TABLE "foo" ("a" int4,LIKE "a" INCLUDING DEFAULTS) +CREATE TABLE "foo" ("a" int4,LIKE "a" INCLUDING CONSTRAINTS) +CREATE TABLE "foo" ("a" int4,LIKE "a" EXCLUDING DEFAULTS) +CREATE TABLE "foo" ("a" int4,LIKE "a" EXCLUDING CONSTRAINTS) +CREATE TABLE "foo" ("a" int4 UNIQUE) +CREATE TABLE "foo" ("a" int4 UNIQUE WITH ("fillfactor"=10)) +CREATE TABLE "foo" ("a" int4 PRIMARY KEY) +CREATE TABLE "foo" ("a" int4 CHECK ( ("a">100 ))) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c")) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") MATCH FULL) syntax error: CREATE TABLE foo (a int references b(c) MATCH PARTIAL) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c")) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON UPDATE RESTRICT) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON UPDATE CASCADE) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON UPDATE SET NULL) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON UPDATE SET DEFAULT) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON DELETE RESTRICT) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON DELETE CASCADE) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON DELETE SET NULL) -CREATE TABLE "foo" ("a" "int4" REFERENCES "b"("c") ON DELETE SET DEFAULT) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c")) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON UPDATE RESTRICT) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON UPDATE CASCADE) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON UPDATE SET NULL) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON UPDATE SET DEFAULT) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON DELETE RESTRICT) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON DELETE CASCADE) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON DELETE SET NULL) +CREATE TABLE "foo" ("a" int4 REFERENCES "b"("c") ON DELETE SET DEFAULT) CREATE TYPE "enum_test" AS ENUM ('label1','label2') syntax error: CREATE TYPE enum_test AS ENUM (); syntax error: CREATE TYPE enum_test AS ENUM; diff --git a/test/parser/expected/cursor.out b/test/parser/expected/cursor.out index d4a344ba7..98d65c28f 100644 --- a/test/parser/expected/cursor.out +++ b/test/parser/expected/cursor.out @@ -1,9 +1,9 @@ -DECLARE "xx" CURSOR FOR SELECT "*" FROM "t" -DECLARE "xx" BINARY CURSOR FOR SELECT "*" FROM "t" -DECLARE "xx" INSENSITIVE CURSOR FOR SELECT "*" FROM "t" -DECLARE "xx" SCROLL CURSOR FOR SELECT "*" FROM "t" -DECLARE "xx" CURSOR WITH HOLD FOR SELECT "*" FROM "t" -DECLARE "xx" CURSOR FOR SELECT "*" FROM "t" +DECLARE "xx" CURSOR FOR SELECT * FROM "t" +DECLARE "xx" BINARY CURSOR FOR SELECT * FROM "t" +DECLARE "xx" INSENSITIVE CURSOR FOR SELECT * FROM "t" +DECLARE "xx" SCROLL CURSOR FOR SELECT * FROM "t" +DECLARE "xx" CURSOR WITH HOLD FOR SELECT * FROM "t" +DECLARE "xx" CURSOR FOR SELECT * FROM "t" CLOSE "xx" FETCH FORWARD 1 IN "xx" FETCH FORWARD 1 IN "xx" diff --git a/test/parser/expected/delete.out b/test/parser/expected/delete.out index 5f59db3a7..56c3c19d7 100644 --- a/test/parser/expected/delete.out +++ b/test/parser/expected/delete.out @@ -2,8 +2,8 @@ DELETE FROM "t" syntax error: DELETE ; DELETE FROM "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" DELETE FROM "t" WHERE ("x"=3 ) -DELETE FROM "t" WHERE "x" IN ( SELECT "*" FROM "t1") -DELETE FROM "foo" WHERE ("a"=1 ) RETURNING "*" +DELETE FROM "t" WHERE "x" IN ( SELECT * FROM "t1") +DELETE FROM "foo" WHERE ("a"=1 ) RETURNING * DELETE FROM "foo" WHERE ("a"=1 ) RETURNING "a" DELETE FROM "foo" WHERE ("a"=1 ) RETURNING "a","b" DELETE FROM "foo" WHERE CURRENT OF $1 diff --git a/test/parser/expected/insert.out b/test/parser/expected/insert.out index 1665ce453..cbd7ccfad 100644 --- a/test/parser/expected/insert.out +++ b/test/parser/expected/insert.out @@ -4,9 +4,9 @@ INSERT INTO "t"("a", "b", "c") VALUES (2,2) INSERT INTO "t"("a", "b", "c") VALUES (2,2,3) INSERT INTO "t"("a", "b", "c") VALUES (2,DEFAULT,'3') INSERT INTO "t" DEFAULT VALUES -INSERT INTO "t" SELECT "*" FROM "t" +INSERT INTO "t" SELECT * FROM "t" INSERT INTO "t" VALUES ("func"("x","y")) INSERT INTO "t"("a", "b", "c") VALUES (2,DEFAULT,'''\\') -INSERT INTO "foo"("a", "b") VALUES (1,2) RETURNING "*" +INSERT INTO "foo"("a", "b") VALUES (1,2) RETURNING * INSERT INTO "foo"("a", "b") VALUES (1,2) RETURNING "a" INSERT INTO "foo"("a", "b") VALUES (1,2) RETURNING "a","b" diff --git a/test/parser/expected/misc.out b/test/parser/expected/misc.out index 668af4764..056d1f07b 100644 --- a/test/parser/expected/misc.out +++ b/test/parser/expected/misc.out @@ -8,9 +8,9 @@ ANALYZE ANALYZE ANALYZE VERBOSE ANALYZE ANALYZE VERBOSE ANALYZE "x" ANALYZE VERBOSE ANALYZE "x"("a", "b", "c") -EXPLAIN SELECT "*" FROM "t" -EXPLAIN ANALYZE SELECT "*" FROM "t" -EXPLAIN ANALYZE VERBOSE SELECT "*" FROM "t" +EXPLAIN SELECT * FROM "t" +EXPLAIN ANALYZE SELECT * FROM "t" +EXPLAIN ANALYZE VERBOSE SELECT * FROM "t" REINDEX INDEX "x" REINDEX INDEX "x" REINDEX TABLE "x" diff --git a/test/parser/expected/prepare.out b/test/parser/expected/prepare.out index 32772ccd8..de995fe86 100644 --- a/test/parser/expected/prepare.out +++ b/test/parser/expected/prepare.out @@ -1,4 +1,4 @@ -PREPARE "xx" ("int4","text") AS INSERT INTO "foo" VALUES ($1,$2) +PREPARE "xx" (int4,"text") AS INSERT INTO "foo" VALUES ($1,$2) EXECUTE "xx" (1,'xxx') DEALLOCATE "xx" DEALLOCATE "xx" diff --git a/test/parser/expected/privileges.out b/test/parser/expected/privileges.out index 63c1b2474..23dc2af92 100644 --- a/test/parser/expected/privileges.out +++ b/test/parser/expected/privileges.out @@ -6,7 +6,7 @@ GRANT ALL ON "t1","t2" TO "x" GRANT create ON DATABASE "db1", "db2" TO "x","y" GRANT temporary ON DATABASE "db1", "db2" TO "x","y" GRANT temp ON DATABASE "db1", "db2" TO "x","y" -GRANT execute ON FUNCTION "func"("int4","text") TO "x","y" +GRANT execute ON FUNCTION "func"(int4,"text") TO "x","y" GRANT usage ON LANGUAGE "lang" TO "x","y" GRANT create ON SCHEMA "s" TO "x","y" GRANT usage ON SCHEMA "s" TO "x","y" diff --git a/test/parser/expected/select.out b/test/parser/expected/select.out index 29b4cae5e..e399d51c7 100644 --- a/test/parser/expected/select.out +++ b/test/parser/expected/select.out @@ -1,5 +1,5 @@ SELECT 1 - SELECT "*" FROM "t" + SELECT * FROM "t" SELECT "x" FROM "a" SELECT "x"."y" FROM "a" SELECT "x" FROM "a"."b" @@ -10,12 +10,12 @@ syntax error: SELECT * FROM (SELECT * FROM foo); SELECT "x" FROM "a" AS "b" SELECT "a" AS "tttttttttttttttttttttttttttttttttttttttttttttttttttttttt" ,"b" AS "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" FROM "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" syntax error: SELECT ; - SELECT "*" FROM "t" FOR UPDATE - SELECT "*" FROM "t" FOR SHARED - SELECT DISTINCT "*" FROM "t" + SELECT * FROM "t" FOR UPDATE + SELECT * FROM "t" FOR SHARED + SELECT DISTINCT * FROM "t" SELECT DISTINCT ON ("x" ) "x" FROM "t" SELECT DISTINCT ON ("foo"("x") ) "x" FROM "t" - SELECT "*" FROM "t" + SELECT * FROM "t" SELECT "x" FROM "t" WHERE ("x">3 ) SELECT "count"(*) FROM "t" GROUP BY "x" HAVING ("x">111 ) SELECT "count"(*) FROM "t" GROUP BY "x" HAVING ("x">111 ) ORDER BY "y" @@ -23,66 +23,66 @@ syntax error: SELECT ; SELECT "count"(*) FROM "t" GROUP BY "x" HAVING ("x">111 ) ORDER BY "y" SELECT "x" FROM "t" LIMIT ALL SELECT "x" FROM "t" LIMIT 1 - SELECT "*" FROM "t" OFFSET 1 - SELECT "*" FROM "t" OFFSET 1 LIMIT 2 - SELECT "*" FROM "t" OFFSET 1 LIMIT 2 - SELECT "*" FROM "t" LEFT OUTER JOIN "t1" ON ("x"="y" ) - SELECT "*" FROM "t" RIGHT OUTER JOIN "t1" ON ("x"="y" ) - SELECT "*" FROM "t" FULL OUTER JOIN "t1" ON ("x"="y" ) - SELECT "*" FROM "t" LEFT OUTER JOIN "t1" USING("x") - SELECT "*" FROM "t" RIGHT OUTER JOIN "t1" USING("x") - SELECT "*" FROM "t" FULL OUTER JOIN "t1" USING("x") - SELECT "*" FROM "t" JOIN "t1" ON "x" - SELECT "*" FROM "t" NATURAL LEFT OUTER JOIN "t1" - SELECT "*" FROM "t" NATURAL RIGHT OUTER JOIN "t1" - SELECT "*" FROM "t" NATURAL FULL OUTER JOIN "t1" - SELECT "*" FROM "t" WHERE "a" IS NULL - SELECT "*" FROM "t" WHERE "a" IS NOT NULL - SELECT "*" FROM "t" WHERE ("a"~~'abc' ) - SELECT "*" FROM "t" WHERE ("a"!~~'abc' ) - SELECT "*" FROM "t" WHERE ( ("a">=1 ) AND ("a"<=4 )) - SELECT "*" FROM "t" WHERE "a" IN (1,2,3,4) - SELECT "*" FROM "t" WHERE "a" NOT IN (1,2,3,4) - SELECT "*" FROM "t" WHERE EXISTS ( SELECT "*" FROM "tt") - SELECT "*" FROM "t" WHERE (NOT EXISTS ( SELECT "*" FROM "tt")) -( SELECT "*" FROM "t1") UNION ( SELECT "*" FROM "t2") -( SELECT "*" FROM "t1") UNION ALL ( SELECT "*" FROM "t2") -( SELECT "*" FROM "t1") INTERSECT ( SELECT "*" FROM "t2") -( SELECT "*" FROM "t1") INTERSECT ALL ( SELECT "*" FROM "t2") -( SELECT "*" FROM "t1") EXCEPT ( SELECT "*" FROM "t2") -( SELECT "*" FROM "t1") EXCEPT ALL ( SELECT "*" FROM "t2") -CREATE TABLE "x" AS SELECT "*" FROM "t" - SELECT "*" FROM "t1" WHERE "i"<> ALL ( SELECT "i" FROM "t2") -( SELECT "*" FROM "t1") UNION ALL ( SELECT "*" FROM "t2") ORDER BY "a" -( SELECT "*" FROM "t1") UNION ALL ( SELECT "*" FROM "t2" ORDER BY "a") - SELECT "max"("i")::"int4" FROM "test" - SELECT "max"("i")::"int4" FROM "test" WHERE ("a"='aaa''bbb\\ccc' ) - SELECT "max"("i")::"int4" FROM "test" WHERE ("a"='aaa''bbb\\ccc' ) - SELECT "*" FROM "t" WHERE 1=ANY("arr") - SELECT "*" FROM "t" WHERE 1=ALL("arr") - SELECT "*" FROM "t" WHERE 1 IS OF ("int4") - SELECT "*" FROM "t" WHERE 1 IS OF ("int4") - SELECT "*" FROM "t" WHERE "a" IN ('a','b',1) - SELECT "*" FROM "t" WHERE "a" NOT IN ('a','b',1) - SELECT "*" FROM "t" WHERE "a" IS DOCUMENT - SELECT "*" FROM "t" WHERE (NOT "a" IS DOCUMENT) + SELECT * FROM "t" OFFSET 1 + SELECT * FROM "t" OFFSET 1 LIMIT 2 + SELECT * FROM "t" OFFSET 1 LIMIT 2 + SELECT * FROM "t" LEFT OUTER JOIN "t1" ON ("x"="y" ) + SELECT * FROM "t" RIGHT OUTER JOIN "t1" ON ("x"="y" ) + SELECT * FROM "t" FULL OUTER JOIN "t1" ON ("x"="y" ) + SELECT * FROM "t" LEFT OUTER JOIN "t1" USING("x") + SELECT * FROM "t" RIGHT OUTER JOIN "t1" USING("x") + SELECT * FROM "t" FULL OUTER JOIN "t1" USING("x") + SELECT * FROM "t" JOIN "t1" ON "x" + SELECT * FROM "t" NATURAL LEFT OUTER JOIN "t1" + SELECT * FROM "t" NATURAL RIGHT OUTER JOIN "t1" + SELECT * FROM "t" NATURAL FULL OUTER JOIN "t1" + SELECT * FROM "t" WHERE "a" IS NULL + SELECT * FROM "t" WHERE "a" IS NOT NULL + SELECT * FROM "t" WHERE ("a"~~'abc' ) + SELECT * FROM "t" WHERE ("a"!~~'abc' ) + SELECT * FROM "t" WHERE ( ("a">=1 ) AND ("a"<=4 )) + SELECT * FROM "t" WHERE "a" IN (1,2,3,4) + SELECT * FROM "t" WHERE "a" NOT IN (1,2,3,4) + SELECT * FROM "t" WHERE EXISTS ( SELECT * FROM "tt") + SELECT * FROM "t" WHERE (NOT EXISTS ( SELECT * FROM "tt")) +( SELECT * FROM "t1") UNION ( SELECT * FROM "t2") +( SELECT * FROM "t1") UNION ALL ( SELECT * FROM "t2") +( SELECT * FROM "t1") INTERSECT ( SELECT * FROM "t2") +( SELECT * FROM "t1") INTERSECT ALL ( SELECT * FROM "t2") +( SELECT * FROM "t1") EXCEPT ( SELECT * FROM "t2") +( SELECT * FROM "t1") EXCEPT ALL ( SELECT * FROM "t2") +CREATE TABLE "x" AS SELECT * FROM "t" + SELECT * FROM "t1" WHERE "i"<> ALL ( SELECT "i" FROM "t2") +( SELECT * FROM "t1") UNION ALL ( SELECT * FROM "t2") ORDER BY "a" +( SELECT * FROM "t1") UNION ALL ( SELECT * FROM "t2" ORDER BY "a") + SELECT "max"("i")::int4 FROM "test" + SELECT "max"("i")::int4 FROM "test" WHERE ("a"='aaa''bbb\\ccc' ) + SELECT "max"("i")::int4 FROM "test" WHERE ("a"='aaa''bbb\\ccc' ) + SELECT * FROM "t" WHERE 1=ANY("arr") + SELECT * FROM "t" WHERE 1=ALL("arr") + SELECT * FROM "t" WHERE 1 IS OF (int4) + SELECT * FROM "t" WHERE 1 IS OF (int4) + SELECT * FROM "t" WHERE "a" IN ('a','b',1) + SELECT * FROM "t" WHERE "a" NOT IN ('a','b',1) + SELECT * FROM "t" WHERE "a" IS DOCUMENT + SELECT * FROM "t" WHERE (NOT "a" IS DOCUMENT) SELECT XMLCONCAT ("a","b") SELECT XMLELEMENT (NAME "a") SELECT XMLELEMENT (NAME "a","b","c") SELECT XMLFOREST ("a") SELECT XMLPARSE (DOCUMENT 1) SELECT XMLPARSE (DOCUMENT 1 PRESERVE WHITESPACE) - SELECT "day" '1900-1-1' - SELECT "interval" '1 year' - SELECT "interval" '1 year' YEAR - SELECT "interval" '1 year' MONTH - SELECT "interval" '1 year' DAY - SELECT "interval" '1 year' HOUR - SELECT "interval" '1 year' MINUTE - SELECT "interval" '1 year' SECOND - SELECT "interval" '1 year' YEAR TO MONTH - SELECT "interval" '1 year' DAY TO HOUR - SELECT "interval" '1 year' DAY TO MINUTE - SELECT "interval" '1 year' DAY TO SECOND - SELECT "interval" '1 year' HOUR TO MINUTE - SELECT "interval" '1 year' HOUR TO SECOND + SELECT '1900-1-1'::"day" + SELECT '1 year'::interval + SELECT '1 year'::interval YEAR + SELECT '1 year'::interval MONTH + SELECT '1 year'::interval DAY + SELECT '1 year'::interval HOUR + SELECT '1 year'::interval MINUTE + SELECT '1 year'::interval SECOND + SELECT '1 year'::interval YEAR TO MONTH + SELECT '1 year'::interval DAY TO HOUR + SELECT '1 year'::interval DAY TO MINUTE + SELECT '1 year'::interval DAY TO SECOND + SELECT '1 year'::interval HOUR TO MINUTE + SELECT '1 year'::interval HOUR TO SECOND diff --git a/test/parser/expected/update.out b/test/parser/expected/update.out index 82128348c..fb2cf7b95 100644 --- a/test/parser/expected/update.out +++ b/test/parser/expected/update.out @@ -4,7 +4,7 @@ UPDATE "t" SET "a" = 1 FROM "x" UPDATE "t" SET "a" = 1 FROM "x","y","z" UPDATE "t" SET "a" = 1 FROM "x" WHERE ( ("x"<100 ) AND ("y">200 )) UPDATE "t" SET "a" = 1 -UPDATE "foo" SET "a" = 1 RETURNING "*" +UPDATE "foo" SET "a" = 1 RETURNING * UPDATE "foo" SET "a" = 1 RETURNING "a" UPDATE "foo" SET "a" = 1 RETURNING "a","b" UPDATE "foo" SET "a" = 1 WHERE CURRENT OF $1 [parent: ab8b33ca9a9b]