diff --git a/Makefile.in b/Makefile.in index e49d06d5..88ea7c63 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -88,6 +78,11 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \ + $(top_srcdir)/src/sql/pgpool_adm/Makefile.in AUTHORS COPYING \ + ChangeLog INSTALL NEWS README TODO compile config.guess \ + config.sub depcomp install-sh missing ylwrap ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -98,8 +93,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -163,11 +156,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags CSCOPE = cscope -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/src/sql/pgpool_adm/Makefile.in AUTHORS COPYING \ - ChangeLog INSTALL NEWS README TODO compile config.guess \ - config.sub depcomp install-sh ltmain.sh missing mkinstalldirs \ - ylwrap DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -338,7 +326,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -373,6 +360,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -590,16 +578,10 @@ dist-xz: distdir $(am__post_remove_distdir) dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) @@ -634,17 +616,16 @@ distcheck: dist esac chmod -R a-w $(distdir) chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -820,8 +801,6 @@ uninstall-am: mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - docs: $(MAKE) -C doc all && $(MAKE) -C doc.ja all diff --git a/aclocal.m4 b/aclocal.m4 index 99efdd83..27b03b79 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.13.4 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.15' +[am__api_version='1.13' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], +m4_if([$1], [1.13.4], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl +[AM_AUTOMAKE_VERSION([1.13.4])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -103,14 +103,15 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -143,7 +144,7 @@ fi])]) # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -152,12 +153,6 @@ fi])]) # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -233,8 +228,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl @@ -266,51 +261,6 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not @@ -319,6 +269,7 @@ dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -340,7 +291,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -351,7 +302,7 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh+set}" != xset; then +if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -361,7 +312,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -380,7 +331,7 @@ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) -# Copyright (C) 1998-2014 Free Software Foundation, Inc. +# Copyright (C) 1998-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -401,7 +352,7 @@ fi]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -434,9 +385,41 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) ] ) +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_CC_C_O +# -------------- +# Like AC_PROG_CC_C_O, but changed for automake. +AC_DEFUN([AM_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC_C_O])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` +eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o +if test "$am_t" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +dnl Make sure AC_PROG_CC is never called again, or it will override our +dnl setting of CC. +m4_define([AC_PROG_CC], + [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) +]) + # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -477,7 +460,7 @@ fi # Obsolete and "removed" macros, that must however still report explicit # error messages when used, to smooth transition. # -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -504,7 +487,7 @@ AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -533,73 +516,9 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -680,7 +599,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -740,7 +659,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -768,7 +687,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -787,7 +706,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/configure b/configure index 095eff20..b02a41ac 100755 --- a/configure +++ b/configure @@ -754,7 +754,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -849,7 +848,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1102,15 +1100,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1248,7 +1237,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1401,7 +1390,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -3359,6 +3347,9 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + +am__api_version='1.13' + ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then @@ -3388,71 +3379,6 @@ ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -am__api_version='1.15' - # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -3623,6 +3549,9 @@ test "$program_suffix" != NONE && ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) @@ -3640,7 +3569,7 @@ else $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh+set}" != xset; then +if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -3968,8 +3897,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # mkdir_p='$(MKDIR_P)' -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' @@ -3985,48 +3914,6 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 @@ -11857,6 +11744,131 @@ fi done test -n "$YACC" || YACC="yacc" +if test "x$CC" != xcc; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 +$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 +$as_echo_n "checking whether cc understands -c and -o together... " >&6; } +fi +set dummy $CC; ac_cc=`$as_echo "$2" | + sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' +rm -f conftest2.* +if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.$ac_ext >&5' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' + rm -f conftest2.* + if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f core conftest* + +fi +if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h + +fi + +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o +if test "$am_t" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi + @@ -14894,7 +14906,7 @@ ac_config_headers="$ac_config_headers src/include/config.h" ac_config_files="$ac_config_files src/sql/pgpool_adm/Makefile" -ac_config_files="$ac_config_files Makefile doc/Makefile doc/src/Makefile doc/src/sgml/Makefile doc.ja/Makefile doc.ja/src/Makefile doc.ja/src/sgml/Makefile src/Makefile src/include/Makefile src/parser/Makefile src/libs/Makefile src/libs/pcp/Makefile src/tools/Makefile src/tools/pgmd5/Makefile src/tools/pcp/Makefile src/watchdog/Makefile" +ac_config_files="$ac_config_files Makefile doc/Makefile doc/src/Makefile doc/src/sgml/Makefile doc.ja/Makefile doc.ja/src/Makefile doc.ja/src/sgml/Makefile src/Makefile src/include/Makefile src/parser/Makefile src/libs/Makefile src/libs/pcp/Makefile src/tools/Makefile src/tools/pgmd5/Makefile src/tools/pgenc/Makefile src/tools/pcp/Makefile src/watchdog/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -15925,6 +15937,7 @@ do "src/libs/pcp/Makefile") CONFIG_FILES="$CONFIG_FILES src/libs/pcp/Makefile" ;; "src/tools/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;; "src/tools/pgmd5/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/pgmd5/Makefile" ;; + "src/tools/pgenc/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/pgenc/Makefile" ;; "src/tools/pcp/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/pcp/Makefile" ;; "src/watchdog/Makefile") CONFIG_FILES="$CONFIG_FILES src/watchdog/Makefile" ;; diff --git a/configure.ac b/configure.ac index 551a423c..ec5a491c 100644 --- a/configure.ac +++ b/configure.ac @@ -429,4 +429,4 @@ AC_MSG_RESULT([enable cassert = $enable_cassert]) AM_CONFIG_HEADER(src/include/config.h) AC_CONFIG_FILES([src/sql/pgpool_adm/Makefile]) -AC_OUTPUT([Makefile doc/Makefile doc/src/Makefile doc/src/sgml/Makefile doc.ja/Makefile doc.ja/src/Makefile doc.ja/src/sgml/Makefile src/Makefile src/include/Makefile src/parser/Makefile src/libs/Makefile src/libs/pcp/Makefile src/tools/Makefile src/tools/pgmd5/Makefile src/tools/pcp/Makefile src/watchdog/Makefile]) +AC_OUTPUT([Makefile doc/Makefile doc/src/Makefile doc/src/sgml/Makefile doc.ja/Makefile doc.ja/src/Makefile doc.ja/src/sgml/Makefile src/Makefile src/include/Makefile src/parser/Makefile src/libs/Makefile src/libs/pcp/Makefile src/tools/Makefile src/tools/pgmd5/Makefile src/tools/pgenc/Makefile src/tools/pcp/Makefile src/watchdog/Makefile]) diff --git a/doc.ja/Makefile.in b/doc.ja/Makefile.in index b4f7f065..8cb6a977 100644 --- a/doc.ja/Makefile.in +++ b/doc.ja/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -88,6 +78,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc.ja +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -98,7 +90,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -160,7 +151,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -317,7 +307,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -345,6 +334,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps doc.ja/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps doc.ja/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -639,8 +629,6 @@ uninstall-am: mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/doc.ja/src/Makefile.in b/doc.ja/src/Makefile.in index 50f7cad9..86485c08 100644 --- a/doc.ja/src/Makefile.in +++ b/doc.ja/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -88,6 +78,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc.ja/src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -98,7 +90,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -160,7 +151,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -317,7 +307,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -348,6 +337,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps doc.ja/src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps doc.ja/src/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -642,8 +632,6 @@ uninstall-am: mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/doc.ja/src/sgml/Makefile.in b/doc.ja/src/sgml/Makefile.in index f694be45..0d28a186 100644 --- a/doc.ja/src/sgml/Makefile.in +++ b/doc.ja/src/sgml/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -90,6 +80,8 @@ host_triplet = @host@ @STYLE_ENV_SET_TRUE@am__append_1 = -V website-stylesheet @STYLE_ENV_SET_TRUE@am__append_2 = --param website.stylesheet 1 subdir = doc.ja/src/sgml +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -100,7 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -127,7 +118,6 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -259,7 +249,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -307,6 +296,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps doc.ja/src/sgml/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps doc.ja/src/sgml/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -480,8 +470,6 @@ uninstall-am: mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am -.PRECIOUS: Makefile - all: html man1 man8 diff --git a/doc/Makefile.in b/doc/Makefile.in index 2a082071..cfadaedd 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -88,6 +78,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -98,7 +90,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -160,7 +151,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -317,7 +307,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -345,6 +334,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps doc/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -639,8 +629,6 @@ uninstall-am: mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/doc/src/Makefile.in b/doc/src/Makefile.in index fefb66f7..5a63874c 100644 --- a/doc/src/Makefile.in +++ b/doc/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -88,6 +78,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -98,7 +90,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -160,7 +151,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -317,7 +307,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -350,6 +339,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps doc/src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps doc/src/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -644,8 +634,6 @@ uninstall-am: mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/doc/src/sgml/Makefile.in b/doc/src/sgml/Makefile.in index 9daf4493..af322706 100644 --- a/doc/src/sgml/Makefile.in +++ b/doc/src/sgml/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -90,6 +80,8 @@ host_triplet = @host@ @STYLE_ENV_SET_TRUE@am__append_1 = -V website-stylesheet @STYLE_ENV_SET_TRUE@am__append_2 = --param website.stylesheet 1 subdir = doc/src/sgml +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -100,7 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -127,7 +118,6 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -259,7 +249,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -306,6 +295,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps doc/src/sgml/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps doc/src/sgml/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -479,8 +469,6 @@ uninstall-am: mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am -.PRECIOUS: Makefile - all: html man1 man8 diff --git a/src/Makefile.am b/src/Makefile.am index fe401d03..941c943f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -17,6 +17,7 @@ pgpool_SOURCES = main/main.c \ auth/pool_auth.c \ auth/pool_passwd.c \ auth/pool_hba.c \ + auth/auth-scram.c \ protocol/pool_proto2.c \ protocol/child.c \ protocol/pool_process_query.c \ @@ -53,6 +54,10 @@ pgpool_SOURCES = main/main.c \ utils/regex_array.c \ utils/json_writer.c \ utils/json.c \ + utils/scram-common.c \ + utils/base64.c \ + utils/sha2.c \ + utils/ssl_utils.c \ utils/statistics.c DEFS = @DEFS@ \ diff --git a/src/Makefile.in b/src/Makefile.in index 93b645f1..235f91a7 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,17 +16,7 @@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -91,6 +81,9 @@ build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = pgpool$(EXEEXT) subdir = src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs config/pool_config.c \ + $(top_srcdir)/ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -101,7 +94,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -117,8 +109,9 @@ am_pgpool_OBJECTS = main/main.$(OBJEXT) main/pool_globals.$(OBJEXT) \ pcp_con/pcp_child.$(OBJEXT) pcp_con/pcp_worker.$(OBJEXT) \ pcp_con/recovery.$(OBJEXT) auth/md5.$(OBJEXT) \ auth/pool_auth.$(OBJEXT) auth/pool_passwd.$(OBJEXT) \ - auth/pool_hba.$(OBJEXT) protocol/pool_proto2.$(OBJEXT) \ - protocol/child.$(OBJEXT) protocol/pool_process_query.$(OBJEXT) \ + auth/pool_hba.$(OBJEXT) auth/auth-scram.$(OBJEXT) \ + protocol/pool_proto2.$(OBJEXT) protocol/child.$(OBJEXT) \ + protocol/pool_process_query.$(OBJEXT) \ protocol/pool_connection_pool.$(OBJEXT) \ protocol/pool_proto_modules.$(OBJEXT) \ query_cache/pool_memqcache.$(OBJEXT) \ @@ -140,7 +133,9 @@ am_pgpool_OBJECTS = main/main.$(OBJEXT) main/pool_globals.$(OBJEXT) \ utils/mmgr/aset.$(OBJEXT) utils/error/elog.$(OBJEXT) \ utils/error/assert.$(OBJEXT) utils/pcp/pcp_stream.$(OBJEXT) \ utils/regex_array.$(OBJEXT) utils/json_writer.$(OBJEXT) \ - utils/json.$(OBJEXT) utils/statistics.$(OBJEXT) + utils/json.$(OBJEXT) utils/scram-common.$(OBJEXT) \ + utils/base64.$(OBJEXT) utils/sha2.$(OBJEXT) \ + utils/ssl_utils.$(OBJEXT) utils/statistics.$(OBJEXT) pgpool_OBJECTS = $(am_pgpool_OBJECTS) pgpool_DEPENDENCIES = parser/libsql-parser.a parser/nodes.o \ watchdog/lib-watchdog.a @@ -264,8 +259,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ - $(top_srcdir)/ylwrap config/pool_config.c DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -423,7 +416,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -449,6 +441,7 @@ pgpool_SOURCES = main/main.c \ auth/pool_auth.c \ auth/pool_passwd.c \ auth/pool_hba.c \ + auth/auth-scram.c \ protocol/pool_proto2.c \ protocol/child.c \ protocol/pool_process_query.c \ @@ -485,6 +478,10 @@ pgpool_SOURCES = main/main.c \ utils/regex_array.c \ utils/json_writer.c \ utils/json.c \ + utils/scram-common.c \ + utils/base64.c \ + utils/sha2.c \ + utils/ssl_utils.c \ utils/statistics.c sysconf_DATA = sample/pgpool.conf.sample \ @@ -586,6 +583,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -677,6 +675,7 @@ auth/md5.$(OBJEXT): auth/$(am__dirstamp) auth/pool_auth.$(OBJEXT): auth/$(am__dirstamp) auth/pool_passwd.$(OBJEXT): auth/$(am__dirstamp) auth/pool_hba.$(OBJEXT): auth/$(am__dirstamp) +auth/auth-scram.$(OBJEXT): auth/$(am__dirstamp) protocol/$(am__dirstamp): @$(MKDIR_P) protocol @: > protocol/$(am__dirstamp) @@ -741,6 +740,10 @@ utils/pcp/pcp_stream.$(OBJEXT): utils/pcp/$(am__dirstamp) utils/regex_array.$(OBJEXT): utils/$(am__dirstamp) utils/json_writer.$(OBJEXT): utils/$(am__dirstamp) utils/json.$(OBJEXT): utils/$(am__dirstamp) +utils/scram-common.$(OBJEXT): utils/$(am__dirstamp) +utils/base64.$(OBJEXT): utils/$(am__dirstamp) +utils/sha2.$(OBJEXT): utils/$(am__dirstamp) +utils/ssl_utils.$(OBJEXT): utils/$(am__dirstamp) utils/statistics.$(OBJEXT): utils/$(am__dirstamp) pgpool$(EXEEXT): $(pgpool_OBJECTS) $(pgpool_DEPENDENCIES) $(EXTRA_pgpool_DEPENDENCIES) @@ -1119,8 +1122,6 @@ uninstall-am: uninstall-binPROGRAMS uninstall-pkgdataDATA \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-pkgdataDATA uninstall-sysconfDATA -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/src/auth/auth-scram.c b/src/auth/auth-scram.c new file mode 100644 index 00000000..ee412921 --- /dev/null +++ b/src/auth/auth-scram.c @@ -0,0 +1,1653 @@ +/* -*-pgsql-c-*- */ +/* + * $Header$ + * + * pgpool: a language independent connection pool server for PostgreSQL + * written by Tatsuo Ishii + * + * Copyright (c) 2003-2018 PgPool Global Development Group + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose and without fee is hereby + * granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of the + * author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * auth_scram.c: SCRAM authentication stuff + * borrowed from PostgreSQL source src/backend/libpq/auth-scram.c + * + */ +/*------------------------------------------------------------------------- + * + * auth-scram.c + * Server-side implementation of the SASL SCRAM-SHA-256 mechanism. + * + * See the following RFCs for more details: + * - RFC 5802: https://tools.ietf.org/html/rfc5802 + * - RFC 5803: https://tools.ietf.org/html/rfc5803 + * - RFC 7677: https://tools.ietf.org/html/rfc7677 + * + * Here are some differences: + * + * - Username from the authentication exchange is not used. The client + * should send an empty string as the username. + * + * - If the password isn't valid UTF-8, or contains characters prohibited + * by the SASLprep profile, we skip the SASLprep pre-processing and use + * the raw bytes in calculating the hash. + * + * - Channel binding is not supported yet. + * + * + * The password stored in pg_authid consists of the iteration count, salt, + * StoredKey and ServerKey. + * + * SASLprep usage + * -------------- + * + * One notable difference to the SCRAM specification is that while the + * specification dictates that the password is in UTF-8, and prohibits + * certain characters, we are more lenient. If the password isn't a valid + * UTF-8 string, or contains prohibited characters, the raw bytes are used + * to calculate the hash instead, without SASLprep processing. This is + * because PostgreSQL supports other encodings too, and the encoding being + * used during authentication is undefined (client_encoding isn't set until + * after authentication). In effect, we try to interpret the password as + * UTF-8 and apply SASLprep processing, but if it looks invalid, we assume + * that it's in some other encoding. + * + * In the worst case, we misinterpret a password that's in a different + * encoding as being Unicode, because it happens to consists entirely of + * valid UTF-8 bytes, and we apply Unicode normalization to it. As long + * as we do that consistently, that will not lead to failed logins. + * Fortunately, the UTF-8 byte sequences that are ignored by SASLprep + * don't correspond to any commonly used characters in any of the other + * supported encodings, so it should not lead to any significant loss in + * entropy, even if the normalization is incorrectly applied to a + * non-UTF-8 password. + * + * Error handling + * -------------- + * + * Don't reveal user information to an unauthenticated client. We don't + * want an attacker to be able to probe whether a particular username is + * valid. In SCRAM, the server has to read the salt and iteration count + * from the user's password verifier, and send it to the client. To avoid + * revealing whether a user exists, when the client tries to authenticate + * with a username that doesn't exist, or doesn't have a valid SCRAM + * verifier in pg_authid, we create a fake salt and iteration count + * on-the-fly, and proceed with the authentication with that. In the end, + * we'll reject the attempt, as if an incorrect password was given. When + * we are performing a "mock" authentication, the 'doomed' flag in + * scram_state is set. + * + * In the error messages, avoid printing strings from the client, unless + * you check that they are pure ASCII. We don't want an unauthenticated + * attacker to be able to spam the logs with characters that are not valid + * to the encoding being used, whatever that is. We cannot avoid that in + * general, after logging in, but let's do what we can here. + * + * + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/backend/libpq/auth-scram.c + * + *------------------------------------------------------------------------- + */ + +#include +#include +#include +#include "pool.h" +#include "auth/scram-common.h" +#include "utils/sha2.h" +#include "auth/pool_passwd.h" +#include "auth/scram.h" +#include "utils/base64.h" +#include "utils/elog.h" +#include "utils/palloc.h" +#include "utils/memutils.h" + +#include "parser/stringinfo.h" +#include "utils/palloc.h" +#include "utils/elog.h" +#include "utils/memutils.h" + +#define MOCK_AUTH_NONCE_LEN 32 + +typedef enum +{ + FE_SCRAM_INIT, + FE_SCRAM_NONCE_SENT, + FE_SCRAM_PROOF_SENT, + FE_SCRAM_FINISHED +} fe_scram_state_enum; + +typedef struct +{ + fe_scram_state_enum state; + + /* These are supplied by the user */ + const char *username; + char *password; + + /* We construct these */ + uint8 SaltedPassword[SCRAM_KEY_LEN]; + char *client_nonce; + char *client_first_message_bare; + char *client_final_message_without_proof; + + /* These come from the server-first message */ + char *server_first_message; + char *salt; + int saltlen; + int iterations; + char *nonce; + + /* These come from the server-final message */ + char *server_final_message; + char ServerSignature[SCRAM_KEY_LEN]; +} fe_scram_state; + + +/* + * Status data for a SCRAM authentication exchange. This should be kept + * internal to this file. + */ +typedef enum +{ + SCRAM_AUTH_INIT, + SCRAM_AUTH_SALT_SENT, + SCRAM_AUTH_FINISHED +} scram_state_enum; + +typedef struct +{ + scram_state_enum state; + + const char *username; /* username from startup packet */ + + char cbind_flag; + + int iterations; + char *salt; /* base64-encoded */ + uint8 StoredKey[SCRAM_KEY_LEN]; + uint8 ServerKey[SCRAM_KEY_LEN]; + + /* Fields of the first message from client */ + char *client_first_message_bare; + char *client_username; + char *client_nonce; + + /* Fields from the last message from client */ + char *client_final_message_without_proof; + char *client_final_nonce; + char ClientProof[SCRAM_KEY_LEN]; + + /* Fields generated in the server */ + char *server_first_message; + char *server_nonce; + + /* + * If something goes wrong during the authentication, or we are performing + * a "mock" authentication (see comments at top of file), the 'doomed' + * flag is set. A reason for the failure, for the server log, is put in + * 'logdetail'. + */ + bool doomed; + char *logdetail; +} scram_state; + + +static bool read_server_first_message(fe_scram_state *state, char *input); +static bool read_server_final_message(fe_scram_state *state, char *input); +static char *build_client_first_message(fe_scram_state *state); +static char *build_client_final_message(fe_scram_state *state); +static bool verify_server_signature(fe_scram_state *state); +static void calculate_client_proof(fe_scram_state *state, + const char *client_final_message_without_proof, + uint8 *result); + +static void read_client_first_message(scram_state *state, char *input); +static void read_client_final_message(scram_state *state, char *input); +static char *build_server_first_message(scram_state *state); +static char *build_server_final_message(scram_state *state); +static bool verify_client_proof(scram_state *state); +static bool verify_final_nonce(scram_state *state); +static bool parse_scram_verifier(const char *verifier, int *iterations, + char **salt, uint8 *stored_key, uint8 *server_key); +static void mock_scram_verifier(const char *username, int *iterations, + char **salt, uint8 *stored_key, uint8 *server_key); +static bool is_scram_printable(char *p); +static char *sanitize_char(char c); +static char *GetMockAuthenticationNonce(void); +static char *scram_mock_salt(const char *username); + +/* + * pg_be_scram_init + * + * Initialize a new SCRAM authentication exchange status tracker. This + * needs to be called before doing any exchange. It will be filled later + * after the beginning of the exchange with verifier data. + * + * 'username' is the username provided by the client in the startup message. + * 'shadow_pass' is the role's password verifier, from pg_authid.rolpassword. + * If 'shadow_pass' is NULL, we still perform an authentication exchange, but + * it will fail, as if an incorrect password was given. + */ +void * +pg_be_scram_init(const char *username, const char *shadow_pass) +{ + scram_state *state; + bool got_verifier; + + state = (scram_state *) palloc0(sizeof(scram_state)); + state->state = SCRAM_AUTH_INIT; + state->username = username; + + /* + * Parse the stored password verifier. + */ + if (shadow_pass) + { + int password_type = get_password_type(shadow_pass); + + if (password_type == PASSWORD_TYPE_SCRAM_SHA_256) + { + if (parse_scram_verifier(shadow_pass, &state->iterations, &state->salt, + state->StoredKey, state->ServerKey)) + got_verifier = true; + else + { + /* + * The password looked like a SCRAM verifier, but could not be + * parsed. + */ + ereport(LOG, + (errmsg("invalid SCRAM verifier for user \"%s\"", + username))); + got_verifier = false; + } + } + else + { + /* + * The user doesn't have SCRAM verifier. (You cannot do SCRAM + * authentication with an MD5 hash.) + */ + state->logdetail = psprintf(_("User \"%s\" does not have a valid SCRAM verifier."), + state->username); + got_verifier = false; + } + } + else + { + /* + * The caller requested us to perform a dummy authentication. This is + * considered normal, since the caller requested it, so don't set log + * detail. + */ + got_verifier = false; + } + + /* + * If the user did not have a valid SCRAM verifier, we still go through + * the motions with a mock one, and fail as if the client supplied an + * incorrect password. This is to avoid revealing information to an + * attacker. + */ + if (!got_verifier) + { + mock_scram_verifier(username, &state->iterations, &state->salt, + state->StoredKey, state->ServerKey); + state->doomed = true; + } + + return state; +} + +/* + * Continue a SCRAM authentication exchange. + * + * 'input' is the SCRAM payload sent by the client. On the first call, + * 'input' contains the "Initial Client Response" that the client sent as + * part of the SASLInitialResponse message, or NULL if no Initial Client + * Response was given. (The SASL specification distinguishes between an + * empty response and non-existing one.) On subsequent calls, 'input' + * cannot be NULL. For convenience in this function, the caller must + * ensure that there is a null terminator at input[inputlen]. + * + * The next message to send to client is saved in 'output', for a length + * of 'outputlen'. In the case of an error, optionally store a palloc'd + * string at *logdetail that will be sent to the postmaster log (but not + * the client). + */ +int +pg_be_scram_exchange(void *opaq, char *input, int inputlen, + char **output, int *outputlen, char **logdetail) +{ + scram_state *state = (scram_state *) opaq; + int result; + + *output = NULL; + + /* + * If the client didn't include an "Initial Client Response" in the + * SASLInitialResponse message, send an empty challenge, to which the + * client will respond with the same data that usually comes in the + * Initial Client Response. + */ + if (input == NULL) + { + Assert(state->state == SCRAM_AUTH_INIT); + + *output = pstrdup(""); + *outputlen = 0; + return SASL_EXCHANGE_CONTINUE; + } + + /* + * Check that the input length agrees with the string length of the input. + * We can ignore inputlen after this. + */ + if (inputlen == 0) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("The message is empty."))); + if (inputlen != strlen(input)) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Message length does not match input length."))); + + switch (state->state) + { + case SCRAM_AUTH_INIT: + + /* + * Initialization phase. Receive the first message from client + * and be sure that it parsed correctly. Then send the challenge + * to the client. + */ + read_client_first_message(state, input); + + /* prepare message to send challenge */ + *output = build_server_first_message(state); + + state->state = SCRAM_AUTH_SALT_SENT; + result = SASL_EXCHANGE_CONTINUE; + break; + + case SCRAM_AUTH_SALT_SENT: + + /* + * Final phase for the server. Receive the response to the + * challenge previously sent, verify, and let the client know that + * everything went well (or not). + */ + read_client_final_message(state, input); + + if (!verify_final_nonce(state)) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("invalid SCRAM response"), + errdetail("Nonce does not match."))); + + /* + * Now check the final nonce and the client proof. + * + * If we performed a "mock" authentication that we knew would fail + * from the get go, this is where we fail. + * + * The SCRAM specification includes an error code, + * "invalid-proof", for authentication failure, but it also allows + * erroring out in an application-specific way. We choose to do + * the latter, so that the error message for invalid password is + * the same for all authentication methods. The caller will call + * ereport(), when we return SASL_EXCHANGE_FAILURE with no output. + * + * NB: the order of these checks is intentional. We calculate the + * client proof even in a mock authentication, even though it's + * bound to fail, to thwart timing attacks to determine if a role + * with the given name exists or not. + */ + if (!verify_client_proof(state) || state->doomed) + { + result = SASL_EXCHANGE_FAILURE; + break; + } + + /* Build final message for client */ + *output = build_server_final_message(state); + + /* Success! */ + result = SASL_EXCHANGE_SUCCESS; + state->state = SCRAM_AUTH_FINISHED; + break; + + default: + elog(ERROR, "invalid SCRAM exchange state"); + result = SASL_EXCHANGE_FAILURE; + } + + if (result == SASL_EXCHANGE_FAILURE && state->logdetail && logdetail) + *logdetail = state->logdetail; + + if (*output) + *outputlen = strlen(*output); + + return result; +} + +/* + * Construct a verifier string for SCRAM, stored in pg_authid.rolpassword. + * + * The result is palloc'd, so caller is responsible for freeing it. + */ +char * +pg_be_scram_build_verifier(const char *password) +{ + char saltbuf[SCRAM_DEFAULT_SALT_LEN]; + char *result; + + /* Generate random salt */ + pool_random(saltbuf, SCRAM_DEFAULT_SALT_LEN); + + result = scram_build_verifier(saltbuf, SCRAM_DEFAULT_SALT_LEN, + SCRAM_DEFAULT_ITERATIONS, password); + + + return result; +} + +/* + * Verify a plaintext password against a SCRAM verifier. This is used when + * performing plaintext password authentication for a user that has a SCRAM + * verifier stored in pg_authid. + */ +bool +scram_verify_plain_password(const char *username, const char *password, + const char *verifier) +{ + char *encoded_salt; + char *salt; + int saltlen; + int iterations; + uint8 salted_password[SCRAM_KEY_LEN]; + uint8 stored_key[SCRAM_KEY_LEN]; + uint8 server_key[SCRAM_KEY_LEN]; + uint8 computed_key[SCRAM_KEY_LEN]; + char *prep_password = NULL; + + if (!parse_scram_verifier(verifier, &iterations, &encoded_salt, + stored_key, server_key)) + { + /* + * The password looked like a SCRAM verifier, but could not be parsed. + */ + ereport(LOG, + (errmsg("invalid SCRAM verifier for user \"%s\"", username))); + return false; + } + + salt = palloc(pg_b64_dec_len(strlen(encoded_salt))); + saltlen = pg_b64_decode(encoded_salt, strlen(encoded_salt), salt); + if (saltlen == -1) + { + ereport(LOG, + (errmsg("invalid SCRAM verifier for user \"%s\"", username))); + return false; + } + + /* Compute Server Key based on the user-supplied plaintext password */ + scram_SaltedPassword(password, salt, saltlen, iterations, salted_password); + scram_ServerKey(salted_password, computed_key); + + if (prep_password) + pfree(prep_password); + + /* + * Compare the verifier's Server Key with the one computed from the + * user-supplied password. + */ + return memcmp(computed_key, server_key, SCRAM_KEY_LEN) == 0; +} + + +/* + * Parse and validate format of given SCRAM verifier. + * + * Returns true if the SCRAM verifier has been parsed, and false otherwise. + */ +static bool +parse_scram_verifier(const char *verifier, int *iterations, char **salt, + uint8 *stored_key, uint8 *server_key) +{ + char *v; + char *p; + char *scheme_str; + char *salt_str; + char *iterations_str; + char *storedkey_str; + char *serverkey_str; + int decoded_len; + char *decoded_salt_buf; + + /* + * The verifier is of form: + * + * SCRAM-SHA-256$:$: + */ + v = pstrdup(verifier); + if ((scheme_str = strtok(v, "$")) == NULL) + goto invalid_verifier; + if ((iterations_str = strtok(NULL, ":")) == NULL) + goto invalid_verifier; + if ((salt_str = strtok(NULL, "$")) == NULL) + goto invalid_verifier; + if ((storedkey_str = strtok(NULL, ":")) == NULL) + goto invalid_verifier; + if ((serverkey_str = strtok(NULL, "")) == NULL) + goto invalid_verifier; + + /* Parse the fields */ + if (strcmp(scheme_str, "SCRAM-SHA-256") != 0) + goto invalid_verifier; + + errno = 0; + *iterations = strtol(iterations_str, &p, 10); + if (*p || errno != 0) + goto invalid_verifier; + + /* + * Verify that the salt is in Base64-encoded format, by decoding it, + * although we return the encoded version to the caller. + */ + decoded_salt_buf = palloc(pg_b64_dec_len(strlen(salt_str))); + decoded_len = pg_b64_decode(salt_str, strlen(salt_str), decoded_salt_buf); + if (decoded_len < 0) + goto invalid_verifier; + *salt = pstrdup(salt_str); + + /* + * Decode StoredKey and ServerKey. + */ + if (pg_b64_dec_len(strlen(storedkey_str) != SCRAM_KEY_LEN)) + goto invalid_verifier; + decoded_len = pg_b64_decode(storedkey_str, strlen(storedkey_str), + (char *) stored_key); + if (decoded_len != SCRAM_KEY_LEN) + goto invalid_verifier; + + if (pg_b64_dec_len(strlen(serverkey_str) != SCRAM_KEY_LEN)) + goto invalid_verifier; + decoded_len = pg_b64_decode(serverkey_str, strlen(serverkey_str), + (char *) server_key); + if (decoded_len != SCRAM_KEY_LEN) + goto invalid_verifier; + + return true; + +invalid_verifier: + pfree(v); + *salt = NULL; + return false; +} + +static void +mock_scram_verifier(const char *username, int *iterations, char **salt, + uint8 *stored_key, uint8 *server_key) +{ + char *raw_salt; + char *encoded_salt; + int encoded_len; + + /* Generate deterministic salt */ + raw_salt = scram_mock_salt(username); + + encoded_salt = (char *) palloc(pg_b64_enc_len(SCRAM_DEFAULT_SALT_LEN) + 1); + encoded_len = pg_b64_encode(raw_salt, SCRAM_DEFAULT_SALT_LEN, encoded_salt); + encoded_salt[encoded_len] = '\0'; + + *salt = encoded_salt; + *iterations = SCRAM_DEFAULT_ITERATIONS; + + /* StoredKey and ServerKey are not used in a doomed authentication */ + memset(stored_key, 0, SCRAM_KEY_LEN); + memset(server_key, 0, SCRAM_KEY_LEN); +} + +/* + * Read the value in a given SCRAM exchange message for given attribute. + */ +static char * +read_attr_value(char **input, char attr) +{ + char *begin = *input; + char *end; + + if (*begin != attr) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Expected attribute \"%c\" but found \"%s\".", + attr, sanitize_char(*begin)))); + begin++; + + if (*begin != '=') + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Expected character \"=\" for attribute \"%c\".", attr))); + begin++; + + end = begin; + while (*end && *end != ',') + end++; + + if (*end) + { + *end = '\0'; + *input = end + 1; + } + else + *input = end; + + return begin; +} + +static bool +is_scram_printable(char *p) +{ + /*------ + * Printable characters, as defined by SCRAM spec: (RFC 5802) + * + * printable = %x21-2B / %x2D-7E + * ;; Printable ASCII except ",". + * ;; Note that any "printable" is also + * ;; a valid "value". + *------ + */ + for (; *p; p++) + { + if (*p < 0x21 || *p > 0x7E || *p == 0x2C /* comma */ ) + return false; + } + return true; +} + +/* + * Convert an arbitrary byte to printable form. For error messages. + * + * If it's a printable ASCII character, print it as a single character. + * otherwise, print it in hex. + * + * The returned pointer points to a static buffer. + */ +static char * +sanitize_char(char c) +{ + static char buf[5]; + + if (c >= 0x21 && c <= 0x7E) + snprintf(buf, sizeof(buf), "'%c'", c); + else + snprintf(buf, sizeof(buf), "0x%02x", (unsigned char) c); + return buf; +} + +/* + * Read the next attribute and value in a SCRAM exchange message. + * + * Returns NULL if there is attribute. + */ +static char * +read_any_attr(char **input, char *attr_p) +{ + char *begin = *input; + char *end; + char attr = *begin; + + /*------ + * attr-val = ALPHA "=" value + * ;; Generic syntax of any attribute sent + * ;; by server or client + *------ + */ + if (!((attr >= 'A' && attr <= 'Z') || + (attr >= 'a' && attr <= 'z'))) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Attribute expected, but found invalid character \"%s\".", + sanitize_char(attr)))); + if (attr_p) + *attr_p = attr; + begin++; + + if (*begin != '=') + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Expected character \"=\" for attribute \"%c\".", attr))); + begin++; + + end = begin; + while (*end && *end != ',') + end++; + + if (*end) + { + *end = '\0'; + *input = end + 1; + } + else + *input = end; + + return begin; +} + +/* + * Read and parse the first message from client in the context of a SCRAM + * authentication exchange message. + * + * At this stage, any errors will be reported directly with ereport(ERROR). + */ +static void +read_client_first_message(scram_state *state, char *input) +{ + input = pstrdup(input); + + /*------ + * The syntax for the client-first-message is: (RFC 5802) + * + * saslname = 1*(value-safe-char / "=2C" / "=3D") + * ;; Conforms to . + * + * authzid = "a=" saslname + * ;; Protocol specific. + * + * cb-name = 1*(ALPHA / DIGIT / "." / "-") + * ;; See RFC 5056, Section 7. + * ;; E.g., "tls-server-end-point" or + * ;; "tls-unique". + * + * gs2-cbind-flag = ("p=" cb-name) / "n" / "y" + * ;; "n" -> client doesn't support channel binding. + * ;; "y" -> client does support channel binding + * ;; but thinks the server does not. + * ;; "p" -> client requires channel binding. + * ;; The selected channel binding follows "p=". + * + * gs2-header = gs2-cbind-flag "," [ authzid ] "," + * ;; GS2 header for SCRAM + * ;; (the actual GS2 header includes an optional + * ;; flag to indicate that the GSS mechanism is not + * ;; "standard", but since SCRAM is "standard", we + * ;; don't include that flag). + * + * username = "n=" saslname + * ;; Usernames are prepared using SASLprep. + * + * reserved-mext = "m=" 1*(value-char) + * ;; Reserved for signaling mandatory extensions. + * ;; The exact syntax will be defined in + * ;; the future. + * + * nonce = "r=" c-nonce [s-nonce] + * ;; Second part provided by server. + * + * c-nonce = printable + * + * client-first-message-bare = + * [reserved-mext ","] + * username "," nonce ["," extensions] + * + * client-first-message = + * gs2-header client-first-message-bare + * + * For example: + * n,,n=user,r=fyko+d2lbbFgONRv9qkxdawL + * + * The "n,," in the beginning means that the client doesn't support + * channel binding, and no authzid is given. "n=user" is the username. + * However, in PostgreSQL the username is sent in the startup packet, and + * the username in the SCRAM exchange is ignored. libpq always sends it + * as an empty string. The last part, "r=fyko+d2lbbFgONRv9qkxdawL" is + * the client nonce. + *------ + */ + + /* read gs2-cbind-flag */ + state->cbind_flag = *input; + switch (*input) + { + case 'n': + /* Client does not support channel binding */ + input++; + break; + case 'y': + /* Client supports channel binding, but we're not doing it today */ + input++; + break; + case 'p': + + /* + * Client requires channel binding. We don't support it. + * + * RFC 5802 specifies a particular error code, + * e=server-does-support-channel-binding, for this. But it can + * only be sent in the server-final message, and we don't want to + * go through the motions of the authentication, knowing it will + * fail, just to send that error message. + */ + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("client requires SCRAM channel binding, but it is not supported"))); + default: + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Unexpected channel-binding flag \"%s\".", + sanitize_char(*input)))); + } + if (*input != ',') + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Comma expected, but found character \"%s\".", + sanitize_char(*input)))); + input++; + + /* + * Forbid optional authzid (authorization identity). We don't support it. + */ + if (*input == 'a') + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("client uses authorization identity, but it is not supported"))); + if (*input != ',') + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Unexpected attribute \"%s\" in client-first-message.", + sanitize_char(*input)))); + input++; + + state->client_first_message_bare = pstrdup(input); + + /* + * Any mandatory extensions would go here. We don't support any. + * + * RFC 5802 specifies error code "e=extensions-not-supported" for this, + * but it can only be sent in the server-final message. We prefer to fail + * immediately (which the RFC also allows). + */ + if (*input == 'm') + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("client requires an unsupported SCRAM extension"))); + + /* + * Read username. Note: this is ignored. We use the username from the + * startup message instead, still it is kept around if provided as it + * proves to be useful for debugging purposes. + */ + state->client_username = read_attr_value(&input, 'n'); + + /* read nonce and check that it is made of only printable characters */ + state->client_nonce = read_attr_value(&input, 'r'); + if (!is_scram_printable(state->client_nonce)) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("non-printable characters in SCRAM nonce"))); + + /* + * There can be any number of optional extensions after this. We don't + * support any extensions, so ignore them. + */ + while (*input != '\0') + read_any_attr(&input, NULL); + + /* success! */ +} + +/* + * Verify the final nonce contained in the last message received from + * client in an exchange. + */ +static bool +verify_final_nonce(scram_state *state) +{ + int client_nonce_len = strlen(state->client_nonce); + int server_nonce_len = strlen(state->server_nonce); + int final_nonce_len = strlen(state->client_final_nonce); + + if (final_nonce_len != client_nonce_len + server_nonce_len) + return false; + if (memcmp(state->client_final_nonce, state->client_nonce, client_nonce_len) != 0) + return false; + if (memcmp(state->client_final_nonce + client_nonce_len, state->server_nonce, server_nonce_len) != 0) + return false; + + return true; +} + +/* + * Verify the client proof contained in the last message received from + * client in an exchange. + */ +static bool +verify_client_proof(scram_state *state) +{ + uint8 ClientSignature[SCRAM_KEY_LEN]; + uint8 ClientKey[SCRAM_KEY_LEN]; + uint8 client_StoredKey[SCRAM_KEY_LEN]; + scram_HMAC_ctx ctx; + int i; + + /* calculate ClientSignature */ + scram_HMAC_init(&ctx, state->StoredKey, SCRAM_KEY_LEN); + scram_HMAC_update(&ctx, + state->client_first_message_bare, + strlen(state->client_first_message_bare)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + state->server_first_message, + strlen(state->server_first_message)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + state->client_final_message_without_proof, + strlen(state->client_final_message_without_proof)); + scram_HMAC_final(ClientSignature, &ctx); + + /* Extract the ClientKey that the client calculated from the proof */ + for (i = 0; i < SCRAM_KEY_LEN; i++) + ClientKey[i] = state->ClientProof[i] ^ ClientSignature[i]; + + /* Hash it one more time, and compare with StoredKey */ + scram_H(ClientKey, SCRAM_KEY_LEN, client_StoredKey); + + if (memcmp(client_StoredKey, state->StoredKey, SCRAM_KEY_LEN) != 0) + return false; + + return true; +} + +/* + * Build the first server-side message sent to the client in a SCRAM + * communication exchange. + */ +static char * +build_server_first_message(scram_state *state) +{ + /*------ + * The syntax for the server-first-message is: (RFC 5802) + * + * server-first-message = + * [reserved-mext ","] nonce "," salt "," + * iteration-count ["," extensions] + * + * nonce = "r=" c-nonce [s-nonce] + * ;; Second part provided by server. + * + * c-nonce = printable + * + * s-nonce = printable + * + * salt = "s=" base64 + * + * iteration-count = "i=" posit-number + * ;; A positive number. + * + * Example: + * + * r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096 + *------ + */ + + /* + * Per the spec, the nonce may consist of any printable ASCII characters. + * For convenience, however, we don't use the whole range available, + * rather, we generate some random bytes, and base64 encode them. + */ + char raw_nonce[SCRAM_RAW_NONCE_LEN]; + int encoded_len; + + pool_random(raw_nonce, SCRAM_RAW_NONCE_LEN); + + state->server_nonce = palloc(pg_b64_enc_len(SCRAM_RAW_NONCE_LEN) + 1); + encoded_len = pg_b64_encode(raw_nonce, SCRAM_RAW_NONCE_LEN, state->server_nonce); + state->server_nonce[encoded_len] = '\0'; + + state->server_first_message = + psprintf("r=%s%s,s=%s,i=%u", + state->client_nonce, state->server_nonce, + state->salt, state->iterations); + + return pstrdup(state->server_first_message); +} + + +/* + * Read and parse the final message received from client. + */ +static void +read_client_final_message(scram_state *state, char *input) +{ + char attr; + char *channel_binding; + char *value; + char *begin, + *proof; + char *p; + char *client_proof; + + begin = p = pstrdup(input); + + /*------ + * The syntax for the server-first-message is: (RFC 5802) + * + * gs2-header = gs2-cbind-flag "," [ authzid ] "," + * ;; GS2 header for SCRAM + * ;; (the actual GS2 header includes an optional + * ;; flag to indicate that the GSS mechanism is not + * ;; "standard", but since SCRAM is "standard", we + * ;; don't include that flag). + * + * cbind-input = gs2-header [ cbind-data ] + * ;; cbind-data MUST be present for + * ;; gs2-cbind-flag of "p" and MUST be absent + * ;; for "y" or "n". + * + * channel-binding = "c=" base64 + * ;; base64 encoding of cbind-input. + * + * proof = "p=" base64 + * + * client-final-message-without-proof = + * channel-binding "," nonce ["," + * extensions] + * + * client-final-message = + * client-final-message-without-proof "," proof + *------ + */ + + /* + * Read channel-binding. We don't support channel binding, so it's + * expected to always be "biws", which is "n,,", base64-encoded, or + * "eSws", which is "y,,". We also have to check whether the flag is + * the same one that the client originally sent. + */ + channel_binding = read_attr_value(&p, 'c'); + if (!(strcmp(channel_binding, "biws") == 0 && state->cbind_flag == 'n') && + !(strcmp(channel_binding, "eSws") == 0 && state->cbind_flag == 'y')) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + (errmsg("unexpected SCRAM channel-binding attribute in client-final-message")))); + state->client_final_nonce = read_attr_value(&p, 'r'); + + /* ignore optional extensions */ + do + { + proof = p - 1; + value = read_any_attr(&p, &attr); + } while (attr != 'p'); + + client_proof = palloc(pg_b64_dec_len(strlen(value))); + if (pg_b64_decode(value, strlen(value), client_proof) != SCRAM_KEY_LEN) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Malformed proof in client-final-message."))); + memcpy(state->ClientProof, client_proof, SCRAM_KEY_LEN); + pfree(client_proof); + + if (*p != '\0') + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("malformed SCRAM message"), + errdetail("Garbage found at the end of client-final-message."))); + + state->client_final_message_without_proof = palloc(proof - begin + 1); + memcpy(state->client_final_message_without_proof, input, proof - begin); + state->client_final_message_without_proof[proof - begin] = '\0'; +} + +/* + * Build the final server-side message of an exchange. + */ +static char * +build_server_final_message(scram_state *state) +{ + uint8 ServerSignature[SCRAM_KEY_LEN]; + char *server_signature_base64; + int siglen; + scram_HMAC_ctx ctx; + + /* calculate ServerSignature */ + scram_HMAC_init(&ctx, state->ServerKey, SCRAM_KEY_LEN); + scram_HMAC_update(&ctx, + state->client_first_message_bare, + strlen(state->client_first_message_bare)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + state->server_first_message, + strlen(state->server_first_message)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + state->client_final_message_without_proof, + strlen(state->client_final_message_without_proof)); + scram_HMAC_final(ServerSignature, &ctx); + + server_signature_base64 = palloc(pg_b64_enc_len(SCRAM_KEY_LEN) + 1); + siglen = pg_b64_encode((const char *) ServerSignature, + SCRAM_KEY_LEN, server_signature_base64); + server_signature_base64[siglen] = '\0'; + + /*------ + * The syntax for the server-final-message is: (RFC 5802) + * + * verifier = "v=" base64 + * ;; base-64 encoded ServerSignature. + * + * server-final-message = (server-error / verifier) + * ["," extensions] + * + *------ + */ + return psprintf("v=%s", server_signature_base64); +} + + +/* + * Determinisitcally generate salt for mock authentication, using a SHA256 + * hash based on the username and a cluster-level secret key. Returns a + * pointer to a static buffer of size SCRAM_DEFAULT_SALT_LEN. + */ +static char * +GetMockAuthenticationNonce(void) +{ + static char mockNonce[MOCK_AUTH_NONCE_LEN] = "pgpool-II random nonce string"; + return mockNonce; +} +static char * +scram_mock_salt(const char *username) +{ + pg_sha256_ctx ctx; + static uint8 sha_digest[PG_SHA256_DIGEST_LENGTH]; + char *mock_auth_nonce = GetMockAuthenticationNonce(); + + /* + * Generate salt using a SHA256 hash of the username and the cluster's + * mock authentication nonce. (This works as long as the salt length is + * not larger the SHA256 digest length. If the salt is smaller, the caller + * will just ignore the extra data.) + */ + StaticAssertStmt(PG_SHA256_DIGEST_LENGTH >= SCRAM_DEFAULT_SALT_LEN, + "salt length greater than SHA256 digest length"); + + pg_sha256_init(&ctx); + pg_sha256_update(&ctx, (uint8 *) username, strlen(username)); + pg_sha256_update(&ctx, (uint8 *) mock_auth_nonce, MOCK_AUTH_NONCE_LEN); + pg_sha256_final(&ctx, sha_digest); + + return (char *) sha_digest; +} + +/* scram client auth code */ + +/* + * Initialize SCRAM exchange status. + */ +void * +pg_fe_scram_init(const char *username, const char *password) +{ + fe_scram_state *state; + + state = (fe_scram_state *) palloc(sizeof(fe_scram_state)); + if (!state) + return NULL; + memset(state, 0, sizeof(fe_scram_state)); + state->state = FE_SCRAM_INIT; + state->username = username; + + state->password = pstrdup(password); + + return state; +} + +/* + * Free SCRAM exchange status + */ +void +pg_fe_scram_free(void *opaq) +{ + fe_scram_state *state = (fe_scram_state *) opaq; + + if (state->password) + pfree(state->password); + + /* client messages */ + if (state->client_nonce) + pfree(state->client_nonce); + if (state->client_first_message_bare) + pfree(state->client_first_message_bare); + if (state->client_final_message_without_proof) + pfree(state->client_final_message_without_proof); + + /* first message from server */ + if (state->server_first_message) + pfree(state->server_first_message); + if (state->salt) + pfree(state->salt); + if (state->nonce) + pfree(state->nonce); + + /* final message from server */ + if (state->server_final_message) + pfree(state->server_final_message); + + pfree(state); +} + +/* + * Exchange a SCRAM message with backend. + */ +void +pg_fe_scram_exchange(void *opaq, char *input, int inputlen, + char **output, int *outputlen, + bool *done, bool *success) +{ + fe_scram_state *state = (fe_scram_state *) opaq; + + *done = false; + *success = false; + *output = NULL; + *outputlen = 0; + + /* + * Check that the input length agrees with the string length of the input. + * We can ignore inputlen after this. + */ + if (state->state != FE_SCRAM_INIT) + { + if (inputlen == 0) + { + ereport(ERROR, + (errmsg("malformed SCRAM message from server (empty message)"))); + goto error; + } + if (inputlen != strlen(input)) + { + ereport(ERROR, + (errmsg("malformed SCRAM message (length mismatch)"))); + + goto error; + } + } + + switch (state->state) + { + case FE_SCRAM_INIT: + /* Begin the SCRAM handshake, by sending client nonce */ + *output = build_client_first_message(state); + if (*output == NULL) + goto error; + + *outputlen = strlen(*output); + *done = false; + state->state = FE_SCRAM_NONCE_SENT; + break; + + case FE_SCRAM_NONCE_SENT: + /* Receive salt and server nonce, send response. */ + if (!read_server_first_message(state, input)) + goto error; + + *output = build_client_final_message(state); + if (*output == NULL) + goto error; + + *outputlen = strlen(*output); + *done = false; + state->state = FE_SCRAM_PROOF_SENT; + break; + + case FE_SCRAM_PROOF_SENT: + /* Receive server signature */ + if (!read_server_final_message(state, input)) + goto error; + + /* + * Verify server signature, to make sure we're talking to the + * genuine server. XXX: A fake server could simply not require + * authentication, though. There is currently no option in libpq + * to reject a connection, if SCRAM authentication did not happen. + */ + if (verify_server_signature(state)) + *success = true; + else + { + *success = false; + ereport(ERROR, + (errmsg("incorrect server signature"))); + } + *done = true; + state->state = FE_SCRAM_FINISHED; + break; + + default: + /* shouldn't happen */ + ereport(ERROR, + (errmsg("invalid SCRAM exchange state"))); + goto error; + } + return; + +error: + *done = true; + *success = false; + return; +} + +/* + * Build the first exchange message sent by the client. + */ +static char * +build_client_first_message(fe_scram_state *state) +{ + char raw_nonce[SCRAM_RAW_NONCE_LEN + 1]; + char *buf; + char buflen; + int encoded_len; + + /* + * Generate a "raw" nonce. This is converted to ASCII-printable form by + * base64-encoding it. + */ + pool_random(raw_nonce, SCRAM_RAW_NONCE_LEN); + + state->client_nonce = palloc(pg_b64_enc_len(SCRAM_RAW_NONCE_LEN) + 1); + + encoded_len = pg_b64_encode(raw_nonce, SCRAM_RAW_NONCE_LEN, state->client_nonce); + state->client_nonce[encoded_len] = '\0'; + + /* + * Generate message. The username is left empty as the backend uses the + * value provided by the startup packet. Also, as this username is not + * prepared with SASLprep, the message parsing would fail if it includes + * '=' or ',' characters. + */ + buflen = 8 + strlen(state->client_nonce) + 1; + buf = palloc(buflen); + + snprintf(buf, buflen, "n,,n=,r=%s", state->client_nonce); + + state->client_first_message_bare = pstrdup(buf + 3); + + return buf; +} + +/* + * Build the final exchange message sent from the client. + */ +static char * +build_client_final_message(fe_scram_state *state) +{ + StringInfoData buf; + uint8 client_proof[SCRAM_KEY_LEN]; + char *result; + + initStringInfo(&buf); + + /* + * Construct client-final-message-without-proof. We need to remember it + * for verifying the server proof in the final step of authentication. + */ + appendStringInfo(&buf, "c=biws,r=%s", state->nonce); + + state->client_final_message_without_proof = pstrdup(buf.data); + + /* Append proof to it, to form client-final-message. */ + calculate_client_proof(state, + state->client_final_message_without_proof, + client_proof); + ///// + appendStringInfoString(&buf, ",p="); + + /* + char *encoded_data = palloc(pg_b64_enc_len(SCRAM_KEY_LEN) + 1); + int len = encoded_data = pg_b64_encode((char *) client_proof, + SCRAM_KEY_LEN, + encoded_data); + encoded_data[len] = '\0'; + appendStringInfoString(&buf, encoded_data); + */ + + enlargeStringInfo(&buf, pg_b64_enc_len(SCRAM_KEY_LEN)); + buf.len += pg_b64_encode((char *) client_proof, + SCRAM_KEY_LEN, + buf.data + buf.len); + buf.data[buf.len] = '\0'; + + result = pstrdup(buf.data); + + pfree(buf.data); + return result; +} + +/* + * Read the first exchange message coming from the server. + */ +static bool +read_server_first_message(fe_scram_state *state, char *input) +{ + char *iterations_str; + char *endptr; + char *encoded_salt; + char *nonce; + + state->server_first_message = pstrdup(input); + + /* parse the message */ + nonce = read_attr_value(&input, 'r'); + if (nonce == NULL) + { + /* read_attr_value() has generated an error string */ + return false; + } + + /* Verify immediately that the server used our part of the nonce */ + if (strlen(nonce) < strlen(state->client_nonce) || + memcmp(nonce, state->client_nonce, strlen(state->client_nonce)) != 0) + { + ereport(ERROR, + (errmsg("invalid SCRAM response from server(nonce mismatch)"))); + return false; + } + + state->nonce = pstrdup(nonce); + + encoded_salt = read_attr_value(&input, 's'); + if (encoded_salt == NULL) + { + /* read_attr_value() has generated an error string */ + return false; + } + state->salt = palloc(pg_b64_dec_len(strlen(encoded_salt))); + + state->saltlen = pg_b64_decode(encoded_salt, + strlen(encoded_salt), + state->salt); + + iterations_str = read_attr_value(&input, 'i'); + if (iterations_str == NULL) + { + /* read_attr_value() has generated an error string */ + return false; + } + state->iterations = strtol(iterations_str, &endptr, 10); + if (*endptr != '\0' || state->iterations < 1) + { + ereport(ERROR, + (errmsg("malformed SCRAM message from server (invalid iteration count)"))); + return false; + } + + if (*input != '\0') + ereport(WARNING, + (errmsg("malformed SCRAM message from server (garbage at end of server-first-message)"))); + + return true; +} + +/* + * Read the final exchange message coming from the server. + */ +static bool +read_server_final_message(fe_scram_state *state, char *input) +{ + char *encoded_server_signature; + int server_signature_len; + + state->server_final_message = pstrdup(input); + + /* Check for error result. */ + if (*input == 'e') + { + char *err = read_attr_value(&input, 'e'); + + ereport(ERROR, + (errmsg("error received from server in SCRAM exchange: %s",err))); + return false; + } + + /* Parse the message. */ + encoded_server_signature = read_attr_value(&input, 'v'); + if (encoded_server_signature == NULL) + { + /* read_attr_value() has generated an error message */ + return false; + } + + if (*input != '\0') + ereport(WARNING, + (errmsg("malformed SCRAM message (garbage at end of server-final-message)"))); + + server_signature_len = pg_b64_decode(encoded_server_signature, + strlen(encoded_server_signature), + state->ServerSignature); + if (server_signature_len != SCRAM_KEY_LEN) + { + ereport(ERROR, + (errmsg("malformed SCRAM message from server (invalid server signature)"))); + return false; + } + + return true; +} + +/* + * Calculate the client proof, part of the final exchange message sent + * by the client. + */ +static void +calculate_client_proof(fe_scram_state *state, + const char *client_final_message_without_proof, + uint8 *result) +{ + uint8 StoredKey[SCRAM_KEY_LEN]; + uint8 ClientKey[SCRAM_KEY_LEN]; + uint8 ClientSignature[SCRAM_KEY_LEN]; + int i; + scram_HMAC_ctx ctx; + + /* + * Calculate SaltedPassword, and store it in 'state' so that we can reuse + * it later in verify_server_signature. + */ + scram_SaltedPassword(state->password, state->salt, state->saltlen, + state->iterations, state->SaltedPassword); + + scram_ClientKey(state->SaltedPassword, ClientKey); + scram_H(ClientKey, SCRAM_KEY_LEN, StoredKey); + + scram_HMAC_init(&ctx, StoredKey, SCRAM_KEY_LEN); + scram_HMAC_update(&ctx, + state->client_first_message_bare, + strlen(state->client_first_message_bare)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + state->server_first_message, + strlen(state->server_first_message)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + client_final_message_without_proof, + strlen(client_final_message_without_proof)); + scram_HMAC_final(ClientSignature, &ctx); + + for (i = 0; i < SCRAM_KEY_LEN; i++) + result[i] = ClientKey[i] ^ ClientSignature[i]; +} + +/* + * Validate the server signature, received as part of the final exchange + * message received from the server. + */ +static bool +verify_server_signature(fe_scram_state *state) +{ + uint8 expected_ServerSignature[SCRAM_KEY_LEN]; + uint8 ServerKey[SCRAM_KEY_LEN]; + scram_HMAC_ctx ctx; + + scram_ServerKey(state->SaltedPassword, ServerKey); + + /* calculate ServerSignature */ + scram_HMAC_init(&ctx, ServerKey, SCRAM_KEY_LEN); + scram_HMAC_update(&ctx, + state->client_first_message_bare, + strlen(state->client_first_message_bare)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + state->server_first_message, + strlen(state->server_first_message)); + scram_HMAC_update(&ctx, ",", 1); + scram_HMAC_update(&ctx, + state->client_final_message_without_proof, + strlen(state->client_final_message_without_proof)); + scram_HMAC_final(expected_ServerSignature, &ctx); + + if (memcmp(expected_ServerSignature, state->ServerSignature, SCRAM_KEY_LEN) != 0) + return false; + + return true; +} + +/* + * Build a new SCRAM verifier. + */ +char * +pg_fe_scram_build_verifier(const char *password) +{ + char saltbuf[SCRAM_DEFAULT_SALT_LEN]; + char *result; + + /* Generate a random salt */ + pool_random(saltbuf, SCRAM_DEFAULT_SALT_LEN); + + result = scram_build_verifier(saltbuf, SCRAM_DEFAULT_SALT_LEN, + SCRAM_DEFAULT_ITERATIONS, password); + + return result; +} + diff --git a/src/auth/pool_auth.c b/src/auth/pool_auth.c index b8597815..0f34c194 100644 --- a/src/auth/pool_auth.c +++ b/src/auth/pool_auth.c @@ -26,9 +26,11 @@ #include "pool_config.h" #include "auth/pool_hba.h" #include "auth/pool_passwd.h" +#include "auth/scram.h" #include "utils/elog.h" #include "utils/palloc.h" #include "utils/memutils.h" +#include "auth/md5.h" #ifdef HAVE_SYS_TYPES_H #include #endif @@ -38,24 +40,43 @@ #ifdef HAVE_PARAM_H #include #endif +#ifdef USE_SSL +#include +#endif + #include #include #include #define AUTHFAIL_ERRORCODE "28000" +#define MAX_SASL_PAYLOAD_LEN 1024 + static POOL_STATUS pool_send_backend_key_data(POOL_CONNECTION *frontend, int pid, int key, int protoMajor); static int do_clear_text_password(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor); static void pool_send_auth_fail(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *cp); static int do_crypt(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor); -static int do_md5(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor); -static int send_md5auth_request(POOL_CONNECTION *frontend, int protoMajor, char *salt); +static int do_md5(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor, + char *storedPassword, PasswordType passwordType); +static int do_md5_single_backend(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor); +static void send_md5auth_request(POOL_CONNECTION *frontend, int protoMajor, char *salt); static int read_password_packet(POOL_CONNECTION *frontend, int protoMajor, char *password, int *pwdSize); static int send_password_packet(POOL_CONNECTION *backend, int protoMajor, char *password); static int send_auth_ok(POOL_CONNECTION *frontend, int protoMajor); - +static void sendAuthRequest(POOL_CONNECTION *frontend, int protoMajor, int32 auth_req_type, char *extradata, int extralen); static long PostmasterRandom(void); +static int pg_SASL_continue(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, char *payload, int payloadlen, void *sasl_state, bool final); +static void* pg_SASL_init(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, char *payload, int payloadlen, char* storedPassword); +static bool do_SCRAM(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, int protoMajor, int message_length, + char *storedPassword, PasswordType passwordType); +static void authenticate_frontend_md5(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor); +static void authenticate_frontend_cert(POOL_CONNECTION *frontend); +static void authenticate_frontend_SCRAM(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth); +static void authenticate_frontend_clear_text(POOL_CONNECTION *frontend); +static bool get_auth_password(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, + char** password, PasswordType *passwordType); + /* * After sending the start up packet to the backend, do the * authentication against backend. if success return 0 otherwise non @@ -70,6 +91,7 @@ int pool_do_auth(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *cp) int length; int authkind; int i; + int message_length = 0; StartupPacket *sp; @@ -105,14 +127,17 @@ int pool_do_auth(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *cp) /* * message length (v3 only) */ - if (protoMajor == PROTO_MAJOR_V3 && pool_read_message_length(cp) < 0) - ereport(ERROR, - (errmsg("invalid authentication packet from backend"), - errdetail("failed to get the authentication packet length"), - errhint("This is likely caused by the inconsistency of auth method among DB nodes. \ - Please check the previous error messages (hint: length field) \ - from pool_read_message_length and recheck the pg_hba.conf settings."))); - + if (protoMajor == PROTO_MAJOR_V3) + { + message_length = pool_read_message_length(cp); + if (message_length <= 0) + ereport(ERROR, + (errmsg("invalid authentication packet from backend"), + errdetail("failed to get the authentication packet length"), + errhint("This is likely caused by the inconsistency of auth method among DB nodes. \ + Please check the previous error messages (hint: length field) \ + from pool_read_message_length and recheck the pg_hba.conf settings."))); + } /* * read authentication request kind. @@ -141,9 +166,8 @@ int pool_do_auth(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *cp) ereport(DEBUG1, (errmsg("authentication backend"), errdetail("auth kind:%d", authkind))); - /* trust? */ - if (authkind == 0) + if (authkind == AUTH_REQ_OK) { int msglen; @@ -157,11 +181,11 @@ int pool_do_auth(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *cp) msglen = htonl(0); pool_write_and_flush(frontend, &msglen, sizeof(msglen)); - MASTER(cp)->auth_kind = 0; + MASTER(cp)->auth_kind = AUTH_REQ_OK; } /* clear text password authentication? */ - else if (authkind == 3) + else if (authkind == AUTH_REQ_PASSWORD) { for (i=0;ipool_hba == NULL || frontend->pool_hba->auth_method != uaMD5) && !RAW_MODE && NUM_BACKENDS > 1) + if (NUM_BACKENDS > 1) { - pool_send_error_message(frontend, protoMajor, AUTHFAIL_ERRORCODE, - "MD5 authentication is unsupported in replication and master-slave modes.", - "", - "check pg_hba.conf", - __FILE__, __LINE__); - ereport(ERROR, - (errmsg("failed to authenticate with backend"), - errdetail("MD5 authentication is not supported in replication and master-slave modes."), - errhint("check pg_hba.conf settings on backend node"))); + if (get_auth_password(MASTER(cp), frontend, 0, + &password, &passwordType) == false) + { + /* + * We do not have any passeord, + * we can still get the password from client using plain text authentication + * if it is allowed by user + */ + if (frontend->pool_hba == NULL && pool_config->allow_clear_text_frontend_auth) + { + ereport(LOG, + (errmsg("using clear text authentication with frontend"), + errdetail("backend will still use md5 auth"), + errhint("you can disable this behavior by setting allow_clear_text_frontend_auth to off"))); + authenticate_frontend_clear_text(frontend); + /* now check again if we have a password now */ + if (get_auth_password(MASTER(cp), frontend, 0, + &password, &passwordType) == false) + { + ereport(ERROR, + (errmsg("failed to authenticate with backend using md5"), + errdetail("unable to get the password"))); + } + } + } + /* we have a password to use, validate the password type */ + if (passwordType != PASSWORD_TYPE_PLAINTEXT && passwordType != PASSWORD_TYPE_MD5 + && passwordType != PASSWORD_TYPE_AES) + { + ereport(ERROR, + (errmsg("failed to authenticate with backend using md5"), + errdetail("valid password not found"))); + } } for (i=0;ipool_hba == NULL && pool_config->allow_clear_text_frontend_auth) + { + ereport(LOG, + (errmsg("using clear text authentication with frontend"), + errdetail("backend will still use SCRAM auth"), + errhint("you can disable this behavior by setting allow_clear_text_frontend_auth to off"))); + authenticate_frontend_clear_text(frontend); + /* now check again if we have a password now */ + if (get_auth_password(MASTER(cp), frontend, 0, + &password, &passwordType) == false) + { + ereport(ERROR, + (errmsg("failed to authenticate with backend using SCRAM"), + errdetail("unable to get the password"))); + } + } + } + /* + * if we have encrypted password, + * Decrypt it before going any further + */ + if (passwordType == PASSWORD_TYPE_AES) + { + password = get_decrypted_password(password); + if (password == NULL) + ereport(ERROR, + (errmsg("SCRAM authentication failed"), + errdetail("unable to decrypt password from pool_passwd"), + errhint("verify the valid pool_key exists"))); + /* we have converted the password to plain text */ + passwordType = PASSWORD_TYPE_PLAINTEXT; + } + + /* we have a password to use, validate the password type */ + if (passwordType != PASSWORD_TYPE_PLAINTEXT) + { + ereport(ERROR, + (errmsg("failed to authenticate with backend using SCRAM"), + errdetail("valid password not found"))); + } + + for (i=0;iauth_kind) { - case 0: + case AUTH_REQ_OK: /* trust */ break; - case 3: + case AUTH_REQ_PASSWORD: /* clear text password */ do_clear_text_password(MASTER(cp), frontend, 1, protoMajor); break; - case 4: + case AUTH_REQ_CRYPT: /* crypt password */ do_crypt(MASTER(cp), frontend, 1, protoMajor); break; - case 5: + case AUTH_REQ_MD5: /* md5 password */ - do_md5(MASTER(cp), frontend, 1, protoMajor); + authenticate_frontend_md5(MASTER(cp), frontend, 1, protoMajor); + break; + case AUTH_REQ_SASL: + /* SCRAM */ + authenticate_frontend_SCRAM(MASTER(cp), frontend, 1); break; - default: ereport(ERROR, (errmsg("authentication failed"), @@ -530,131 +664,168 @@ static POOL_STATUS pool_send_backend_key_data(POOL_CONNECTION *frontend, int pid return 0; } +static void authenticate_frontend_clear_text(POOL_CONNECTION *frontend) +{ + static int size; + char password[MAX_PASSWORD_SIZE]; + char userPassword[MAX_PASSWORD_SIZE]; + char *storedPassword = NULL; + char *userPwd = NULL; + + sendAuthRequest(frontend, frontend->protoVersion, AUTH_REQ_PASSWORD, NULL, 0); + + /* Read password packet */ + read_password_packet(frontend, frontend->protoVersion, password, &size); + + /* save the password in frontend */ + frontend->auth_kind = AUTH_REQ_PASSWORD; + frontend->pwd_size = size; + memcpy(frontend->password, password, frontend->pwd_size); + frontend->password[size] = 0; /* Null terminate the password string */ + frontend->passwordType = PASSWORD_TYPE_PLAINTEXT; + + if (!frontend->passwordMapping) + { + /* + * if the password is not present in pool_passwd + * just bail out from here + */ + return; + } + + storedPassword = frontend->passwordMapping->pgpoolUser.password; + userPwd = password; + + /* + * If we have md5 password stored in pool_passwd, convert the user + * supplied password to md5 for comparison + */ + if (frontend->passwordMapping->pgpoolUser.passwordType == PASSWORD_TYPE_MD5) + { + pg_md5_encrypt(password, + frontend->username, + strlen(frontend->username), userPassword); + userPwd = userPassword; + size = strlen (userPwd); + } + else if (frontend->passwordMapping->pgpoolUser.passwordType == PASSWORD_TYPE_AES) + { + /* + * decrypt the stored AES password + * for comparing it + */ + storedPassword = get_decrypted_password(storedPassword); + if (storedPassword == NULL) + ereport(ERROR, + (errmsg("clear text authentication failed"), + errdetail("unable to decrypt password from pool_passwd"), + errhint("verify the valid pool_key exists"))); + } + else if (frontend->passwordMapping->pgpoolUser.passwordType != PASSWORD_TYPE_PLAINTEXT) + { + ereport(ERROR, + (errmsg("clear text authentication failed"), + errdetail("password type stored in pool_passwd can't be used for clear text authentication"))); + } + + if (memcmp(userPwd, storedPassword, size)) + { + /* Password does not match */ + ereport(ERROR, + (errmsg("clear text authentication failed"), + errdetail("password does not match"))); + } + ereport(LOG, + (errmsg("clear text authentication successful with frontend"))); + + if (frontend->passwordMapping->pgpoolUser.passwordType == PASSWORD_TYPE_AES) + pfree(storedPassword); + + frontend->frontend_authenticated = true; +} + /* * perform clear text password authentication */ static int do_clear_text_password(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor) { static int size; - static char password[MAX_PASSWORD_SIZE]; - char response; + char *pwd = NULL; int kind; - int len; - /* master? */ - if (IS_MASTER_NODE_ID(backend->db_node_id)) + if (reauth && frontend->frontend_authenticated) { - pool_write(frontend, "R", 1); /* authentication */ - if (protoMajor == PROTO_MAJOR_V3) - { - len = htonl(8); - pool_write(frontend, &len, sizeof(len)); - } - kind = htonl(3); /* clear text password authentication */ - pool_write_and_flush(frontend, &kind, sizeof(kind)); /* indicating clear text password authentication */ + /* frontend and backend are both authenticated already */ + return 0; + } - /* read password packet */ - if (protoMajor == PROTO_MAJOR_V2) + /* get the password */ + if (frontend->pwd_size > 0) + { + pwd = frontend->password; + size = frontend->pwd_size; + } + else if (frontend->passwordMapping) + { + if (frontend->passwordMapping->pgpoolUser.passwordType == PASSWORD_TYPE_PLAINTEXT) { - pool_read(frontend, &size, sizeof(size)); + pwd = frontend->passwordMapping->pgpoolUser.password; + size = pwd? strlen(pwd): 0; } - else + else if (frontend->passwordMapping->pgpoolUser.passwordType == PASSWORD_TYPE_AES) { - char k; - - pool_read(frontend, &k, sizeof(k)); - if (k != 'p') - ereport(ERROR, - (errmsg("clear text password authentication failed"), - errdetail("invalid password packet. Packet does not starts with \"p\""))); - pool_read(frontend, &size, sizeof(size)); + /* + * decrypt the stored AES password + * for comparing it + */ + pwd = get_decrypted_password(frontend->passwordMapping->pgpoolUser.password); + if (pwd == NULL) + ereport(ERROR, + (errmsg("clear text password authentication failed"), + errdetail("unable to decrypt password from pool_passwd"), + errhint("verify the valid pool_key exists"))); + size = strlen(pwd); } - - if ((ntohl(size) - 4) > sizeof(password)) - ereport(ERROR, - (errmsg("clear text password authentication failed"), - errdetail("password is too long. password size = %d", ntohl(size) - 4))); - - pool_read(frontend, password, ntohl(size) - 4); + } + if (pwd == NULL) + { + /* If we still do not have a password. we can't proceed */ + ereport(ERROR, + (errmsg("clear text password authentication failed"), + errdetail("unable to get the password"))); + return 0; } /* connection reusing? */ if (reauth) { - if ((ntohl(size) - 4) != backend->pwd_size) + if (size != backend->pwd_size) ereport(ERROR, - (errmsg("clear text password authentication failed"), + (errmsg("clear text password authentication failed"), errdetail("password size does not match"))); - if (memcmp(password, backend->password, backend->pwd_size) != 0) + if (memcmp(pwd, backend->password, backend->pwd_size) != 0) ereport(ERROR, - (errmsg("clear text password authentication failed"), + (errmsg("clear text password authentication failed"), errdetail("password does not match"))); return 0; } - /* send password packet to backend */ - if (protoMajor == PROTO_MAJOR_V3) - pool_write(backend, "p", 1); - pool_write(backend, &size, sizeof(size)); - pool_write_and_flush(backend, password, ntohl(size) -4); - - pool_read(backend, &response, sizeof(response)); - - if (response != 'R') - { - if(response == 'E') /* Backend has thrown an error instead */ - { - char* message = NULL; - if (pool_extract_error_message(false, backend, protoMajor, false, &message) == 1) - { - ereport(ERROR, - (errmsg("clear text password authentication failed"), - errdetail("%s",message?message:"backend throws authentication error"))); - } - if (message) - pfree(message); - } - ereport(ERROR, - (errmsg("clear text password authentication failed"), - errdetail("invalid packet from backend. backend does not return R while processing clear text password authentication"))); - } - if (protoMajor == PROTO_MAJOR_V3) - { - pool_read(backend, &len, sizeof(len)); - - if (ntohl(len) != 8) - ereport(ERROR, - (errmsg("clear text password authentication failed"), - errdetail("invalid packet from backend. incorrect authentication packet size (%d)", ntohl(len)))); - } - - /* expect to read "Authentication OK" response. kind should be 0... */ - pool_read(backend, &kind, sizeof(kind)); + kind = send_password_packet(backend, protoMajor, pwd); /* if authenticated, save info */ - if (!reauth && kind == 0) + if (!reauth && kind == AUTH_REQ_OK) { if (IS_MASTER_NODE_ID(backend->db_node_id)) { - int msglen; - - pool_write(frontend, "R", 1); - - if (protoMajor == PROTO_MAJOR_V3) - { - msglen = htonl(8); - pool_write(frontend, &msglen, sizeof(msglen)); - } - - msglen = htonl(0); - pool_write_and_flush(frontend, &msglen, sizeof(msglen)); + send_auth_ok(frontend, protoMajor); } - backend->auth_kind = 3; - backend->pwd_size = ntohl(size) - 4; - memcpy(backend->password, password, backend->pwd_size); + backend->auth_kind = AUTH_REQ_PASSWORD; + backend->pwd_size = size; + memcpy(backend->password, pwd, backend->pwd_size); + backend->passwordType = PASSWORD_TYPE_PLAINTEXT; } return kind; } @@ -808,171 +979,621 @@ static int do_crypt(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int rea } /* - * perform MD5 authentication + * Do the SCRAM authentication with the frontend using the stored + * password in the pool_passwd file. */ -static int do_md5(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor) +static void +authenticate_frontend_SCRAM(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth) { - char salt[4]; - static int size; - static char password[MAX_PASSWORD_SIZE]; - int kind; - char encbuf[POOL_PASSWD_LEN+1]; - char *pool_passwd = NULL; - - if (!RAW_MODE && NUM_BACKENDS > 1) - { - /* Read password entry from pool_passwd */ - pool_passwd = pool_get_passwd(frontend->username); - if (!pool_passwd) - ereport(ERROR, - (errmsg("md5 authentication failed"), - errdetail("username \"%s\" does not exist in pool_passwd",frontend->username))); - - - /* master? */ - if (IS_MASTER_NODE_ID(backend->db_node_id)) - { - /* Send md5 auth request to frontend with my own salt */ - pool_random_salt(salt); - send_md5auth_request(frontend, protoMajor, salt); + void *scram_opaq; + char *output = NULL; + int outputlen = 0; + char *input; + int inputlen; + int result; + bool initial; + char *logdetail = NULL; + char *shadow_pass; - /* Read password packet */ - read_password_packet(frontend, protoMajor, password, &size); + + PasswordType storedPasswordType = PASSWORD_TYPE_UNKNOWN; + char *storedPassword = NULL; - /* Check the password using my salt + pool_passwd */ - pg_md5_encrypt(pool_passwd+strlen("md5"), salt, sizeof(salt), encbuf); - if (strcmp(password, encbuf)) - { - /* Password does not match */ - ereport(ERROR, - (errmsg("md5 authentication failed"), - errdetail("password does not match"))); - } - } - kind = 0; + if (!frontend->passwordMapping) + frontend->passwordMapping = pool_get_user_credentials(frontend->username); - if (!reauth) + if (!frontend->passwordMapping) + { + /* see if we have a password stored in the backend for this */ + if (reauth && backend->pwd_size) { - /* - * If ok, authenticate against backends using pool_passwd - */ - /* Read salt */ - pool_read(backend, salt, sizeof(salt)); - - ereport(DEBUG1, - (errmsg("performing md5 authentication"), - errdetail("DB node id: %d salt: %hhx%hhx%hhx%hhx", backend->db_node_id, - salt[0], salt[1], salt[2], salt[3]))); - - /* Encrypt password in pool_passwd using the salt */ - pg_md5_encrypt(pool_passwd+strlen("md5"), salt, sizeof(salt), encbuf); - - /* Send password packet to backend and receive auth response */ - kind = send_password_packet(backend, protoMajor, encbuf); - if (kind < 0) - ereport(ERROR, - (errmsg("md5 authentication failed"), - errdetail("backend replied with invalid kind"))); + storedPasswordType = backend->passwordType; + storedPassword = backend->password; } - - if (!reauth && kind == 0) + else { - if (IS_MASTER_NODE_ID(backend->db_node_id)) - { - /* Send auth ok to frontend */ - send_auth_ok(frontend, protoMajor); - } - - /* Save the auth info */ - backend->auth_kind = 5; + ereport(FATAL, + (return_code(2), + errmsg("SCRAM authentication failed"), + errdetail("pool_passwd file does not contain an entry for \"%s\"",frontend->username))); } - return kind; - } - - /* - * Followings are NUM_BACKEND == 1 case. - */ - if (!reauth) - { - /* read salt */ - pool_read(backend, salt, sizeof(salt)); - ereport(DEBUG1, - (errmsg("performing md5 authentication"), - errdetail("DB node id: %d salt: %hhx%hhx%hhx%hhx", backend->db_node_id, - salt[0], salt[1], salt[2], salt[3]))); } else { - memcpy(salt, backend->salt, sizeof(salt)); + storedPasswordType = frontend->passwordMapping->pgpoolUser.passwordType; + storedPassword = frontend->passwordMapping->pgpoolUser.password; } - /* master? */ - if (IS_MASTER_NODE_ID(backend->db_node_id)) + if (storedPasswordType == PASSWORD_TYPE_AES) { - /* Send md5 auth request to frontend */ - send_md5auth_request(frontend, protoMajor, salt); - - /* Read password packet */ - read_password_packet(frontend, protoMajor, password, &size); + /* + * decrypt the stored AES password + * for comparing it + */ + storedPassword = get_decrypted_password(storedPassword); + if (storedPassword == NULL) + ereport(ERROR, + (errmsg("SCRAM authentication failed"), + errdetail("unable to decrypt password from pool_passwd"), + errhint("verify the valid pool_key exists"))); + /* we have converted the password to plain text */ + storedPasswordType = PASSWORD_TYPE_PLAINTEXT; } - /* connection reusing? */ - if (reauth) + if (storedPasswordType != PASSWORD_TYPE_PLAINTEXT) { - if (size != backend->pwd_size) - ereport(ERROR, - (errmsg("md5 authentication failed"), - errdetail("password does not match"))); - - if (memcmp(password, backend->password, backend->pwd_size) != 0) - ereport(ERROR, - (errmsg("md5 authentication failed"), - errdetail("password does not match"))); - - return 0; + ereport(ERROR, + (errmsg("SCRAM authentication failed"), + errdetail("username \"%s\" has invalid password type",frontend->username))); } - /* Send password packet to backend and receive auth response */ - kind = send_password_packet(backend, protoMajor, password); - if (kind < 0) - ereport(ERROR, + shadow_pass = pg_be_scram_build_verifier(storedPassword); + if (!shadow_pass) + ereport(ERROR, + (errmsg("authentication failed"), + errdetail("faild to build the scram verifier"))); + + + /* + * SASL auth is not supported for protocol versions before 3, because it + * relies on the overall message length word to determine the SASL payload + * size in AuthenticationSASLContinue and PasswordMessage messages. (We + * used to have a hard rule that protocol messages must be parsable + * without relying on the length word, but we hardly care about older + * protocol version anymore.) + */ + if (frontend->protoVersion < PROTO_MAJOR_V3) + ereport(FATAL, + (errmsg("SASL authentication is not supported in protocol version 2"))); + + /* + * Send the SASL authentication request to user. It includes the list of + * authentication mechanisms (which is trivial, because we only support + * SCRAM-SHA-256 at the moment). The extra "\0" is for an empty string to + * terminate the list. + */ + + sendAuthRequest(frontend, frontend->protoVersion, AUTH_REQ_SASL, SCRAM_SHA_256_NAME "\0", + strlen(SCRAM_SHA_256_NAME) + 2); + + /* + * Initialize the status tracker for message exchanges. + * + * If the user doesn't exist, or doesn't have a valid password, or it's + * expired, we still go through the motions of SASL authentication, but + * tell the authentication method that the authentication is "doomed". + * That is, it's going to fail, no matter what. + * + * This is because we don't want to reveal to an attacker what usernames + * are valid, nor which users have a valid password. + */ + scram_opaq = pg_be_scram_init(frontend->username, shadow_pass); + + /* + * Loop through SASL message exchange. This exchange can consist of + * multiple messages sent in both directions. First message is always + * from the client. All messages from client to server are password + * packets (type 'p'). + */ + initial = true; + do + { + static int size; + static char data[MAX_PASSWORD_SIZE]; + + /* Read password packet */ + read_password_packet(frontend, frontend->protoVersion, data, &size); + + ereport(DEBUG4, + (errmsg("Processing received SASL response of length %d", size))); + + /* + * The first SASLInitialResponse message is different from the others. + * It indicates which SASL mechanism the client selected, and contains + * an optional Initial Client Response payload. The subsequent + * SASLResponse messages contain just the SASL payload. + */ + if (initial) + { + const char *selected_mech; + char *ptr = data; + + /* + * We only support SCRAM-SHA-256 at the moment, so anything else + * is an error. + */ + selected_mech = data; + if (strcmp(selected_mech, SCRAM_SHA_256_NAME) != 0) + { + ereport(ERROR, + (errmsg("client selected an invalid SASL authentication mechanism"))); + } + /* get the length of trailing optional data */ + ptr += strlen(selected_mech) + 1; + memcpy(&inputlen,ptr,sizeof(int)); + inputlen = ntohl(inputlen); + if (inputlen == -1) + input = NULL; + else + input = ptr + 4; + + initial = false; + } + else + { + inputlen = size; + input = data; + } + Assert(input == NULL || input[inputlen] == '\0'); + + /* + * we pass 'logdetail' as NULL when doing a mock authentication, + * because we should already have a better error message in that case + */ + result = pg_be_scram_exchange(scram_opaq, input, inputlen, + &output, &outputlen, + &logdetail); + + /* input buffer no longer used */ + + if (output) + { + /* + * Negotiation generated data to be sent to the client. + */ + ereport(DEBUG4, + (errmsg("sending SASL challenge of length %u", outputlen))); + + if (result == SASL_EXCHANGE_SUCCESS) + sendAuthRequest(frontend, frontend->protoVersion, AUTH_REQ_SASL_FIN, output, outputlen); + else + sendAuthRequest(frontend, frontend->protoVersion, AUTH_REQ_SASL_CONT, output, outputlen); + + pfree(output); + } + } while (result == SASL_EXCHANGE_CONTINUE); + + /* Oops, Something bad happened */ + if (result != SASL_EXCHANGE_SUCCESS) + { + ereport(ERROR, + (errmsg("authentication failed"), + errdetail("username \"%s\" or password does not exist in backend",frontend->username))); + } + frontend->frontend_authenticated = true; +} + +void authenticate_frontend(POOL_CONNECTION *frontend) +{ + switch (frontend->pool_hba->auth_method) + { + case uaMD5: + authenticate_frontend_md5(NULL,frontend,0,frontend->protoVersion); + break; + case uaCert: + authenticate_frontend_cert(frontend); + break; + case uaSCRAM: + authenticate_frontend_SCRAM(NULL, frontend, 0); + break; + case uaPassword: + authenticate_frontend_clear_text(frontend); + } +} + +#ifdef USE_SSL +static void authenticate_frontend_cert(POOL_CONNECTION *frontend) +{ + if (frontend->client_cert_loaded == true && frontend->cert_cn) + { + ereport(DEBUG1, + (errmsg("connecting user is \"%s\" and ssl certificate CN is \"%s\"",frontend->username,frontend->cert_cn))); + if (strcasecmp(frontend->username,frontend->cert_cn) == 0) + { + frontend->frontend_authenticated = true; + ereport(LOG, + (errmsg("SSL certificate authentication for user \"%s\" with Pgpool-II is successful",frontend->username))); + return; + } + else + { + frontend->frontend_authenticated = false; + ereport(LOG, + (errmsg("SSL certificate authentication for user \"%s\" failed",frontend->username))); + } + } + ereport(ERROR, + (errmsg("CERT authentication failed"), + errdetail("no valid certificate presented"))); + +} +#else +static void authenticate_frontend_cert(POOL_CONNECTION *frontend) +{ + ereport(ERROR, + (errmsg("CERT authentication failed"), + errdetail("CERT authentication is not supported without SSL"))); +} +#endif + +static void authenticate_frontend_md5(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor) +{ + char salt[4]; + static int size; + char password[MAX_PASSWORD_SIZE]; + char userPassword[MAX_PASSWORD_SIZE]; + char encbuf[POOL_PASSWD_LEN+1]; + char *md5; + + PasswordType storedPasswordType = PASSWORD_TYPE_UNKNOWN; + char *storedPassword = NULL; + + if (RAW_MODE || NUM_BACKENDS == 1) + { + if (backend) + do_md5_single_backend(backend, frontend, reauth, protoMajor); + return; /* This will be handled later */ + } + if (!frontend->passwordMapping) + frontend->passwordMapping = pool_get_user_credentials(frontend->username); + + if (!frontend->passwordMapping) + { + /* see if we have a password stored in the backend for this */ + if (reauth && backend->pwd_size) + { + storedPasswordType = backend->passwordType; + storedPassword = backend->password; + } + else + { + ereport(FATAL, + (return_code(2), + errmsg("md5 authentication failed"), + errdetail("pool_passwd file does not contain an entry for \"%s\"",frontend->username))); + } + } + else + { + storedPasswordType = frontend->passwordMapping->pgpoolUser.passwordType; + storedPassword = frontend->passwordMapping->pgpoolUser.password; + } + + pool_random_salt(salt); + send_md5auth_request(frontend, frontend->protoVersion, salt); + + /* Read password packet */ + read_password_packet(frontend, frontend->protoVersion, password, &size); + + /*If we have clear text password stored in pool_passwd, convert it to md5 */ + if (storedPasswordType == PASSWORD_TYPE_PLAINTEXT || storedPasswordType == PASSWORD_TYPE_AES) + { + char *pwd; + if (storedPasswordType == PASSWORD_TYPE_AES) + { + pwd = get_decrypted_password(storedPassword); + if (pwd == NULL) + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("unable to decrypt password from pool_passwd"), + errhint("verify the valid pool_key exists"))); + + } + else + { + pwd = storedPassword; + } + pg_md5_encrypt(pwd, + frontend->username, + strlen(frontend->username), userPassword); + + if (storedPasswordType == PASSWORD_TYPE_AES) + pfree(pwd); + + md5 = userPassword; + } + else if (storedPasswordType == PASSWORD_TYPE_MD5) + { + md5 = storedPassword; + } + else + { + ereport(FATAL, + (return_code(2), + errmsg("md5 authentication failed"), + errdetail("unable to get the password for \"%s\"",frontend->username))); + + } + /* Check the password using my salt + pool_passwd */ + pg_md5_encrypt(md5+strlen("md5"), salt, sizeof(salt), encbuf); + if (strcmp(password, encbuf)) + { + /* Password does not match */ + ereport(ERROR, (errmsg("md5 authentication failed"), - errdetail("backend replied with invalid kind"))); + errdetail("password does not match"))); + } + ereport(LOG, + (errmsg("md5 authentication successful with frontend"))); - /* If authenticated, reply back to frontend and save info */ - if (!reauth && kind == 0) + frontend->frontend_authenticated = true; +} + +/* + * perform MD5 authentication + */ +static int do_md5_single_backend(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor) +{ + char salt[4]; + static int size; + static char password[MAX_PASSWORD_SIZE]; + int kind; + + if (!reauth) { - send_auth_ok(frontend, protoMajor); + /* read salt from backend */ + pool_read(backend, salt, sizeof(salt)); + ereport(DEBUG1, + (errmsg("performing md5 authentication"), + errdetail("DB node id: %d salt: %hhx%hhx%hhx%hhx", backend->db_node_id, + salt[0], salt[1], salt[2], salt[3]))); + } + else + { + /* Use the saved salt */ + memcpy(salt, backend->salt, sizeof(salt)); + } + + /* Send md5 auth request to frontend */ + send_md5auth_request(frontend, protoMajor, salt); - backend->auth_kind = 5; - backend->pwd_size = size; - memcpy(backend->password, password, backend->pwd_size); - memcpy(backend->salt, salt, sizeof(salt)); + /* Read password packet */ + read_password_packet(frontend, protoMajor, password, &size); + + /* connection reusing? compare it with saved password */ + if (reauth) + { + if (backend->passwordType != PASSWORD_TYPE_MD5) + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("invalid password type"))); + + if (size != backend->pwd_size) + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("password does not match"))); + + if (memcmp(password, backend->password, backend->pwd_size) != 0) + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("password does not match"))); + return 0; + } + else + { + /* Send password packet to backend and receive auth response */ + kind = send_password_packet(backend, protoMajor, password); + if (kind < 0) + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("backend replied with invalid kind"))); + + /* If authenticated, reply back to frontend and save info */ + if (kind == 0) + { + send_auth_ok(frontend, protoMajor); + backend->passwordType = PASSWORD_TYPE_MD5; + backend->auth_kind = AUTH_REQ_MD5; + backend->pwd_size = size; + memcpy(backend->password, password, backend->pwd_size); + memcpy(backend->salt, salt, sizeof(salt)); + } } return kind; } +static bool get_auth_password(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, + char** password, PasswordType *passwordType) +{ + /* First preference is to use the pool_passwd file */ + if (frontend->passwordMapping == NULL) + frontend->passwordMapping = pool_get_user_credentials(frontend->username); + + if (frontend->passwordMapping == NULL) + { + /* + * check if we have password stored in the + * frontend connection. + * that could come by using the clear text auth + */ + if (frontend->pwd_size > 0 && frontend->passwordType == PASSWORD_TYPE_PLAINTEXT) + { + *password = frontend->password; + *passwordType = frontend->passwordType; + return true; + } + else if (reauth && backend && backend->pwd_size > 0) + { + *password = backend->password; + *passwordType = backend->passwordType; + return true; + } + } + else + { + *password = frontend->passwordMapping->pgpoolUser.password; + *passwordType = frontend->passwordMapping->pgpoolUser.passwordType; + return true; + } + return false; +} + /* - * Send md5 authentication request packet to frontend + * perform MD5 authentication */ -static int send_md5auth_request(POOL_CONNECTION *frontend, int protoMajor, char *salt) +static int do_md5(POOL_CONNECTION *backend, POOL_CONNECTION *frontend, int reauth, int protoMajor, + char *storedPassword, PasswordType passwordType) { - int len; + char salt[4]; + static char userPassword[MAX_PASSWORD_SIZE]; int kind; + bool password_decrypted = false; + char encbuf[POOL_PASSWD_LEN+1]; + char *pool_passwd = NULL; + + if (NUM_BACKENDS == 1) + return do_md5_single_backend(backend, frontend, reauth, protoMajor); + + if (passwordType == PASSWORD_TYPE_AES) + { + /* + * decrypt the stored AES password + * for comparing it + */ + storedPassword = get_decrypted_password(storedPassword); + if (storedPassword == NULL) + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("unable to decrypt password from pool_passwd"), + errhint("verify the valid pool_key exists"))); + /* we have converted the password to plain text */ + passwordType = PASSWORD_TYPE_PLAINTEXT; + password_decrypted = true; + } + if (passwordType == PASSWORD_TYPE_PLAINTEXT) + { + pg_md5_encrypt(storedPassword, + frontend->username, + strlen(frontend->username), userPassword); + pool_passwd = userPassword; + } + else if (frontend->passwordMapping->pgpoolUser.passwordType == PASSWORD_TYPE_MD5) + { + pool_passwd = storedPassword; + } + else + { + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("unable to get the password"))); + } + + /* master? */ + if (IS_MASTER_NODE_ID(backend->db_node_id) && frontend->frontend_authenticated == false ) + { + /* frontend is not yet authenticated, Do it now */ + if (frontend->passwordType != PASSWORD_TYPE_UNKNOWN && + frontend->auth_kind != AUTH_REQ_PASSWORD) + { + authenticate_frontend_md5(backend, frontend, reauth, protoMajor); + } + else + { + ereport(DEBUG2, + (errmsg("md5 authentication using the password from frontend"))); + /* save this password in backend for the re-auth */ + backend->pwd_size = frontend->pwd_size; + memcpy(backend->password, frontend->password, frontend->pwd_size); + backend->password[backend->pwd_size] = 0; /* null terminate */ + backend->passwordType = frontend->passwordType; + } + } + + if (!reauth) + { + /* + * now authenticate the backend + */ + + /* Read salt */ + pool_read(backend, salt, sizeof(salt)); + + ereport(DEBUG2, + (errmsg("performing md5 authentication"), + errdetail("DB node id: %d salt: %hhx%hhx%hhx%hhx", backend->db_node_id, + salt[0], salt[1], salt[2], salt[3]))); + + /* Encrypt password in pool_passwd using the salt */ + pg_md5_encrypt(pool_passwd+strlen("md5"), salt, sizeof(salt), encbuf); + + /* Send password packet to backend and receive auth response */ + kind = send_password_packet(backend, protoMajor, encbuf); + if (kind < 0) + ereport(ERROR, + (errmsg("md5 authentication failed"), + errdetail("backend replied with invalid kind"))); + } + + if (!reauth && kind == 0) + { + if (IS_MASTER_NODE_ID(backend->db_node_id)) + { + /* Send auth ok to frontend */ + send_auth_ok(frontend, protoMajor); + } + + /* Save the auth info */ + backend->auth_kind = AUTH_REQ_MD5; + } + + if (password_decrypted && storedPassword) + pfree(storedPassword); + + return 0; +} + +/* + * Send an authentication request packet to the frontend. + */ +static void +sendAuthRequest(POOL_CONNECTION *frontend, int protoMajor, int32 auth_req_type, char *extradata, int extralen) +{ + int kind = htonl(auth_req_type); pool_write(frontend, "R", 1); /* authentication */ if (protoMajor == PROTO_MAJOR_V3) { - len = htonl(12); + int len = 8 + extralen; + len = htonl(len); pool_write(frontend, &len, sizeof(len)); } - kind = htonl(5); - pool_write(frontend, &kind, sizeof(kind)); /* indicating MD5 */ - pool_write_and_flush(frontend, salt, 4); /* salt */ + pool_write(frontend, &kind, sizeof(kind)); + if (extralen > 0) + pool_write_and_flush(frontend, extradata, extralen); + else + pool_flush(frontend); +} - return 0; +/* + * Send md5 authentication request packet to frontend + */ +static void +send_md5auth_request(POOL_CONNECTION *frontend, int protoMajor, char *salt) +{ + sendAuthRequest(frontend, protoMajor, AUTH_REQ_MD5, salt, 4); } + /* * Read password packet from frontend */ @@ -1283,20 +1904,32 @@ int pool_read_int(POOL_CONNECTION_POOL *cp) return data; } +void +pool_random(void *buf, size_t len) +{ + int ret = 0; +#ifdef USE_SSL + ret = RAND_bytes(buf, len); +#endif + /* if RND_bytes fails or not present use the old technique */ + if ( ret == 0) + { + int i; + char *ptr = buf; + for (i = 0; i < len; i++) + { + long rand = PostmasterRandom(); + ptr[i] = (rand % 255) + 1; + } + } +} + /* * pool_random_salt */ void pool_random_salt(char *md5Salt) { - long rand = PostmasterRandom(); - - md5Salt[0] = (rand % 255) + 1; - rand = PostmasterRandom(); - md5Salt[1] = (rand % 255) + 1; - rand = PostmasterRandom(); - md5Salt[2] = (rand % 255) + 1; - rand = PostmasterRandom(); - md5Salt[3] = (rand % 255) + 1; + pool_random(md5Salt,4); } /* @@ -1336,3 +1969,275 @@ PostmasterRandom(void) return random(); } + + +static bool do_SCRAM(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, int protoMajor, int message_length, + char *storedPassword, PasswordType passwordType) +{ + /* read the packet first */ + void *sasl_state = NULL; + int payload_len = message_length - 4 - 4; + int auth_kind = AUTH_REQ_SASL; + char payload[MAX_SASL_PAYLOAD_LEN]; + + if (passwordType != PASSWORD_TYPE_PLAINTEXT) + { + ereport(ERROR, + (errmsg("SCRAM authentication failed"), + errdetail("invalid password type"))); + } + if (storedPassword == NULL) + { + ereport(ERROR, + (errmsg("SCRAM authentication failed"), + errdetail("password not found"))); + } + + /* master? */ + if (IS_MASTER_NODE_ID(backend->db_node_id) && frontend->frontend_authenticated == false ) + { + /* frontend is not yet authenticated, Do it now */ + if (frontend->passwordType != PASSWORD_TYPE_UNKNOWN && + frontend->auth_kind != AUTH_REQ_PASSWORD) + { + authenticate_frontend_SCRAM(backend, frontend, 0); + } + else + { + ereport(DEBUG2, + (errmsg("SCRAM authentication using the password from frontend"))); + /* save this password in backend for the re-auth */ + backend->pwd_size = frontend->pwd_size; + memcpy(backend->password, frontend->password, frontend->pwd_size); + backend->password[backend->pwd_size] = 0; /* null terminate */ + backend->passwordType = frontend->passwordType; + } + } + + for(;;) + { + char kind; + int len; + + /* at this point we have already read kind, message length and authkind */ + if (payload_len > MAX_SASL_PAYLOAD_LEN) + ereport(ERROR, + (errmsg("invalid authentication data too big"))); + + pool_read(backend, payload, payload_len); + + switch (auth_kind) { + case AUTH_REQ_OK: + /* Save the auth info in backend */ + backend->auth_kind = AUTH_REQ_SASL; + return true; + break; + case AUTH_REQ_SASL: + /* + * The request contains the name (as assigned by IANA) of the + * authentication mechanism. + */ + sasl_state = pg_SASL_init(frontend, backend, payload, payload_len, storedPassword); + if (!sasl_state) + { + ereport(ERROR, + (errmsg("invalid authentication request from server"))); + return false; + } + break; + + case AUTH_REQ_SASL_CONT: + case AUTH_REQ_SASL_FIN: + if (sasl_state == NULL) + { + ereport(ERROR, + (errmsg("invalid authentication request from server: AUTH_REQ_SASL_CONT without AUTH_REQ_SASL"))); + return false; + } + if (pg_SASL_continue(frontend, backend, payload, payload_len, sasl_state, (auth_kind == AUTH_REQ_SASL_FIN))!= 0) + { + /* Use error message, if set already */ + ereport(ERROR, + (errmsg("error in SASL authentication"))); + + } + break; + default: + ereport(ERROR, + (errmsg("invalid authentication request from server: unknown auth kind %d",auth_kind))); + } + /* Read next packend */ + pool_read(backend, &kind, sizeof(kind)); + pool_read(backend, &len, sizeof(len)); + if (kind != 'R') + ereport(ERROR, + (errmsg("backend authentication failed"), + errdetail("backend response with kind \'%c\' when expecting \'R\'",kind))); + message_length = ntohl(len); + if (len <= 8) + ereport(ERROR, + (errmsg("backend authentication failed"), + errdetail("backend response with no data "))); + + pool_read(backend, &auth_kind, sizeof(auth_kind)); + auth_kind = ntohl(auth_kind); + payload_len = message_length - 4 - 4; + } + return false; +} + +static void* +pg_SASL_init(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, char *payload, int payloadlen, char* storedPassword) +{ + char *initialresponse = NULL; + int initialresponselen; + bool done; + bool success; + const char *selected_mechanism; + char *mechanism_buf = payload; + void *sasl_state = NULL; + int size; + int send_msg_len; + + /* + * Parse the list of SASL authentication mechanisms in the + * AuthenticationSASL message, and select the best mechanism that we + * support. (Only SCRAM-SHA-256 is supported at the moment.) + */ + selected_mechanism = NULL; + for (;;) + { + /* An empty string indicates end of list */ + if (mechanism_buf[0] == '\0') + break; + + /* + * If we have already selected a mechanism, just skip through the rest + * of the list. + */ + if (selected_mechanism) + continue; + + /* + * Do we support this mechanism? + */ + if (strcmp(mechanism_buf, SCRAM_SHA_256_NAME) == 0) + { + /* This is the password which we need to send to the PG backend + * for authentication. + * It is stored in the file + */ + if (storedPassword == NULL || storedPassword[0] == '\0') + { + ereport(ERROR, + (errmsg("password not found"))); + } + + sasl_state = pg_fe_scram_init(frontend->username, storedPassword); + if (!sasl_state) + ereport(ERROR, + (errmsg("SASL authentication error\n"))); + selected_mechanism = SCRAM_SHA_256_NAME; + } + mechanism_buf += strlen(mechanism_buf) +1; + } + + if (!selected_mechanism) + { + ereport(ERROR, + (errmsg("none of the server's SASL authentication mechanisms are supported\n"))); + } + + /* Get the mechanism-specific Initial Client Response, if any */ + pg_fe_scram_exchange(sasl_state, + NULL, -1, + &initialresponse, &initialresponselen, + &done, &success); + + if (done && !success) + ereport(ERROR, + (errmsg("SASL authentication error"))); + + send_msg_len = strlen(selected_mechanism) + 1; + if (initialresponse) + { + send_msg_len += 4; + send_msg_len += initialresponselen; + } + + size = htonl(send_msg_len + 4); + + pool_write(backend, "p", 1); + pool_write(backend, &size, sizeof(size)); + pool_write(backend, (void*)selected_mechanism, strlen(selected_mechanism)+1); + if (initialresponse) + { + size = htonl(initialresponselen); + pool_write(backend, &size, sizeof(size)); + pool_write(backend, initialresponse, initialresponselen); + } + pool_flush(backend); + + if (initialresponse) + pfree(initialresponse); + + return sasl_state; +} + +/* + * Exchange a message for SASL communication protocol with the backend. + * This should be used after calling pg_SASL_init to set up the status of + * the protocol. + */ +static int +pg_SASL_continue(POOL_CONNECTION *frontend, POOL_CONNECTION *backend, char *payload, int payloadlen, void *sasl_state, bool final) +{ + char *output; + int outputlen; + bool done; + bool success; + char *challenge; + + /* Read the SASL challenge from the AuthenticationSASLContinue message. */ + challenge = palloc(payloadlen + 1); + memcpy(challenge,payload,payloadlen); + challenge[payloadlen] = '\0'; + + /* For safety and convenience, ensure the buffer is NULL-terminated. */ + + pg_fe_scram_exchange(sasl_state, + challenge, payloadlen, + &output, &outputlen, + &done, &success); + pfree(challenge); /* don't need the input anymore */ + + if (final && !done) + { + if (outputlen != 0) + pfree(output); + + ereport(ERROR, + (errmsg("AuthenticationSASLFinal received from server, but SASL authentication was not completed"))); + return -1; + } + if (outputlen != 0) + { + /* + * Send the SASL response to the server. + */ + int size = htonl(outputlen + 4); + + pool_write(backend, "p", 1); + pool_write(backend, &size, sizeof(size)); + pool_write_and_flush(backend, output, outputlen); + pfree(output); + + return 0; + } + + if (done && !success) + return -1; + + return 0; +} + diff --git a/src/auth/pool_hba.c b/src/auth/pool_hba.c index dd398db5..1d15ccb7 100644 --- a/src/auth/pool_hba.c +++ b/src/auth/pool_hba.c @@ -134,7 +134,7 @@ next_token(char **lineptr, char *buf, int bufsz, static List * next_field_expand(const char *filename, char **lineptr, int elevel, char **err_msg); -static POOL_STATUS CheckMd5Auth(char *username); +static POOL_STATUS CheckUserExist(char *username); #ifdef USE_PAM #ifdef HAVE_PAM_PAM_APPL_H @@ -615,8 +615,14 @@ parse_hba_line(TokenizedLine *tok_line, int elevel) parsedline->auth_method = uaTrust; else if (strcmp(token->string, "reject") == 0) parsedline->auth_method = uaReject; + else if (strcmp(token->string, "cert") == 0) + parsedline->auth_method = uaCert; + else if (strcmp(token->string, "password") == 0) + parsedline->auth_method = uaPassword; else if (strcmp(token->string, "md5") == 0) parsedline->auth_method = uaMD5; + else if (strcmp(token->string, "scram-sha-256") == 0) + parsedline->auth_method = uaSCRAM; #ifdef USE_PAM else if (strcmp(token->string, "pam") == 0) parsedline->auth_method = uaPAM; @@ -767,7 +773,11 @@ void ClientAuthentication(POOL_CONNECTION *frontend) errdetail("missing or erroneous pool_hba.conf file"), errhint("see pgpool log for details"))); - + /* + * Get the password for the user if it is stored + * in the pool_password file + */ + frontend->passwordMapping = pool_get_user_credentials(frontend->username); switch (frontend->pool_hba->auth_method) { case uaImplicitReject: @@ -816,14 +826,55 @@ void ClientAuthentication(POOL_CONNECTION *frontend) case uaKrb5: case uaIdent: case uaCrypt: + */ case uaPassword: - break; - */ + ereport(DEBUG1, + (errmsg("password authentication required"))); + status = POOL_CONTINUE; + break; + case uaCert: + ereport(DEBUG1, + (errmsg("SSL certificate authentication required"))); + status = POOL_CONTINUE; + break; case uaMD5: - status = CheckMd5Auth(frontend->username); + status = POOL_CONTINUE; + + if (NUM_BACKENDS <= 1) + break; + + if (!frontend->passwordMapping) + ereport(FATAL, + (return_code(2), + errmsg("md5 authentication failed"), + errdetail("pool_passwd file does not contain an entry for \"%s\"",frontend->username))); + if (frontend->passwordMapping->pgpoolUser.passwordType != PASSWORD_TYPE_PLAINTEXT && + frontend->passwordMapping->pgpoolUser.passwordType != PASSWORD_TYPE_MD5 && + frontend->passwordMapping->pgpoolUser.passwordType != PASSWORD_TYPE_AES) + ereport(FATAL, + (return_code(2), + errmsg("md5 authentication failed"), + errdetail("pool_passwd file does not contain valid md5 entry for \"%s\"",frontend->username))); break; + case uaSCRAM: + if (!frontend->passwordMapping) + ereport(FATAL, + (return_code(2), + errmsg("SCRAM authentication failed"), + errdetail("pool_passwd file does not contain an entry for \"%s\"",frontend->username))); + if (frontend->passwordMapping->pgpoolUser.passwordType != PASSWORD_TYPE_PLAINTEXT && + frontend->passwordMapping->pgpoolUser.passwordType != PASSWORD_TYPE_SCRAM_SHA_256 && + frontend->passwordMapping->pgpoolUser.passwordType != PASSWORD_TYPE_AES) + ereport(FATAL, + (return_code(2), + errmsg("SCRAM authentication failed"), + errdetail("pool_passwd file does not contain valid SCRAM entry for \"%s\"",frontend->username))); + + status = POOL_CONTINUE; + break; + #ifdef USE_PAM case uaPAM: @@ -836,6 +887,7 @@ void ClientAuthentication(POOL_CONNECTION *frontend) status = POOL_CONTINUE; break; } + authenticate_frontend(frontend); } PG_CATCH(); { @@ -989,6 +1041,18 @@ static void auth_failed(POOL_CONNECTION *frontend) frontend->username); break; + case uaSCRAM: + snprintf(errmessage, messagelen, + "\"SCRAM\" authentication with pgpool failed for user \"%s\"", + frontend->username); + break; + + case uaCert: + snprintf(errmessage, messagelen, + "\"CERT\" authentication with pgpool failed for user \"%s\"", + frontend->username); + break; + /* case uaCrypt: */ /* case uaPassword: */ /* snprintf(errmessage, messagelen, */ @@ -1983,7 +2047,9 @@ static POOL_STATUS CheckPAMAuth(POOL_CONNECTION *frontend, char *user, char *pas #endif /* USE_PAM */ -static POOL_STATUS CheckMd5Auth(char *username) + + +static POOL_STATUS CheckUserExist(char *username) { char *passwd; @@ -1991,12 +2057,7 @@ static POOL_STATUS CheckMd5Auth(char *username) passwd = pool_get_passwd(username); if (passwd == NULL) - ereport(FATAL, - (return_code(2), - errmsg("md5 authentication failed"), - errdetail("pool_passwd file does not contain an entry for \"%s\"",username))); - - + return POOL_ERROR; /* * Ok for now. Actual authentication will be performed later. */ diff --git a/src/auth/pool_passwd.c b/src/auth/pool_passwd.c index 660a6c5f..051f1853 100644 --- a/src/auth/pool_passwd.c +++ b/src/auth/pool_passwd.c @@ -6,7 +6,7 @@ * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * - * Copyright (c) 2003-2015 PgPool Global Development Group + * Copyright (c) 2003-2018 PgPool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -28,11 +28,15 @@ #include "pool.h" #include "auth/pool_passwd.h" #include "auth/md5.h" +#include "utils/ssl_utils.h" +#include "utils/base64.h" #ifndef POOL_PRIVATE #include "utils/elog.h" #else #include "utils/fe_ports.h" #endif +#include + static FILE *passwd_fd = NULL; /* File descriptor for pool_passwd */ static char saved_passwd_filename[POOLMAXPATHLEN+1]; @@ -101,7 +105,7 @@ int pool_create_passwdent(char *username, char *passwd) (errmsg("pool_create_passwdent should be called with pool_passwd opened with read/write mode"))); len = strlen(passwd); - if (len != POOL_PASSWD_LEN) + if (len <= 0) ereport(ERROR, (errmsg("error updating password, invalid password length:%d",len))); @@ -233,6 +237,158 @@ char *pool_get_passwd(char *username) return NULL; } +/* + * return the next token if the current token matches the + * user + */ +static char * +getNextToken(char *buf, char **token) +{ +#define MAX_TOKEN_LEN 128 + char *tbuf,*p; + bool bslash = false; + char tok[MAX_TOKEN_LEN+1]; + int readlen = 0; + + *token = NULL; + if (buf == NULL) + return NULL; + + tbuf = buf; + p = tok; + while (*tbuf != 0 && readlen < MAX_TOKEN_LEN) + { + if (*tbuf == '\\' && !bslash) + { + tbuf++; + bslash = true; + } + + if (*tbuf == ':' && !bslash) + { + *p = '\0'; + if(readlen) + *token = pstrdup(tok); + return tbuf + 1; + } + /* just copy to the tok */ + bslash = false; + *p++ = *tbuf++; + readlen++; + } + *p = '\0'; + if(readlen) + *token = pstrdup(tok); + return NULL; +} +/* + * return the next token if the current token matches the + * user + */ +static char * +userMatchesString(char *buf, char *user) +{ + char *tbuf, + *ttok; + bool bslash = false; + + if (buf == NULL || user == NULL) + return NULL; + tbuf = buf; + ttok = user; + while (*tbuf != 0) + { + if (*tbuf == '\\' && !bslash) + { + tbuf++; + bslash = true; + } + if (*tbuf == ':' && *ttok == 0 && !bslash) + return tbuf + 1; + bslash = false; + if (*ttok == 0) + return NULL; + if (*tbuf == *ttok) + { + tbuf++; + ttok++; + } + else + return NULL; + } + return NULL; +} + +/* + * user:passwod[:user:password] + */ +PasswordMapping *pool_get_user_credentials(char *username) +{ + PasswordMapping *pwdMapping = NULL; + char buf[1024]; + + + if (!username) + ereport(ERROR, + (errmsg("unable to get password, username is NULL"))); + + if (!passwd_fd) + ereport(ERROR, + (errmsg("unable to get password, password file descriptor is NULL"))); + + rewind(passwd_fd); + + while (!feof(passwd_fd) && !ferror(passwd_fd)) + { + char *t = buf; + char *tok; + int len; + + if (fgets(buf, sizeof(buf), passwd_fd) == NULL) + break; + + len = strlen(buf); + if (len == 0) + continue; + + /* Remove trailing newline */ + if (buf[len - 1] == '\n') + buf[len - 1] = 0; + + if ((t = userMatchesString(t, username)) == NULL) + continue; + /* Get the password */ + t = getNextToken(t, &tok); + if (tok) + { + pwdMapping = palloc(sizeof(PasswordMapping)); + pwdMapping->pgpoolUser.password = tok; + pwdMapping->pgpoolUser.passwordType = get_password_type(pwdMapping->pgpoolUser.password); + pwdMapping->pgpoolUser.userName = pstrdup(username); + pwdMapping->mappedUser = false; + } + else + continue; + /* Get backend user*/ + t = getNextToken(t, &tok); + if (tok) + { + /* check if we also have the password */ + char *pwd; + t = getNextToken(t, &pwd); + if (tok) + { + pwdMapping->backendUser.password = pwd; + pwdMapping->backendUser.userName = tok; + pwdMapping->backendUser.passwordType = get_password_type(pwdMapping->backendUser.password); + pwdMapping->mappedUser = true; + } + } + break; + } + return pwdMapping; +} + /* * Delete the entry by username. If specified entry does not exist, * does nothing. @@ -258,3 +414,131 @@ void pool_reopen_passwd_file(void) pool_finish_pool_passwd(); pool_init_pool_passwd(saved_passwd_filename, pool_passwd_mode); } + +#ifndef POOL_PRIVATE +char *get_decrypted_password(const char *shadow_pass) +{ + if (get_password_type(shadow_pass) == PASSWORD_TYPE_AES) + { + unsigned char b64_dec[MAX_PGPASS_LEN *2]; + unsigned char plaintext[MAX_PGPASS_LEN]; + int len; + char *pwd; + const char *enc_key = (const char*)get_pool_key(); + + if (enc_key == NULL) + return NULL; + + pwd = (char*)shadow_pass + 3; + + if ((len = strlen(pwd)) == 0) + return NULL; + + if ((len = pg_b64_decode((const char*)pwd, len, (char*)b64_dec)) == 0) + { + ereport(WARNING, + (errmsg("base64 decoding failed"))); + return NULL; + } + if ((len = aes_decrypt_with_password(b64_dec, len, + enc_key, plaintext)) <= 0) + { + ereport(WARNING, + (errmsg("decryption failed"))); + return NULL; + } + plaintext[len] = 0; + return pstrdup((const char*)plaintext); + } + return NULL; +} +#else +char *get_decrypted_password(const char *shadow_pass) +{ + ereport(ERROR, + (errmsg("unable to decrypt password"))); +} +#endif + +/* +* What kind of a password verifier is 'shadow_pass'? +*/ +PasswordType +get_password_type(const char *shadow_pass) +{ + if (strncmp(shadow_pass, PASSWORD_MD5_PREFIX, strlen(PASSWORD_MD5_PREFIX)) == 0 && strlen(shadow_pass) == MD5_PASSWD_LEN) + return PASSWORD_TYPE_MD5; + if (strncmp(shadow_pass, PASSWORD_AES_PREFIX, strlen(PASSWORD_AES_PREFIX)) == 0 ) + return PASSWORD_TYPE_AES; + if (strncmp(shadow_pass, PASSWORD_SCRAM_PREFIX, strlen(PASSWORD_SCRAM_PREFIX)) == 0) + return PASSWORD_TYPE_SCRAM_SHA_256; + return PASSWORD_TYPE_PLAINTEXT; +} + +/* + * Get a key from the pgpool key file. return the palloc'd. + * value + */ +char *read_pool_key(char *key_file_path) +{ + FILE *fp; + struct stat stat_buf; + char *key = NULL; + +#define LINELEN MAX_POOL_KEY_LEN + char buf[LINELEN]; + + if (strlen(key_file_path) == 0) + return NULL; + + /* If password file cannot be opened, ignore it. */ + if (stat(key_file_path, &stat_buf) != 0) + return NULL; + + if (!S_ISREG(stat_buf.st_mode)) + { + ereport(WARNING, + (errmsg("pool key file \"%s\" is not a text file\n",key_file_path))); + return NULL; + } + + /* If password file is insecure, alert the user. */ + if (stat_buf.st_mode & (S_IRWXG | S_IRWXO)) + { + ereport(WARNING, + (errmsg("pool key file \"%s\" is not a text file\n",key_file_path))); + + ereport(WARNING, + (errmsg("pool key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n", + key_file_path))); + /* do we want to allow unsecure pool key file ?*/ + //return NULL; + } + + fp = fopen(key_file_path, "r"); + if (fp == NULL) + return NULL; + + while (!feof(fp) && !ferror(fp)) + { + int len; + + if (fgets(buf, sizeof(buf), fp) == NULL) + break; + + len = strlen(buf); + if (len == 0) + continue; + + /* Remove trailing newline */ + if (buf[len - 1] == '\n') + buf[len - 1] = 0; + key = pstrdup(buf); + break; + } + + fclose(fp); + return key; + +#undef LINELEN +} diff --git a/src/config/pool_config_variables.c b/src/config/pool_config_variables.c index aa4486fd..1920e8b6 100644 --- a/src/config/pool_config_variables.c +++ b/src/config/pool_config_variables.c @@ -506,6 +506,15 @@ static struct config_bool ConfigureNamesBool[] = false, NULL, NULL,NULL }, + { + {"allow_clear_text_frontend_auth", CFGCXT_RELOAD, GENERAL_CONFIG, + "allow to use clear text password authentication with clients, when pool_passwd does not contain the user password.", + CONFIG_VAR_TYPE_BOOL,false, 0 + }, + &g_pool_config.allow_clear_text_frontend_auth, + false, + NULL, NULL,NULL + }, /* End-of-list marker */ EMPTY_CONFIG_BOOL diff --git a/src/include/Makefile.in b/src/include/Makefile.in index 1eff8bc3..6c22d56f 100644 --- a/src/include/Makefile.in +++ b/src/include/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -88,6 +78,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/include +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(srcdir)/config.h.in $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -98,7 +90,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = @@ -144,8 +135,6 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -277,7 +266,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -309,6 +297,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/include/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -328,8 +317,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): config.h: stamp-h1 - @test -f $@ || rm -f stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -545,8 +534,6 @@ uninstall-am: mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/src/include/auth/md5.h b/src/include/auth/md5.h index 209a9d0d..87d23769 100644 --- a/src/include/auth/md5.h +++ b/src/include/auth/md5.h @@ -19,7 +19,6 @@ #ifndef MD5_H #define MD5_H -#define MAX_USER_NAME_LEN 128 #define MD5_PASSWD_LEN 32 #define WD_AUTH_HASH_LEN 64 diff --git a/src/include/auth/pool_hba.h b/src/include/auth/pool_hba.h index ddfbc788..6a22afd1 100644 --- a/src/include/auth/pool_hba.h +++ b/src/include/auth/pool_hba.h @@ -6,7 +6,7 @@ * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * - * Copyright (c) 2003-2017 PgPool Global Development Group + * Copyright (c) 2003-2018 PgPool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -19,7 +19,7 @@ * suitability of this software for any purpose. It is provided "as * is" without express or implied warranty. * - * pool_passwd.h: pool_passwd related definitions. + * pool_hba.h: pool_hba related definitions. * */ @@ -38,9 +38,11 @@ typedef enum UserAuth /* uaKrb5, */ uaTrust, /* uaIdent, */ - /* uaPassword, */ + uaPassword, /* uaCrypt, */ - uaMD5 + uaCert, + uaMD5, + uaSCRAM #ifdef USE_PAM ,uaPAM #endif /* USE_PAM */ diff --git a/src/include/auth/pool_passwd.h b/src/include/auth/pool_passwd.h index 15b1c27d..9005f904 100644 --- a/src/include/auth/pool_passwd.h +++ b/src/include/auth/pool_passwd.h @@ -6,7 +6,7 @@ * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * - * Copyright (c) 2003-2015 PgPool Global Development Group + * Copyright (c) 2003-2018 PgPool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -26,21 +26,56 @@ #ifndef POOL_PASSWD_H #define POOL_PASSWD_H -#include "pool.h" #define POOL_PASSWD_FILENAME "pool_passwd" #define POOL_PASSWD_LEN 35 +#define MAX_USER_NAME_LEN 128 +#define MAX_PGPASS_LEN 128 +#define MAX_POOL_KEY_LEN 256 + + +#define PASSWORD_MD5_PREFIX "md5" +#define PASSWORD_AES_PREFIX "AES" +#define PASSWORD_SCRAM_PREFIX "SCRAM-SHA-256$" + typedef enum { POOL_PASSWD_R, /* open pool_passwd in read only mode. used by pgpool-II child main process */ POOL_PASSWD_RW, /* open pool_passwd in read/write mode. used by pg_md5 command */ } POOL_PASSWD_MODE; +typedef enum PasswordType +{ + PASSWORD_TYPE_UNKNOWN = 0, + PASSWORD_TYPE_PLAINTEXT, + PASSWORD_TYPE_MD5, + PASSWORD_TYPE_AES, + PASSWORD_TYPE_SCRAM_SHA_256 +} PasswordType; + +typedef struct UserPassword +{ + char *userName; + char *password; + PasswordType passwordType; +}UserPassword; + +typedef struct PasswordMapping +{ + UserPassword pgpoolUser; + UserPassword backendUser; + bool mappedUser; +}PasswordMapping; + +extern PasswordMapping *pool_get_user_credentials(char *username); +extern PasswordType get_password_type(const char *shadow_pass); extern void pool_init_pool_passwd(char *pool_passwd_filename, POOL_PASSWD_MODE mode); extern int pool_create_passwdent(char *username, char *passwd); extern char *pool_get_passwd(char *username); extern void pool_delete_passwdent(char *username); extern void pool_finish_pool_passwd(void); extern void pool_reopen_passwd_file(void); +extern char *get_decrypted_password(const char *shadow_pass); +extern char *read_pool_key(char *key_file_path); #endif /* POOL_PASSWD_H */ diff --git a/src/include/auth/scram-common.h b/src/include/auth/scram-common.h new file mode 100644 index 00000000..9852f48e --- /dev/null +++ b/src/include/auth/scram-common.h @@ -0,0 +1,93 @@ +/* -*-pgsql-c-*- */ +/* + * + * $Header$ + * + * pgpool: a language independent connection pool server for PostgreSQL + * written by Tatsuo Ishii + * + * Copyright (c) 2003-2018 PgPool Global Development Group + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose and without fee is hereby + * granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of the + * author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * scram-common.h: SCRAM auth related definitions. + * borrowed from PostgreSQL code src/include/common/scram-common.h + * + */ + +/*------------------------------------------------------------------------- + * + * scram-common.h + * Declarations for helper functions used for SCRAM authentication + * + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/common/scram-common.h + * + *------------------------------------------------------------------------- + */ +#ifndef SCRAM_COMMON_H +#define SCRAM_COMMON_H + +#include "pool_type.h" +#include "utils/sha2.h" + +/* Length of SCRAM keys (client and server) */ +#define SCRAM_KEY_LEN PG_SHA256_DIGEST_LENGTH + +/* length of HMAC */ +#define SHA256_HMAC_B PG_SHA256_BLOCK_LENGTH + +/* + * Size of random nonce generated in the authentication exchange. This + * is in "raw" number of bytes, the actual nonces sent over the wire are + * encoded using only ASCII-printable characters. + */ +#define SCRAM_RAW_NONCE_LEN 18 + +/* + * Length of salt when generating new verifiers, in bytes. (It will be stored + * and sent over the wire encoded in Base64.) 16 bytes is what the example in + * RFC 7677 uses. + */ +#define SCRAM_DEFAULT_SALT_LEN 16 + +/* + * Default number of iterations when generating verifier. Should be at least + * 4096 per RFC 7677. + */ +#define SCRAM_DEFAULT_ITERATIONS 4096 + +/* + * Context data for HMAC used in SCRAM authentication. + */ +typedef struct +{ + pg_sha256_ctx sha256ctx; + uint8 k_opad[SHA256_HMAC_B]; +} scram_HMAC_ctx; + +extern void scram_HMAC_init(scram_HMAC_ctx *ctx, const uint8 *key, int keylen); +extern void scram_HMAC_update(scram_HMAC_ctx *ctx, const char *str, int slen); +extern void scram_HMAC_final(uint8 *result, scram_HMAC_ctx *ctx); + +extern void scram_SaltedPassword(const char *password, const char *salt, + int saltlen, int iterations, uint8 *result); +extern void scram_H(const uint8 *str, int len, uint8 *result); +extern void scram_ClientKey(const uint8 *salted_password, uint8 *result); +extern void scram_ServerKey(const uint8 *salted_password, uint8 *result); + +extern char *scram_build_verifier(const char *salt, int saltlen, int iterations, + const char *password); + +#endif /* SCRAM_COMMON_H */ diff --git a/src/include/auth/scram.h b/src/include/auth/scram.h new file mode 100644 index 00000000..71222d47 --- /dev/null +++ b/src/include/auth/scram.h @@ -0,0 +1,65 @@ +/* -*-pgsql-c-*- */ +/* + * + * $Header$ + * + * pgpool: a language independent connection pool server for PostgreSQL + * written by Tatsuo Ishii + * + * Copyright (c) 2003-2018 PgPool Global Development Group + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose and without fee is hereby + * granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of the + * author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * scram.h: SCRAM auth related definitions. + * borrowed from PostgreSQL code src/include/libpq/scram.h + * + */ +/*------------------------------------------------------------------------- + * + * scram.h + * Interface to libpq/scram.c + * + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/libpq/scram.h + * + *------------------------------------------------------------------------- + */ +#ifndef PG_SCRAM_H +#define PG_SCRAM_H + +/* Name of SCRAM-SHA-256 per IANA */ +#define SCRAM_SHA_256_NAME "SCRAM-SHA-256" + +/* Status codes for message exchange */ +#define SASL_EXCHANGE_CONTINUE 0 +#define SASL_EXCHANGE_SUCCESS 1 +#define SASL_EXCHANGE_FAILURE 2 + +/* Routines dedicated to authentication */ +extern void *pg_be_scram_init(const char *username, const char *shadow_pass); +extern int pg_be_scram_exchange(void *opaq, char *input, int inputlen, + char **output, int *outputlen, char **logdetail); + +/* Routines to handle and check SCRAM-SHA-256 verifier */ +extern char *pg_be_scram_build_verifier(const char *password); +extern bool scram_verify_plain_password(const char *username, + const char *password, const char *verifier); +extern void *pg_fe_scram_init(const char *username, const char *password); +extern void pg_fe_scram_exchange(void *opaq, char *input, int inputlen, + char **output, int *outputlen, + bool *done, bool *success); +extern void pg_fe_scram_free(void *opaq); +extern char *pg_fe_scram_build_verifier(const char *password); + +#endif /* PG_SCRAM_H */ diff --git a/src/include/config.h.in b/src/include/config.h.in index af10a84f..0f539e0f 100644 --- a/src/include/config.h.in +++ b/src/include/config.h.in @@ -262,6 +262,9 @@ */ #undef LT_OBJDIR +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + /* Name of package */ #undef PACKAGE diff --git a/src/include/pool.h b/src/include/pool.h index 0e150581..f3288a86 100644 --- a/src/include/pool.h +++ b/src/include/pool.h @@ -28,6 +28,7 @@ #include "pool_type.h" #include "pcp/libpcp_ext.h" #include "utils/pool_signal.h" +#include "auth/pool_passwd.h" #include "parser/nodes.h" #include #include @@ -48,6 +49,9 @@ #define POOLMAXPATHLEN 8192 +#define POOLKEYFILE ".pgpoolkey" +#define POOLKEYFILEENV "PGPOOLKEYFILE" + /* * Brought from PostgreSQL's pg_config_manual.h. * @@ -181,6 +185,13 @@ typedef struct { #ifdef USE_SSL SSL_CTX *ssl_ctx; /* SSL connection context */ SSL *ssl; /* SSL connection */ + X509 *peer; + char *cert_cn; /* common in the ssl certificate + * presented by frontend connection + * Used for cert authentication + */ + bool client_cert_loaded; + #endif int ssl_active; /* SSL is failed if < 0, off if 0, on if > 0 */ @@ -215,8 +226,9 @@ typedef struct { */ int auth_kind; /* 3: clear text password, 4: crypt password, 5: md5 password */ int pwd_size; /* password (sent back from frontend) size in host order */ - char password[MAX_PASSWORD_SIZE]; /* password (sent back from frontend) */ + char password[MAX_PASSWORD_SIZE +1 ]; /* password (sent back from frontend) */ char salt[4]; /* password salt */ + PasswordType passwordType; /* * following are used to remember current session parameter status. @@ -240,6 +252,8 @@ typedef struct { char *username; char *remote_hostname; int remote_hostname_resolv; + bool frontend_authenticated; + PasswordMapping *passwordMapping; ConnectionInfo *con_info; /* shared memory coninfo used * for handling the query containing * pg_terminate_backend*/ @@ -555,6 +569,7 @@ extern POOL_STATUS pool_process_query(POOL_CONNECTION *frontend, extern int pool_do_auth(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend); extern int pool_do_reauth(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *cp); +extern void authenticate_frontend(POOL_CONNECTION *frontend); extern bool is_backend_cache_empty(POOL_CONNECTION_POOL *backend); @@ -565,6 +580,7 @@ extern void pool_ssl_close(POOL_CONNECTION *cp); extern int pool_ssl_read(POOL_CONNECTION *cp, void *buf, int size); extern int pool_ssl_write(POOL_CONNECTION *cp, const void *buf, int size); extern bool pool_ssl_pending(POOL_CONNECTION *cp); +extern int SSL_ServerSide_init(void); extern POOL_STATUS ErrorResponse(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend); @@ -703,9 +719,11 @@ extern bool pool_push_pending_data(POOL_CONNECTION *backend); /* pool_auth.c */ extern void pool_random_salt(char *md5Salt); +extern void pool_random(void *buf, size_t len); /* main.c */ extern void pool_sleep(unsigned int second); +extern char *get_pool_key(void); /* pool_worker_child.c */ extern void do_worker_child(void); diff --git a/src/include/pool_config.h b/src/include/pool_config.h index 05c3a3f1..b039e831 100644 --- a/src/include/pool_config.h +++ b/src/include/pool_config.h @@ -153,7 +153,13 @@ typedef struct { int connection_life_time; /* if idle for this seconds, connection closes */ int child_max_connections; /* if max_connections received, child exits */ int client_idle_limit; /* If client_idle_limit is n (n > 0), the client is forced to be - *disconnected after n seconds idle */ + * disconnected after n seconds idle */ + bool allow_clear_text_frontend_auth; + /* enable Pgpool-II to use clear text password authentication + * between Pgpool and client to get the password + * when password for user does not exist in pool_password + * file. + */ int authentication_timeout; /* maximum time in seconds to complete client authentication */ int max_pool; /* max # of connection pool per child */ char *logdir; /* logging directory */ diff --git a/src/include/pool_type.h b/src/include/pool_type.h index d0fcb87e..494f6300 100644 --- a/src/include/pool_type.h +++ b/src/include/pool_type.h @@ -179,12 +179,19 @@ SockAddr; #define AUTH_REQ_OK 0 /* User is authenticated */ -#define AUTH_REQ_KRB4 1 /* Kerberos V4 */ -#define AUTH_REQ_KRB5 2 /* Kerberos V5 */ +#define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */ +#define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */ #define AUTH_REQ_PASSWORD 3 /* Password */ -#define AUTH_REQ_CRYPT 4 /* crypt password */ +#define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */ #define AUTH_REQ_MD5 5 /* md5 password */ #define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */ +#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */ +#define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */ +#define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */ +#define AUTH_REQ_SASL 10 /* Begin SASL authentication */ +#define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */ +#define AUTH_REQ_SASL_FIN 12 /* Final SASL message */ + typedef unsigned int AuthRequest; diff --git a/src/include/utils/base64.h b/src/include/utils/base64.h new file mode 100644 index 00000000..7fe19bb4 --- /dev/null +++ b/src/include/utils/base64.h @@ -0,0 +1,19 @@ +/* + * base64.h + * Encoding and decoding routines for base64 without whitespace + * support. + * + * Portions Copyright (c) 2001-2017, PostgreSQL Global Development Group + * + * src/include/common/base64.h + */ +#ifndef BASE64_H +#define BASE64_H + +/* base 64 */ +extern int pg_b64_encode(const char *src, int len, char *dst); +extern int pg_b64_decode(const char *src, int len, char *dst); +extern int pg_b64_enc_len(int srclen); +extern int pg_b64_dec_len(int srclen); + +#endif /* BASE64_H */ diff --git a/src/include/utils/sha2.h b/src/include/utils/sha2.h new file mode 100644 index 00000000..85104b3b --- /dev/null +++ b/src/include/utils/sha2.h @@ -0,0 +1,116 @@ +/*------------------------------------------------------------------------- + * + * sha2.h + * Generic headers for SHA224, 256, 384 AND 512 functions of PostgreSQL. + * + * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/include/common/sha2.h + * + *------------------------------------------------------------------------- + */ + +/* $OpenBSD: sha2.h,v 1.2 2004/04/28 23:11:57 millert Exp $ */ + +/* + * FILE: sha2.h + * AUTHOR: Aaron D. Gifford + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $From: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ + */ + +#ifndef _PG_SHA2_H_ +#define _PG_SHA2_H_ + +#include "pool_type.h" +#ifdef USE_SSL_NO_USE +#include +#endif + +/*** SHA224/256/384/512 Various Length Definitions ***********************/ +#define PG_SHA224_BLOCK_LENGTH 64 +#define PG_SHA224_DIGEST_LENGTH 28 +#define PG_SHA224_DIGEST_STRING_LENGTH (PG_SHA224_DIGEST_LENGTH * 2 + 1) +#define PG_SHA256_BLOCK_LENGTH 64 +#define PG_SHA256_DIGEST_LENGTH 32 +#define PG_SHA256_DIGEST_STRING_LENGTH (PG_SHA256_DIGEST_LENGTH * 2 + 1) +#define PG_SHA384_BLOCK_LENGTH 128 +#define PG_SHA384_DIGEST_LENGTH 48 +#define PG_SHA384_DIGEST_STRING_LENGTH (PG_SHA384_DIGEST_LENGTH * 2 + 1) +#define PG_SHA512_BLOCK_LENGTH 128 +#define PG_SHA512_DIGEST_LENGTH 64 +#define PG_SHA512_DIGEST_STRING_LENGTH (PG_SHA512_DIGEST_LENGTH * 2 + 1) + +/* Context Structures for SHA-1/224/256/384/512 */ +#ifdef USE_SSL_NO_USE +typedef SHA256_CTX pg_sha256_ctx; +typedef SHA512_CTX pg_sha512_ctx; +typedef SHA256_CTX pg_sha224_ctx; +typedef SHA512_CTX pg_sha384_ctx; +#else +typedef struct pg_sha256_ctx +{ + uint32 state[8]; + uint64 bitcount; + uint8 buffer[PG_SHA256_BLOCK_LENGTH]; +} pg_sha256_ctx; +typedef struct pg_sha512_ctx +{ + uint64 state[8]; + uint64 bitcount[2]; + uint8 buffer[PG_SHA512_BLOCK_LENGTH]; +} pg_sha512_ctx; +typedef struct pg_sha256_ctx pg_sha224_ctx; +typedef struct pg_sha512_ctx pg_sha384_ctx; +#endif /* USE_SSL */ + +/* Interface routines for SHA224/256/384/512 */ +extern void pg_sha224_init(pg_sha224_ctx *ctx); +extern void pg_sha224_update(pg_sha224_ctx *ctx, const uint8 *input0, + size_t len); +extern void pg_sha224_final(pg_sha224_ctx *ctx, uint8 *dest); + +extern void pg_sha256_init(pg_sha256_ctx *ctx); +extern void pg_sha256_update(pg_sha256_ctx *ctx, const uint8 *input0, + size_t len); +extern void pg_sha256_final(pg_sha256_ctx *ctx, uint8 *dest); + +extern void pg_sha384_init(pg_sha384_ctx *ctx); +extern void pg_sha384_update(pg_sha384_ctx *ctx, + const uint8 *, size_t len); +extern void pg_sha384_final(pg_sha384_ctx *ctx, uint8 *dest); + +extern void pg_sha512_init(pg_sha512_ctx *ctx); +extern void pg_sha512_update(pg_sha512_ctx *ctx, const uint8 *input0, + size_t len); +extern void pg_sha512_final(pg_sha512_ctx *ctx, uint8 *dest); + +#endif /* _PG_SHA2_H_ */ diff --git a/src/include/utils/ssl_utils.h b/src/include/utils/ssl_utils.h new file mode 100644 index 00000000..36b053d4 --- /dev/null +++ b/src/include/utils/ssl_utils.h @@ -0,0 +1,34 @@ +/* -*-pgsql-c-*- */ +/* + * + * $Header$ + * + * pgpool: a language independent connection pool server for PostgreSQL + * written by Tatsuo Ishii + * + * Copyright (c) 2003-2018 PgPool Global Development Group + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose and without fee is hereby + * granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of the + * author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * + */ + +#ifndef SSL_UTILS_H +#define SSL_UTILS_H + +extern void calculate_hmac_sha256(const char *data, int len, char *buf); +extern int aes_decrypt_with_password(unsigned char *ciphertext, int ciphertext_len, + const char *password, unsigned char *plaintext); +extern int aes_encrypt_with_password(unsigned char *plaintext, int plaintext_len, + const char *password, unsigned char *ciphertext); + +#endif diff --git a/src/include/watchdog/wd_utils.h b/src/include/watchdog/wd_utils.h index 69bdbd0d..cd6567a2 100644 --- a/src/include/watchdog/wd_utils.h +++ b/src/include/watchdog/wd_utils.h @@ -6,7 +6,7 @@ * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * - * Copyright (c) 2003-2016 PgPool Global Development Group + * Copyright (c) 2003-2018 PgPool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -38,7 +38,10 @@ extern void wd_check_network_command_configurations(void); extern int watchdog_thread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); extern char *string_replace(const char *string, const char *pattern, const char *replacement); extern void wd_calc_hash(const char *str, int len, char *buf); - +extern int aes_decrypt_with_password(unsigned char *ciphertext, int ciphertext_len, + const char *password, unsigned char *plaintext); +extern int aes_encrypt_with_password(unsigned char *plaintext, int plaintext_len, + const char *password, unsigned char *ciphertext); /* wd_escalation.c */ extern pid_t fork_escalation_process(void); extern pid_t fork_plunging_process(void); diff --git a/src/libs/Makefile.in b/src/libs/Makefile.in index dd1cd3a3..8c9c0838 100644 --- a/src/libs/Makefile.in +++ b/src/libs/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,17 +14,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -88,6 +78,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/libs +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -98,7 +90,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -160,7 +151,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -315,7 +305,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -340,6 +329,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/libs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/libs/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -634,8 +624,6 @@ uninstall-am: mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/src/libs/pcp/Makefile.in b/src/libs/pcp/Makefile.in index 3776dd94..6d87693d 100644 --- a/src/libs/pcp/Makefile.in +++ b/src/libs/pcp/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,17 +16,7 @@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -90,6 +80,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/libs/pcp +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(include_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -100,8 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ - $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -210,7 +200,6 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -340,7 +329,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -383,6 +371,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/libs/pcp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/libs/pcp/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -705,8 +694,6 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES -.PRECIOUS: Makefile - md5.c: ../../../src/auth/md5.c rm -f $@ && ln -s $< . diff --git a/src/main/main.c b/src/main/main.c index a87fa296..81a810d4 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -47,6 +47,9 @@ #include "watchdog/wd_utils.h" #include "pool_config_variables.h" + +static bool get_pool_key_filename(char *poolKeyFile); + static void daemonize(void); static char *get_pid_file_path(void); static int read_pid_file(void); @@ -66,7 +69,7 @@ int stop_sig = SIGTERM; /* stopping signal default value */ int myargc; char **myargv; int assert_enabled = 0; - +char *pool_key = NULL; int main(int argc, char **argv) { int opt; @@ -78,11 +81,13 @@ int main(int argc, char **argv) char pcp_conf_file_path[POOLMAXPATHLEN+1]; char conf_file_path[POOLMAXPATHLEN+1]; char hba_file_path[POOLMAXPATHLEN+1]; + char pool_passwd_key_file_path[POOLMAXPATHLEN+1]; static struct option long_options[] = { {"hba-file", required_argument, NULL, 'a'}, {"debug", no_argument, NULL, 'd'}, {"config-file", required_argument, NULL, 'f'}, + {"key-file", required_argument, NULL, 'k'}, {"pcp-file", required_argument, NULL, 'F'}, {"help", no_argument, NULL, 'h'}, {"mode", required_argument, NULL, 'm'}, @@ -100,7 +105,9 @@ int main(int argc, char **argv) snprintf(conf_file_path, sizeof(conf_file_path), "%s/%s", DEFAULT_CONFIGDIR, POOL_CONF_FILE_NAME); snprintf(pcp_conf_file_path, sizeof(pcp_conf_file_path), "%s/%s", DEFAULT_CONFIGDIR, PCP_PASSWD_FILE_NAME); snprintf(hba_file_path, sizeof(hba_file_path), "%s/%s", DEFAULT_CONFIGDIR, HBA_CONF_FILE_NAME); - while ((opt = getopt_long(argc, argv, "a:df:F:hm:nDCxv", long_options, &optindex)) != -1) + pool_passwd_key_file_path[0] = 0; + + while ((opt = getopt_long(argc, argv, "a:df:k:F:hm:nDCxv", long_options, &optindex)) != -1) { switch (opt) { @@ -139,6 +146,15 @@ int main(int argc, char **argv) strlcpy(pcp_conf_file_path, optarg, sizeof(pcp_conf_file_path)); break; + case 'k': /* specify key file for decrypt pool_password entries */ + if (!optarg) + { + usage(); + exit(1); + } + strlcpy(pool_passwd_key_file_path, optarg, sizeof(pool_passwd_key_file_path)); + break; + case 'h': usage(); exit(0); @@ -184,15 +200,15 @@ int main(int argc, char **argv) exit(1); } } -#ifdef USE_SSL - /* global ssl init */ -#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) - OPENSSL_init_ssl(0, NULL); -#else - SSL_library_init(); -#endif - SSL_load_error_strings(); -#endif /* USE_SSL */ +//#ifdef USE_SSL +// /* global ssl init */ +//#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) +// OPENSSL_init_ssl(0, NULL); +//#else +// SSL_library_init(); +//#endif +// SSL_load_error_strings(); +//#endif /* USE_SSL */ myargv = save_ps_display_args(myargc, myargv); /* create MemoryContexts */ @@ -284,6 +300,14 @@ int main(int argc, char **argv) if (pool_config->enable_pool_hba) load_hba(hba_file); +#ifdef USE_SSL + /* + * If ssl is enabled, initialize the SSL context + */ + if (pool_config->ssl) + SSL_ServerSide_init(); +#endif /* USE_SSL */ + /* check effective user id for watchdog */ /* watchdog must be started under the privileged user */ wd_check_network_command_configurations(); @@ -291,6 +315,13 @@ int main(int argc, char **argv) /* set signal masks */ poolinitmask(); + /* read the pool password key */ + if (strlen(pool_passwd_key_file_path) == 0) + { + get_pool_key_filename(pool_passwd_key_file_path); + } + pool_key = read_pool_key(pool_passwd_key_file_path); + if (not_detach) write_pid_file(); else @@ -328,6 +359,10 @@ static void show_version(void) static void usage(void) { + char homedir[POOLMAXPATHLEN]; + if (!get_home_directory(homedir, sizeof(homedir))) + strncpy(homedir,"USER-HOME-DIR",POOLMAXPATHLEN); + fprintf(stderr, "%s version %s (%s),\n", PACKAGE, VERSION, PGPOOLVERSION); fprintf(stderr, " A generic connection pool/replication/load balance server for PostgreSQL\n\n"); fprintf(stderr, "Usage:\n"); @@ -343,6 +378,10 @@ static void usage(void) fprintf(stderr, " -f, --config-file=CONFIG_FILE\n"); fprintf(stderr, " Set the path to the pgpool.conf configuration file\n"); fprintf(stderr, " (default: %s/%s)\n",DEFAULT_CONFIGDIR, POOL_CONF_FILE_NAME); + fprintf(stderr, " -k, --key-file=KEY_FILE\n"); + fprintf(stderr, " Set the path to the pgpool key file\n"); + fprintf(stderr, " (default: %s/%s)\n",homedir, POOLKEYFILE); + fprintf(stderr, " can be over ridden by %s environment variable\n",POOLKEYFILEENV); fprintf(stderr, " -F, --pcp-file=PCP_CONFIG_FILE\n"); fprintf(stderr, " Set the path to the pcp.conf configuration file\n"); fprintf(stderr, " (default: %s/%s)\n",DEFAULT_CONFIGDIR, PCP_PASSWD_FILE_NAME); @@ -363,6 +402,31 @@ static void usage(void) fprintf(stderr, " immediate the same mode as fast\n"); } +static bool +get_pool_key_filename(char *poolKeyFile) +{ + char *passfile_env; + + if ((passfile_env = getenv(POOLKEYFILEENV)) != NULL) + { + /* use the literal path from the environment, if set */ + strlcpy(poolKeyFile, passfile_env, POOLMAXPATHLEN); + } + else + { + char homedir[POOLMAXPATHLEN]; + if (!get_home_directory(homedir, sizeof(homedir))) + return false; + snprintf(poolKeyFile, POOLMAXPATHLEN, "%s/%s", homedir, POOLKEYFILE); + } + return true; +} + + +char *get_pool_key(void) +{ + return pool_key; +} /* * detach control ttys */ diff --git a/src/main/pgpool_main.c b/src/main/pgpool_main.c index e659aaa0..77f09cb6 100644 --- a/src/main/pgpool_main.c +++ b/src/main/pgpool_main.c @@ -46,7 +46,6 @@ #include #include "utils/elog.h" -#include "utils/palloc.h" #include "pool.h" #include "utils/palloc.h" diff --git a/src/parser/Makefile.in b/src/parser/Makefile.in index 097f0cd2..1176b3c3 100644 --- a/src/parser/Makefile.in +++ b/src/parser/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,17 +15,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -90,6 +80,8 @@ build_triplet = @build@ host_triplet = @host@ @use_repl_snprintf_TRUE@am__append_1 = snprintf.c subdir = src/parser +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs gram.h gram.c $(top_srcdir)/ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -100,7 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -204,8 +195,6 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs \ - $(top_srcdir)/ylwrap gram.c gram.h DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -335,7 +324,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -372,6 +360,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/parser/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/parser/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -644,8 +633,6 @@ uninstall-am: mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - gram.c: gram.y scan.c scan.c: scan.l diff --git a/src/parser/gram.c b/src/parser/gram.c index 16ca13f9..efee3501 100644 --- a/src/parser/gram.c +++ b/src/parser/gram.c @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "2.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -63,12 +63,15 @@ #define yyparse base_yyparse #define yylex base_yylex #define yyerror base_yyerror +#define yylval base_yylval +#define yychar base_yychar #define yydebug base_yydebug #define yynerrs base_yynerrs - +#define yylloc base_yylloc /* Copy the first part of user declarations. */ -#line 1 "gram.y" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 1 "gram.y" /*#define YYDEBUG 1*/ @@ -297,13 +300,14 @@ static void processCASbits(int cas_bits, int location, const char *constrType, static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); -#line 301 "gram.c" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 305 "gram.c" -# ifndef YY_NULLPTR +# ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# define YY_NULL nullptr # else -# define YY_NULLPTR 0 +# define YY_NULL 0 # endif # endif @@ -319,7 +323,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); by #include "y.tab.h". */ #ifndef YY_BASE_YY_Y_TAB_H_INCLUDED # define YY_BASE_YY_Y_TAB_H_INCLUDED -/* Debug traces. */ +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -327,465 +331,466 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); extern int base_yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - ABORT_P = 273, - ABSOLUTE_P = 274, - ACCESS = 275, - ACTION = 276, - ADD_P = 277, - ADMIN = 278, - AFTER = 279, - AGGREGATE = 280, - ALL = 281, - ALSO = 282, - ALTER = 283, - ALWAYS = 284, - ANALYSE = 285, - ANALYZE = 286, - AND = 287, - ANY = 288, - ARRAY = 289, - AS = 290, - ASC = 291, - ASSERTION = 292, - ASSIGNMENT = 293, - ASYMMETRIC = 294, - AT = 295, - ATTACH = 296, - ATTRIBUTE = 297, - AUTHORIZATION = 298, - BACKWARD = 299, - BEFORE = 300, - BEGIN_P = 301, - BETWEEN = 302, - BIGINT = 303, - BINARY = 304, - BIT = 305, - BOOLEAN_P = 306, - BOTH = 307, - BY = 308, - CACHE = 309, - CALLED = 310, - CASCADE = 311, - CASCADED = 312, - CASE = 313, - CAST = 314, - CATALOG_P = 315, - CHAIN = 316, - CHAR_P = 317, - CHARACTER = 318, - CHARACTERISTICS = 319, - CHECK = 320, - CHECKPOINT = 321, - CLASS = 322, - CLOSE = 323, - CLUSTER = 324, - COALESCE = 325, - COLLATE = 326, - COLLATION = 327, - COLUMN = 328, - COLUMNS = 329, - COMMENT = 330, - COMMENTS = 331, - COMMIT = 332, - COMMITTED = 333, - CONCURRENTLY = 334, - CONFIGURATION = 335, - CONFLICT = 336, - CONNECTION = 337, - CONSTRAINT = 338, - CONSTRAINTS = 339, - CONTENT_P = 340, - CONTINUE_P = 341, - CONVERSION_P = 342, - COPY = 343, - COST = 344, - CREATE = 345, - CROSS = 346, - CSV = 347, - CUBE = 348, - CURRENT_P = 349, - CURRENT_CATALOG = 350, - CURRENT_DATE = 351, - CURRENT_ROLE = 352, - CURRENT_SCHEMA = 353, - CURRENT_TIME = 354, - CURRENT_TIMESTAMP = 355, - CURRENT_USER = 356, - CURSOR = 357, - CYCLE = 358, - DATA_P = 359, - DATABASE = 360, - DAY_P = 361, - DEALLOCATE = 362, - DEC = 363, - DECIMAL_P = 364, - DECLARE = 365, - DEFAULT = 366, - DEFAULTS = 367, - DEFERRABLE = 368, - DEFERRED = 369, - DEFINER = 370, - DELETE_P = 371, - DELIMITER = 372, - DELIMITERS = 373, - DEPENDS = 374, - DESC = 375, - DETACH = 376, - DICTIONARY = 377, - DISABLE_P = 378, - DISCARD = 379, - DISTINCT = 380, - DO = 381, - DOCUMENT_P = 382, - DOMAIN_P = 383, - DOUBLE_P = 384, - DROP = 385, - EACH = 386, - ELSE = 387, - ENABLE_P = 388, - ENCODING = 389, - ENCRYPTED = 390, - END_P = 391, - ENUM_P = 392, - ESCAPE = 393, - EVENT = 394, - EXCEPT = 395, - EXCLUDE = 396, - EXCLUDING = 397, - EXCLUSIVE = 398, - EXECUTE = 399, - EXISTS = 400, - EXPLAIN = 401, - EXTENSION = 402, - EXTERNAL = 403, - EXTRACT = 404, - FALSE_P = 405, - FAMILY = 406, - FETCH = 407, - FILTER = 408, - FIRST_P = 409, - FLOAT_P = 410, - FOLLOWING = 411, - FOR = 412, - FORCE = 413, - FOREIGN = 414, - FORWARD = 415, - FREEZE = 416, - FROM = 417, - FULL = 418, - FUNCTION = 419, - FUNCTIONS = 420, - GENERATED = 421, - GLOBAL = 422, - GRANT = 423, - GRANTED = 424, - GREATEST = 425, - GROUP_P = 426, - GROUPING = 427, - HANDLER = 428, - HAVING = 429, - HEADER_P = 430, - HOLD = 431, - HOUR_P = 432, - IDENTITY_P = 433, - IF_P = 434, - ILIKE = 435, - IMMEDIATE = 436, - IMMUTABLE = 437, - IMPLICIT_P = 438, - IMPORT_P = 439, - IN_P = 440, - INCLUDING = 441, - INCREMENT = 442, - INDEX = 443, - INDEXES = 444, - INHERIT = 445, - INHERITS = 446, - INITIALLY = 447, - INLINE_P = 448, - INNER_P = 449, - INOUT = 450, - INPUT_P = 451, - INSENSITIVE = 452, - INSERT = 453, - INSTEAD = 454, - INT_P = 455, - INTEGER = 456, - INTERSECT = 457, - INTERVAL = 458, - INTO = 459, - INVOKER = 460, - IS = 461, - ISNULL = 462, - ISOLATION = 463, - JOIN = 464, - KEY = 465, - LABEL = 466, - LANGUAGE = 467, - LARGE_P = 468, - LAST_P = 469, - LATERAL_P = 470, - LEADING = 471, - LEAKPROOF = 472, - LEAST = 473, - LEFT = 474, - LEVEL = 475, - LIKE = 476, - LIMIT = 477, - LISTEN = 478, - LOAD = 479, - LOCAL = 480, - LOCALTIME = 481, - LOCALTIMESTAMP = 482, - LOCATION = 483, - LOCK_P = 484, - LOCKED = 485, - LOGGED = 486, - MAPPING = 487, - MATCH = 488, - MATERIALIZED = 489, - MAXVALUE = 490, - METHOD = 491, - MINUTE_P = 492, - MINVALUE = 493, - MODE = 494, - MONTH_P = 495, - MOVE = 496, - NAME_P = 497, - NAMES = 498, - NATIONAL = 499, - NATURAL = 500, - NCHAR = 501, - NEW = 502, - NEXT = 503, - NO = 504, - NONE = 505, - NOT = 506, - NOTHING = 507, - NOTIFY = 508, - NOTNULL = 509, - NOWAIT = 510, - NULL_P = 511, - NULLIF = 512, - NULLS_P = 513, - NUMERIC = 514, - OBJECT_P = 515, - OF = 516, - OFF = 517, - OFFSET = 518, - OIDS = 519, - OLD = 520, - ON = 521, - ONLY = 522, - OPERATOR = 523, - OPTION = 524, - OPTIONS = 525, - OR = 526, - ORDER = 527, - ORDINALITY = 528, - OUT_P = 529, - OUTER_P = 530, - OVER = 531, - OVERLAPS = 532, - OVERLAY = 533, - OVERRIDING = 534, - OWNED = 535, - OWNER = 536, - PARALLEL = 537, - PARSER = 538, - PARTIAL = 539, - PARTITION = 540, - PASSING = 541, - PASSWORD = 542, - PGPOOL = 543, - PLACING = 544, - PLANS = 545, - POLICY = 546, - POSITION = 547, - PRECEDING = 548, - PRECISION = 549, - PRESERVE = 550, - PREPARE = 551, - PREPARED = 552, - PRIMARY = 553, - PRIOR = 554, - PRIVILEGES = 555, - PROCEDURAL = 556, - PROCEDURE = 557, - PROGRAM = 558, - PUBLICATION = 559, - QUOTE = 560, - RANGE = 561, - READ = 562, - REAL = 563, - REASSIGN = 564, - RECHECK = 565, - RECURSIVE = 566, - REF = 567, - REFERENCES = 568, - REFERENCING = 569, - REFRESH = 570, - REINDEX = 571, - RELATIVE_P = 572, - RELEASE = 573, - RENAME = 574, - REPEATABLE = 575, - REPLACE = 576, - REPLICA = 577, - RESET = 578, - RESTART = 579, - RESTRICT = 580, - RETURNING = 581, - RETURNS = 582, - REVOKE = 583, - RIGHT = 584, - ROLE = 585, - ROLLBACK = 586, - ROLLUP = 587, - ROW = 588, - ROWS = 589, - RULE = 590, - SAVEPOINT = 591, - SCHEMA = 592, - SCHEMAS = 593, - SCROLL = 594, - SEARCH = 595, - SECOND_P = 596, - SECURITY = 597, - SELECT = 598, - SEQUENCE = 599, - SEQUENCES = 600, - SERIALIZABLE = 601, - SERVER = 602, - SESSION = 603, - SESSION_USER = 604, - SET = 605, - SETS = 606, - SETOF = 607, - SHARE = 608, - SHOW = 609, - SIMILAR = 610, - SIMPLE = 611, - SKIP = 612, - SMALLINT = 613, - SNAPSHOT = 614, - SOME = 615, - SQL_P = 616, - STABLE = 617, - STANDALONE_P = 618, - START = 619, - STATEMENT = 620, - STATISTICS = 621, - STDIN = 622, - STDOUT = 623, - STORAGE = 624, - STRICT_P = 625, - STRIP_P = 626, - SUBSCRIPTION = 627, - SUBSTRING = 628, - SYMMETRIC = 629, - SYSID = 630, - SYSTEM_P = 631, - TABLE = 632, - TABLES = 633, - TABLESAMPLE = 634, - TABLESPACE = 635, - TEMP = 636, - TEMPLATE = 637, - TEMPORARY = 638, - TEXT_P = 639, - THEN = 640, - TIME = 641, - TIMESTAMP = 642, - TO = 643, - TRAILING = 644, - TRANSACTION = 645, - TRANSFORM = 646, - TREAT = 647, - TRIGGER = 648, - TRIM = 649, - TRUE_P = 650, - TRUNCATE = 651, - TRUSTED = 652, - TYPE_P = 653, - TYPES_P = 654, - UNBOUNDED = 655, - UNCOMMITTED = 656, - UNENCRYPTED = 657, - UNION = 658, - UNIQUE = 659, - UNKNOWN = 660, - UNLISTEN = 661, - UNLOGGED = 662, - UNTIL = 663, - UPDATE = 664, - USER = 665, - USING = 666, - VACUUM = 667, - VALID = 668, - VALIDATE = 669, - VALIDATOR = 670, - VALUE_P = 671, - VALUES = 672, - VARCHAR = 673, - VARIADIC = 674, - VARYING = 675, - VERBOSE = 676, - VERSION_P = 677, - VIEW = 678, - VIEWS = 679, - VOLATILE = 680, - WHEN = 681, - WHERE = 682, - WHITESPACE_P = 683, - WINDOW = 684, - WITH = 685, - WITHIN = 686, - WITHOUT = 687, - WORK = 688, - WRAPPER = 689, - WRITE = 690, - XML_P = 691, - XMLATTRIBUTES = 692, - XMLCONCAT = 693, - XMLELEMENT = 694, - XMLEXISTS = 695, - XMLFOREST = 696, - XMLNAMESPACES = 697, - XMLPARSE = 698, - XMLPI = 699, - XMLROOT = 700, - XMLSERIALIZE = 701, - XMLTABLE = 702, - YEAR_P = 703, - YES_P = 704, - ZONE = 705, - NOT_LA = 706, - NULLS_LA = 707, - WITH_LA = 708, - POSTFIXOP = 709, - UMINUS = 710 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + LESS_EQUALS = 270, + GREATER_EQUALS = 271, + NOT_EQUALS = 272, + ABORT_P = 273, + ABSOLUTE_P = 274, + ACCESS = 275, + ACTION = 276, + ADD_P = 277, + ADMIN = 278, + AFTER = 279, + AGGREGATE = 280, + ALL = 281, + ALSO = 282, + ALTER = 283, + ALWAYS = 284, + ANALYSE = 285, + ANALYZE = 286, + AND = 287, + ANY = 288, + ARRAY = 289, + AS = 290, + ASC = 291, + ASSERTION = 292, + ASSIGNMENT = 293, + ASYMMETRIC = 294, + AT = 295, + ATTACH = 296, + ATTRIBUTE = 297, + AUTHORIZATION = 298, + BACKWARD = 299, + BEFORE = 300, + BEGIN_P = 301, + BETWEEN = 302, + BIGINT = 303, + BINARY = 304, + BIT = 305, + BOOLEAN_P = 306, + BOTH = 307, + BY = 308, + CACHE = 309, + CALLED = 310, + CASCADE = 311, + CASCADED = 312, + CASE = 313, + CAST = 314, + CATALOG_P = 315, + CHAIN = 316, + CHAR_P = 317, + CHARACTER = 318, + CHARACTERISTICS = 319, + CHECK = 320, + CHECKPOINT = 321, + CLASS = 322, + CLOSE = 323, + CLUSTER = 324, + COALESCE = 325, + COLLATE = 326, + COLLATION = 327, + COLUMN = 328, + COLUMNS = 329, + COMMENT = 330, + COMMENTS = 331, + COMMIT = 332, + COMMITTED = 333, + CONCURRENTLY = 334, + CONFIGURATION = 335, + CONFLICT = 336, + CONNECTION = 337, + CONSTRAINT = 338, + CONSTRAINTS = 339, + CONTENT_P = 340, + CONTINUE_P = 341, + CONVERSION_P = 342, + COPY = 343, + COST = 344, + CREATE = 345, + CROSS = 346, + CSV = 347, + CUBE = 348, + CURRENT_P = 349, + CURRENT_CATALOG = 350, + CURRENT_DATE = 351, + CURRENT_ROLE = 352, + CURRENT_SCHEMA = 353, + CURRENT_TIME = 354, + CURRENT_TIMESTAMP = 355, + CURRENT_USER = 356, + CURSOR = 357, + CYCLE = 358, + DATA_P = 359, + DATABASE = 360, + DAY_P = 361, + DEALLOCATE = 362, + DEC = 363, + DECIMAL_P = 364, + DECLARE = 365, + DEFAULT = 366, + DEFAULTS = 367, + DEFERRABLE = 368, + DEFERRED = 369, + DEFINER = 370, + DELETE_P = 371, + DELIMITER = 372, + DELIMITERS = 373, + DEPENDS = 374, + DESC = 375, + DETACH = 376, + DICTIONARY = 377, + DISABLE_P = 378, + DISCARD = 379, + DISTINCT = 380, + DO = 381, + DOCUMENT_P = 382, + DOMAIN_P = 383, + DOUBLE_P = 384, + DROP = 385, + EACH = 386, + ELSE = 387, + ENABLE_P = 388, + ENCODING = 389, + ENCRYPTED = 390, + END_P = 391, + ENUM_P = 392, + ESCAPE = 393, + EVENT = 394, + EXCEPT = 395, + EXCLUDE = 396, + EXCLUDING = 397, + EXCLUSIVE = 398, + EXECUTE = 399, + EXISTS = 400, + EXPLAIN = 401, + EXTENSION = 402, + EXTERNAL = 403, + EXTRACT = 404, + FALSE_P = 405, + FAMILY = 406, + FETCH = 407, + FILTER = 408, + FIRST_P = 409, + FLOAT_P = 410, + FOLLOWING = 411, + FOR = 412, + FORCE = 413, + FOREIGN = 414, + FORWARD = 415, + FREEZE = 416, + FROM = 417, + FULL = 418, + FUNCTION = 419, + FUNCTIONS = 420, + GENERATED = 421, + GLOBAL = 422, + GRANT = 423, + GRANTED = 424, + GREATEST = 425, + GROUP_P = 426, + GROUPING = 427, + HANDLER = 428, + HAVING = 429, + HEADER_P = 430, + HOLD = 431, + HOUR_P = 432, + IDENTITY_P = 433, + IF_P = 434, + ILIKE = 435, + IMMEDIATE = 436, + IMMUTABLE = 437, + IMPLICIT_P = 438, + IMPORT_P = 439, + IN_P = 440, + INCLUDING = 441, + INCREMENT = 442, + INDEX = 443, + INDEXES = 444, + INHERIT = 445, + INHERITS = 446, + INITIALLY = 447, + INLINE_P = 448, + INNER_P = 449, + INOUT = 450, + INPUT_P = 451, + INSENSITIVE = 452, + INSERT = 453, + INSTEAD = 454, + INT_P = 455, + INTEGER = 456, + INTERSECT = 457, + INTERVAL = 458, + INTO = 459, + INVOKER = 460, + IS = 461, + ISNULL = 462, + ISOLATION = 463, + JOIN = 464, + KEY = 465, + LABEL = 466, + LANGUAGE = 467, + LARGE_P = 468, + LAST_P = 469, + LATERAL_P = 470, + LEADING = 471, + LEAKPROOF = 472, + LEAST = 473, + LEFT = 474, + LEVEL = 475, + LIKE = 476, + LIMIT = 477, + LISTEN = 478, + LOAD = 479, + LOCAL = 480, + LOCALTIME = 481, + LOCALTIMESTAMP = 482, + LOCATION = 483, + LOCK_P = 484, + LOCKED = 485, + LOGGED = 486, + MAPPING = 487, + MATCH = 488, + MATERIALIZED = 489, + MAXVALUE = 490, + METHOD = 491, + MINUTE_P = 492, + MINVALUE = 493, + MODE = 494, + MONTH_P = 495, + MOVE = 496, + NAME_P = 497, + NAMES = 498, + NATIONAL = 499, + NATURAL = 500, + NCHAR = 501, + NEW = 502, + NEXT = 503, + NO = 504, + NONE = 505, + NOT = 506, + NOTHING = 507, + NOTIFY = 508, + NOTNULL = 509, + NOWAIT = 510, + NULL_P = 511, + NULLIF = 512, + NULLS_P = 513, + NUMERIC = 514, + OBJECT_P = 515, + OF = 516, + OFF = 517, + OFFSET = 518, + OIDS = 519, + OLD = 520, + ON = 521, + ONLY = 522, + OPERATOR = 523, + OPTION = 524, + OPTIONS = 525, + OR = 526, + ORDER = 527, + ORDINALITY = 528, + OUT_P = 529, + OUTER_P = 530, + OVER = 531, + OVERLAPS = 532, + OVERLAY = 533, + OVERRIDING = 534, + OWNED = 535, + OWNER = 536, + PARALLEL = 537, + PARSER = 538, + PARTIAL = 539, + PARTITION = 540, + PASSING = 541, + PASSWORD = 542, + PGPOOL = 543, + PLACING = 544, + PLANS = 545, + POLICY = 546, + POSITION = 547, + PRECEDING = 548, + PRECISION = 549, + PRESERVE = 550, + PREPARE = 551, + PREPARED = 552, + PRIMARY = 553, + PRIOR = 554, + PRIVILEGES = 555, + PROCEDURAL = 556, + PROCEDURE = 557, + PROGRAM = 558, + PUBLICATION = 559, + QUOTE = 560, + RANGE = 561, + READ = 562, + REAL = 563, + REASSIGN = 564, + RECHECK = 565, + RECURSIVE = 566, + REF = 567, + REFERENCES = 568, + REFERENCING = 569, + REFRESH = 570, + REINDEX = 571, + RELATIVE_P = 572, + RELEASE = 573, + RENAME = 574, + REPEATABLE = 575, + REPLACE = 576, + REPLICA = 577, + RESET = 578, + RESTART = 579, + RESTRICT = 580, + RETURNING = 581, + RETURNS = 582, + REVOKE = 583, + RIGHT = 584, + ROLE = 585, + ROLLBACK = 586, + ROLLUP = 587, + ROW = 588, + ROWS = 589, + RULE = 590, + SAVEPOINT = 591, + SCHEMA = 592, + SCHEMAS = 593, + SCROLL = 594, + SEARCH = 595, + SECOND_P = 596, + SECURITY = 597, + SELECT = 598, + SEQUENCE = 599, + SEQUENCES = 600, + SERIALIZABLE = 601, + SERVER = 602, + SESSION = 603, + SESSION_USER = 604, + SET = 605, + SETS = 606, + SETOF = 607, + SHARE = 608, + SHOW = 609, + SIMILAR = 610, + SIMPLE = 611, + SKIP = 612, + SMALLINT = 613, + SNAPSHOT = 614, + SOME = 615, + SQL_P = 616, + STABLE = 617, + STANDALONE_P = 618, + START = 619, + STATEMENT = 620, + STATISTICS = 621, + STDIN = 622, + STDOUT = 623, + STORAGE = 624, + STRICT_P = 625, + STRIP_P = 626, + SUBSCRIPTION = 627, + SUBSTRING = 628, + SYMMETRIC = 629, + SYSID = 630, + SYSTEM_P = 631, + TABLE = 632, + TABLES = 633, + TABLESAMPLE = 634, + TABLESPACE = 635, + TEMP = 636, + TEMPLATE = 637, + TEMPORARY = 638, + TEXT_P = 639, + THEN = 640, + TIME = 641, + TIMESTAMP = 642, + TO = 643, + TRAILING = 644, + TRANSACTION = 645, + TRANSFORM = 646, + TREAT = 647, + TRIGGER = 648, + TRIM = 649, + TRUE_P = 650, + TRUNCATE = 651, + TRUSTED = 652, + TYPE_P = 653, + TYPES_P = 654, + UNBOUNDED = 655, + UNCOMMITTED = 656, + UNENCRYPTED = 657, + UNION = 658, + UNIQUE = 659, + UNKNOWN = 660, + UNLISTEN = 661, + UNLOGGED = 662, + UNTIL = 663, + UPDATE = 664, + USER = 665, + USING = 666, + VACUUM = 667, + VALID = 668, + VALIDATE = 669, + VALIDATOR = 670, + VALUE_P = 671, + VALUES = 672, + VARCHAR = 673, + VARIADIC = 674, + VARYING = 675, + VERBOSE = 676, + VERSION_P = 677, + VIEW = 678, + VIEWS = 679, + VOLATILE = 680, + WHEN = 681, + WHERE = 682, + WHITESPACE_P = 683, + WINDOW = 684, + WITH = 685, + WITHIN = 686, + WITHOUT = 687, + WORK = 688, + WRAPPER = 689, + WRITE = 690, + XML_P = 691, + XMLATTRIBUTES = 692, + XMLCONCAT = 693, + XMLELEMENT = 694, + XMLEXISTS = 695, + XMLFOREST = 696, + XMLNAMESPACES = 697, + XMLPARSE = 698, + XMLPI = 699, + XMLROOT = 700, + XMLSERIALIZE = 701, + XMLTABLE = 702, + YEAR_P = 703, + YES_P = 704, + ZONE = 705, + NOT_LA = 706, + NULLS_LA = 707, + WITH_LA = 708, + POSTFIXOP = 709, + UMINUS = 710 + }; #endif /* Tokens. */ #define IDENT 258 @@ -1242,12 +1247,13 @@ extern int base_yydebug; #define POSTFIXOP 709 #define UMINUS 710 -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 239 "gram.y" /* yacc.c:355 */ +/* Line 387 of yacc.c */ +#line 239 "gram.y" core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ @@ -1291,37 +1297,49 @@ union YYSTYPE PartitionBoundSpec *partboundspec; RoleSpec *rolespec; -#line 1295 "gram.c" /* yacc.c:355 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 387 of yacc.c */ +#line 1303 "gram.c" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int base_yyparse (void *YYPARSE_PARAM); +#else +int base_yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int base_yyparse (core_yyscan_t yyscanner); +#else +int base_yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ #endif /* !YY_BASE_YY_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 1325 "gram.c" /* yacc.c:358 */ +/* Line 390 of yacc.c */ +#line 1343 "gram.c" #ifdef short # undef short @@ -1335,8 +1353,11 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#else +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; +#else +typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -1356,7 +1377,8 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -1378,33 +1400,6 @@ typedef short int yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -1412,26 +1407,24 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(N) (N) #else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; #endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ +{ + return yyi; +} #endif - #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -1449,7 +1442,8 @@ typedef short int yytype_int16; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -1461,8 +1455,8 @@ typedef short int yytype_int16; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -1478,7 +1472,7 @@ typedef short int yytype_int16; # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -1486,13 +1480,15 @@ typedef short int yytype_int16; # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -1502,8 +1498,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -1529,16 +1525,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif @@ -1557,7 +1553,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (0) + while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -1573,19 +1569,17 @@ union yyalloc #define YYNNTS 653 /* YYNRULES -- Number of rules. */ #define YYNRULES 2661 -/* YYNSTATES -- Number of states. */ +/* YYNRULES -- Number of states. */ #define YYNSTATES 5314 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 710 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1663,7 +1657,1252 @@ static const yytype_uint16 yytranslate[] = }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, + 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, + 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, + 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, + 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, + 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, + 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, + 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, + 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, + 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, + 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, + 241, 243, 245, 247, 249, 251, 253, 255, 257, 258, + 264, 266, 268, 269, 272, 273, 276, 277, 280, 283, + 287, 291, 293, 297, 301, 304, 306, 308, 311, 314, + 317, 321, 325, 331, 337, 343, 344, 348, 354, 360, + 366, 372, 376, 382, 386, 392, 396, 402, 408, 415, + 417, 419, 426, 431, 441, 449, 451, 452, 455, 456, + 458, 460, 462, 464, 466, 468, 472, 475, 479, 483, + 486, 492, 494, 498, 502, 506, 510, 512, 516, 520, + 523, 526, 529, 532, 536, 540, 544, 548, 550, 554, + 556, 560, 562, 564, 567, 570, 573, 575, 577, 579, + 581, 583, 585, 587, 591, 597, 599, 601, 603, 605, + 607, 608, 610, 612, 615, 619, 621, 624, 628, 631, + 633, 635, 638, 640, 643, 645, 649, 653, 656, 660, + 665, 669, 672, 677, 679, 681, 683, 685, 687, 690, + 693, 696, 699, 702, 707, 714, 719, 726, 737, 751, + 756, 763, 774, 788, 793, 800, 805, 812, 818, 826, + 838, 853, 855, 859, 864, 868, 871, 877, 881, 888, + 893, 900, 907, 914, 920, 926, 933, 943, 948, 954, + 962, 969, 974, 983, 988, 991, 996, 1000, 1007, 1012, + 1016, 1020, 1024, 1028, 1031, 1034, 1038, 1043, 1048, 1052, + 1056, 1060, 1064, 1068, 1072, 1077, 1082, 1086, 1089, 1093, + 1096, 1099, 1103, 1107, 1110, 1113, 1117, 1122, 1127, 1132, + 1138, 1140, 1144, 1147, 1149, 1151, 1152, 1155, 1156, 1159, + 1160, 1162, 1164, 1166, 1170, 1174, 1177, 1178, 1180, 1184, + 1188, 1190, 1196, 1200, 1202, 1205, 1207, 1211, 1214, 1218, + 1225, 1236, 1238, 1240, 1242, 1244, 1248, 1250, 1254, 1256, + 1258, 1260, 1265, 1267, 1271, 1276, 1283, 1288, 1297, 1300, + 1303, 1315, 1325, 1327, 1329, 1331, 1332, 1334, 1336, 1338, + 1340, 1344, 1347, 1348, 1350, 1352, 1354, 1358, 1362, 1364, + 1366, 1370, 1374, 1378, 1382, 1387, 1391, 1394, 1396, 1397, + 1400, 1401, 1405, 1406, 1408, 1409, 1411, 1415, 1418, 1420, + 1422, 1424, 1428, 1429, 1431, 1435, 1437, 1450, 1466, 1478, + 1493, 1507, 1524, 1526, 1528, 1531, 1534, 1537, 1540, 1542, + 1543, 1545, 1546, 1550, 1551, 1553, 1557, 1559, 1563, 1565, + 1567, 1569, 1571, 1573, 1578, 1581, 1586, 1589, 1590, 1594, + 1596, 1598, 1601, 1604, 1606, 1610, 1615, 1621, 1624, 1630, + 1636, 1638, 1641, 1643, 1646, 1649, 1652, 1656, 1660, 1664, + 1665, 1667, 1669, 1671, 1673, 1675, 1677, 1679, 1683, 1685, + 1691, 1699, 1703, 1712, 1717, 1727, 1739, 1742, 1743, 1747, + 1748, 1750, 1754, 1756, 1759, 1762, 1765, 1766, 1768, 1772, + 1776, 1783, 1788, 1789, 1791, 1793, 1796, 1799, 1800, 1804, + 1808, 1811, 1813, 1815, 1818, 1821, 1826, 1827, 1829, 1830, + 1837, 1839, 1841, 1843, 1847, 1851, 1855, 1861, 1864, 1867, + 1870, 1871, 1875, 1880, 1885, 1886, 1889, 1890, 1895, 1896, + 1900, 1909, 1921, 1929, 1940, 1946, 1949, 1953, 1954, 1963, + 1975, 1980, 1982, 1983, 1990, 1996, 2005, 2010, 2017, 2019, + 2020, 2024, 2025, 2027, 2030, 2033, 2036, 2038, 2041, 2045, + 2048, 2051, 2054, 2057, 2061, 2065, 2069, 2071, 2075, 2077, + 2078, 2080, 2083, 2086, 2088, 2090, 2094, 2101, 2112, 2114, + 2115, 2117, 2120, 2123, 2124, 2127, 2130, 2132, 2133, 2139, + 2147, 2149, 2150, 2158, 2161, 2162, 2166, 2172, 2178, 2187, + 2190, 2191, 2194, 2197, 2200, 2202, 2208, 2211, 2212, 2215, + 2223, 2230, 2241, 2248, 2255, 2262, 2269, 2277, 2284, 2294, + 2304, 2311, 2319, 2326, 2335, 2344, 2353, 2362, 2369, 2376, + 2384, 2392, 2401, 2408, 2418, 2425, 2433, 2436, 2439, 2442, + 2445, 2447, 2450, 2452, 2453, 2461, 2468, 2473, 2474, 2476, + 2480, 2485, 2487, 2491, 2493, 2496, 2499, 2502, 2505, 2507, + 2509, 2520, 2534, 2537, 2538, 2541, 2544, 2546, 2547, 2553, + 2558, 2563, 2575, 2590, 2603, 2619, 2625, 2633, 2645, 2648, + 2650, 2655, 2656, 2665, 2677, 2679, 2681, 2689, 2699, 2708, + 2719, 2728, 2733, 2734, 2740, 2741, 2744, 2745, 2748, 2749, + 2752, 2753, 2756, 2757, 2759, 2761, 2763, 2765, 2767, 2776, + 2793, 2814, 2816, 2818, 2821, 2823, 2827, 2829, 2831, 2833, + 2837, 2839, 2842, 2843, 2845, 2848, 2853, 2855, 2857, 2859, + 2861, 2863, 2867, 2868, 2870, 2871, 2873, 2875, 2880, 2881, + 2883, 2887, 2888, 2890, 2892, 2894, 2896, 2899, 2900, 2901, + 2904, 2907, 2909, 2912, 2915, 2918, 2921, 2933, 2947, 2949, + 2953, 2959, 2961, 2965, 2971, 2973, 2976, 2979, 2981, 2990, + 2995, 3001, 3006, 3011, 3016, 3020, 3028, 3037, 3044, 3051, + 3058, 3065, 3072, 3077, 3085, 3091, 3100, 3104, 3106, 3110, + 3114, 3116, 3118, 3120, 3122, 3124, 3126, 3128, 3132, 3134, + 3138, 3142, 3144, 3145, 3147, 3151, 3159, 3169, 3179, 3188, + 3192, 3193, 3207, 3209, 3213, 3219, 3225, 3229, 3236, 3239, + 3241, 3242, 3245, 3246, 3249, 3254, 3255, 3257, 3258, 3265, + 3274, 3283, 3285, 3289, 3295, 3301, 3309, 3319, 3327, 3337, + 3343, 3350, 3357, 3362, 3369, 3374, 3381, 3390, 3395, 3402, + 3407, 3414, 3420, 3428, 3430, 3432, 3434, 3437, 3439, 3442, + 3444, 3446, 3448, 3452, 3456, 3460, 3464, 3467, 3470, 3472, + 3476, 3478, 3480, 3482, 3484, 3486, 3488, 3490, 3494, 3496, + 3499, 3502, 3506, 3508, 3512, 3518, 3521, 3524, 3525, 3532, + 3539, 3546, 3553, 3560, 3567, 3574, 3583, 3593, 3602, 3611, + 3621, 3630, 3640, 3650, 3658, 3669, 3671, 3673, 3675, 3677, + 3679, 3681, 3684, 3686, 3688, 3691, 3695, 3699, 3703, 3707, + 3710, 3712, 3715, 3717, 3721, 3724, 3726, 3728, 3730, 3732, + 3734, 3736, 3738, 3740, 3749, 3758, 3767, 3776, 3785, 3794, + 3804, 3807, 3808, 3810, 3813, 3815, 3817, 3819, 3822, 3824, + 3827, 3830, 3832, 3834, 3836, 3838, 3840, 3842, 3844, 3847, + 3850, 3852, 3855, 3859, 3863, 3867, 3871, 3876, 3881, 3885, + 3889, 3893, 3898, 3903, 3907, 3912, 3917, 3919, 3921, 3923, + 3924, 3932, 3940, 3951, 3953, 3955, 3958, 3963, 3969, 3971, + 3975, 3978, 3981, 3984, 3987, 3989, 3992, 3995, 4000, 4004, + 4007, 4010, 4013, 4016, 4020, 4023, 4026, 4029, 4035, 4041, + 4047, 4049, 4053, 4055, 4058, 4062, 4063, 4070, 4077, 4087, + 4091, 4092, 4096, 4097, 4103, 4106, 4107, 4111, 4115, 4119, + 4127, 4135, 4146, 4148, 4150, 4152, 4154, 4156, 4171, 4189, + 4191, 4192, 4194, 4195, 4197, 4198, 4201, 4202, 4204, 4208, + 4214, 4220, 4228, 4231, 4232, 4234, 4235, 4237, 4239, 4240, + 4243, 4246, 4247, 4257, 4270, 4278, 4281, 4282, 4286, 4289, + 4291, 4295, 4297, 4301, 4304, 4306, 4308, 4311, 4315, 4318, + 4320, 4324, 4328, 4332, 4335, 4338, 4340, 4342, 4344, 4346, + 4349, 4351, 4353, 4355, 4357, 4362, 4368, 4370, 4374, 4378, + 4380, 4384, 4388, 4394, 4401, 4403, 4407, 4410, 4412, 4416, + 4418, 4421, 4426, 4432, 4434, 4436, 4438, 4440, 4444, 4448, + 4451, 4454, 4456, 4459, 4462, 4465, 4467, 4470, 4473, 4476, + 4479, 4481, 4483, 4485, 4489, 4493, 4499, 4502, 4503, 4506, + 4508, 4512, 4518, 4520, 4523, 4525, 4526, 4531, 4538, 4543, + 4550, 4555, 4562, 4566, 4572, 4578, 4584, 4586, 4590, 4592, + 4596, 4599, 4602, 4604, 4607, 4609, 4612, 4624, 4635, 4646, + 4649, 4652, 4653, 4663, 4666, 4667, 4678, 4690, 4702, 4708, + 4714, 4723, 4727, 4731, 4738, 4745, 4747, 4749, 4751, 4753, + 4755, 4757, 4761, 4763, 4769, 4775, 4782, 4789, 4796, 4803, + 4810, 4819, 4828, 4835, 4842, 4850, 4860, 4870, 4879, 4890, + 4897, 4904, 4911, 4918, 4925, 4934, 4941, 4950, 4957, 4966, + 4974, 4984, 4991, 5000, 5008, 5018, 5027, 5038, 5048, 5060, + 5069, 5080, 5090, 5102, 5111, 5120, 5128, 5135, 5142, 5149, + 5156, 5165, 5174, 5183, 5192, 5199, 5209, 5211, 5212, 5215, + 5216, 5224, 5234, 5243, 5251, 5258, 5265, 5272, 5279, 5286, + 5293, 5300, 5310, 5320, 5327, 5336, 5343, 5352, 5361, 5370, + 5379, 5386, 5395, 5402, 5411, 5419, 5429, 5437, 5447, 5454, + 5462, 5464, 5468, 5472, 5476, 5478, 5480, 5482, 5484, 5486, + 5493, 5500, 5507, 5514, 5521, 5528, 5536, 5544, 5551, 5561, + 5571, 5578, 5585, 5592, 5599, 5608, 5617, 5626, 5633, 5641, + 5648, 5655, 5661, 5663, 5664, 5668, 5672, 5678, 5685, 5692, + 5699, 5708, 5710, 5714, 5716, 5722, 5728, 5735, 5743, 5748, + 5753, 5758, 5765, 5779, 5781, 5783, 5787, 5791, 5793, 5795, + 5797, 5799, 5801, 5803, 5805, 5806, 5808, 5810, 5812, 5814, + 5816, 5818, 5819, 5823, 5826, 5827, 5830, 5833, 5836, 5839, + 5843, 5847, 5850, 5853, 5856, 5859, 5863, 5866, 5872, 5877, + 5881, 5885, 5889, 5891, 5893, 5894, 5898, 5901, 5904, 5906, + 5909, 5911, 5915, 5918, 5920, 5921, 5931, 5943, 5956, 5971, + 5975, 5980, 5985, 5986, 5989, 5995, 5997, 5998, 6000, 6003, + 6007, 6011, 6015, 6017, 6020, 6022, 6024, 6026, 6028, 6030, + 6032, 6033, 6039, 6044, 6051, 6056, 6060, 6066, 6072, 6077, + 6082, 6089, 6094, 6101, 6108, 6114, 6122, 6132, 6139, 6141, + 6142, 6149, 6161, 6173, 6185, 6199, 6209, 6221, 6223, 6225, + 6236, 6241, 6244, 6250, 6253, 6254, 6259, 6265, 6271, 6276, + 6283, 6285, 6289, 6291, 6293, 6295, 6297, 6299, 6302, 6307, + 6309, 6311, 6313, 6314, 6316, 6317, 6319, 6320, 6324, 6325, + 6328, 6333, 6337, 6343, 6345, 6347, 6349, 6351, 6353, 6355, + 6357, 6359, 6361, 6363, 6367, 6370, 6372, 6374, 6376, 6378, + 6379, 6385, 6389, 6390, 6392, 6394, 6396, 6398, 6402, 6412, + 6416, 6417, 6420, 6424, 6427, 6431, 6439, 6441, 6445, 6447, + 6452, 6457, 6465, 6468, 6470, 6472, 6474, 6478, 6481, 6490, + 6496, 6497, 6502, 6506, 6507, 6510, 6511, 6519, 6522, 6523, + 6529, 6533, 6534, 6537, 6540, 6543, 6547, 6549, 6553, 6555, + 6558, 6560, 6561, 6563, 6566, 6567, 6576, 6578, 6582, 6586, + 6592, 6595, 6597, 6601, 6609, 6611, 6612, 6616, 6619, 6622, + 6625, 6626, 6629, 6632, 6634, 6636, 6640, 6644, 6646, 6649, + 6654, 6659, 6662, 6666, 6672, 6678, 6680, 6682, 6692, 6702, + 6704, 6707, 6712, 6717, 6722, 6725, 6728, 6732, 6734, 6738, + 6745, 6747, 6748, 6751, 6752, 6756, 6760, 6765, 6770, 6775, + 6780, 6784, 6787, 6789, 6791, 6792, 6794, 6796, 6797, 6799, + 6805, 6807, 6808, 6810, 6811, 6815, 6817, 6821, 6826, 6830, + 6833, 6836, 6838, 6840, 6842, 6843, 6846, 6851, 6857, 6860, + 6864, 6866, 6868, 6870, 6872, 6876, 6877, 6879, 6881, 6883, + 6885, 6887, 6891, 6892, 6894, 6898, 6900, 6902, 6904, 6906, + 6908, 6911, 6916, 6921, 6927, 6930, 6931, 6933, 6937, 6939, + 6940, 6942, 6945, 6949, 6952, 6957, 6960, 6964, 6967, 6968, + 6973, 6979, 6982, 6983, 6985, 6989, 6992, 6996, 6999, 7003, + 7006, 7010, 7013, 7017, 7019, 7024, 7028, 7033, 7039, 7044, + 7050, 7055, 7061, 7064, 7069, 7071, 7073, 7074, 7076, 7081, + 7087, 7092, 7093, 7096, 7099, 7102, 7104, 7106, 7107, 7112, + 7115, 7117, 7120, 7123, 7128, 7130, 7134, 7136, 7139, 7143, + 7150, 7155, 7156, 7159, 7166, 7169, 7171, 7175, 7180, 7181, + 7184, 7185, 7188, 7189, 7192, 7197, 7198, 7200, 7201, 7203, + 7207, 7211, 7219, 7232, 7234, 7238, 7241, 7245, 7249, 7251, + 7254, 7257, 7260, 7263, 7265, 7267, 7271, 7275, 7278, 7281, + 7285, 7291, 7298, 7301, 7305, 7309, 7314, 7315, 7317, 7319, + 7321, 7323, 7325, 7328, 7333, 7335, 7337, 7339, 7341, 7344, + 7348, 7352, 7353, 7355, 7357, 7359, 7361, 7363, 7366, 7369, + 7372, 7375, 7378, 7380, 7384, 7385, 7387, 7389, 7391, 7393, + 7399, 7402, 7404, 7406, 7408, 7410, 7415, 7417, 7420, 7423, + 7425, 7429, 7433, 7436, 7438, 7439, 7445, 7448, 7454, 7457, + 7459, 7463, 7467, 7468, 7470, 7472, 7474, 7476, 7478, 7480, + 7484, 7488, 7492, 7496, 7500, 7504, 7508, 7509, 7511, 7516, + 7518, 7522, 7526, 7532, 7535, 7538, 7542, 7546, 7550, 7554, + 7558, 7562, 7566, 7570, 7574, 7578, 7582, 7586, 7590, 7593, + 7596, 7600, 7604, 7607, 7610, 7614, 7620, 7625, 7632, 7636, + 7642, 7647, 7654, 7659, 7666, 7672, 7680, 7684, 7687, 7692, + 7695, 7699, 7703, 7708, 7712, 7717, 7721, 7726, 7732, 7739, + 7746, 7754, 7761, 7769, 7776, 7784, 7788, 7793, 7798, 7805, + 7808, 7812, 7817, 7819, 7821, 7825, 7828, 7831, 7835, 7839, + 7843, 7847, 7851, 7855, 7859, 7863, 7867, 7871, 7875, 7879, + 7883, 7886, 7889, 7895, 7902, 7909, 7917, 7921, 7926, 7928, + 7930, 7933, 7938, 7940, 7942, 7944, 7947, 7950, 7953, 7956, + 7958, 7960, 7965, 7969, 7975, 7982, 7991, 7998, 8005, 8010, + 8015, 8017, 8019, 8021, 8027, 8029, 8031, 8036, 8038, 8043, + 8045, 8050, 8052, 8057, 8059, 8061, 8063, 8065, 8067, 8069, + 8076, 8081, 8086, 8091, 8096, 8103, 8109, 8115, 8121, 8126, + 8133, 8138, 8143, 8148, 8153, 8159, 8167, 8175, 8185, 8191, + 8196, 8203, 8209, 8217, 8225, 8233, 8236, 8240, 8244, 8248, + 8253, 8254, 8259, 8261, 8265, 8269, 8271, 8273, 8275, 8278, + 8281, 8282, 8285, 8290, 8295, 8302, 8308, 8309, 8315, 8316, + 8319, 8320, 8322, 8326, 8330, 8333, 8336, 8337, 8344, 8346, + 8347, 8351, 8352, 8355, 8358, 8359, 8361, 8366, 8369, 8372, + 8375, 8378, 8381, 8386, 8390, 8396, 8401, 8405, 8411, 8413, + 8415, 8417, 8419, 8421, 8423, 8425, 8427, 8429, 8431, 8433, + 8435, 8437, 8439, 8441, 8443, 8445, 8447, 8452, 8454, 8459, + 8461, 8466, 8468, 8471, 8473, 8476, 8478, 8482, 8484, 8488, + 8490, 8494, 8498, 8500, 8504, 8508, 8512, 8515, 8517, 8521, + 8525, 8526, 8528, 8530, 8532, 8534, 8536, 8538, 8540, 8542, + 8547, 8551, 8554, 8558, 8559, 8563, 8567, 8570, 8573, 8575, + 8576, 8579, 8582, 8586, 8589, 8591, 8593, 8597, 8603, 8605, + 8608, 8613, 8616, 8617, 8619, 8620, 8622, 8625, 8628, 8631, + 8635, 8641, 8643, 8644, 8646, 8649, 8650, 8653, 8655, 8656, + 8658, 8659, 8661, 8665, 8669, 8672, 8674, 8676, 8678, 8682, + 8684, 8687, 8689, 8693, 8695, 8697, 8699, 8701, 8703, 8705, + 8707, 8710, 8712, 8714, 8716, 8718, 8720, 8723, 8730, 8733, + 8737, 8743, 8745, 8747, 8749, 8751, 8753, 8755, 8758, 8761, + 8763, 8765, 8767, 8769, 8771, 8775, 8777, 8779, 8781, 8783, + 8785, 8787, 8789, 8791, 8793, 8795, 8797, 8799, 8801, 8803, + 8805, 8807, 8809, 8811, 8813, 8815, 8817, 8819, 8821, 8823, + 8825, 8827, 8829, 8831, 8833, 8835, 8837, 8839, 8841, 8843, + 8845, 8847, 8849, 8851, 8853, 8855, 8857, 8859, 8861, 8863, + 8865, 8867, 8869, 8871, 8873, 8875, 8877, 8879, 8881, 8883, + 8885, 8887, 8889, 8891, 8893, 8895, 8897, 8899, 8901, 8903, + 8905, 8907, 8909, 8911, 8913, 8915, 8917, 8919, 8921, 8923, + 8925, 8927, 8929, 8931, 8933, 8935, 8937, 8939, 8941, 8943, + 8945, 8947, 8949, 8951, 8953, 8955, 8957, 8959, 8961, 8963, + 8965, 8967, 8969, 8971, 8973, 8975, 8977, 8979, 8981, 8983, + 8985, 8987, 8989, 8991, 8993, 8995, 8997, 8999, 9001, 9003, + 9005, 9007, 9009, 9011, 9013, 9015, 9017, 9019, 9021, 9023, + 9025, 9027, 9029, 9031, 9033, 9035, 9037, 9039, 9041, 9043, + 9045, 9047, 9049, 9051, 9053, 9055, 9057, 9059, 9061, 9063, + 9065, 9067, 9069, 9071, 9073, 9075, 9077, 9079, 9081, 9083, + 9085, 9087, 9089, 9091, 9093, 9095, 9097, 9099, 9101, 9103, + 9105, 9107, 9109, 9111, 9113, 9115, 9117, 9119, 9121, 9123, + 9125, 9127, 9129, 9131, 9133, 9135, 9137, 9139, 9141, 9143, + 9145, 9147, 9149, 9151, 9153, 9155, 9157, 9159, 9161, 9163, + 9165, 9167, 9169, 9171, 9173, 9175, 9177, 9179, 9181, 9183, + 9185, 9187, 9189, 9191, 9193, 9195, 9197, 9199, 9201, 9203, + 9205, 9207, 9209, 9211, 9213, 9215, 9217, 9219, 9221, 9223, + 9225, 9227, 9229, 9231, 9233, 9235, 9237, 9239, 9241, 9243, + 9245, 9247, 9249, 9251, 9253, 9255, 9257, 9259, 9261, 9263, + 9265, 9267, 9269, 9271, 9273, 9275, 9277, 9279, 9281, 9283, + 9285, 9287, 9289, 9291, 9293, 9295, 9297, 9299, 9301, 9303, + 9305, 9307, 9309, 9311, 9313, 9315, 9317, 9319, 9321, 9323, + 9325, 9327, 9329, 9331, 9333, 9335, 9337, 9339, 9341, 9343, + 9345, 9347, 9349, 9351, 9353, 9355, 9357, 9359, 9361, 9363, + 9365, 9367, 9369, 9371, 9373, 9375, 9377, 9379, 9381, 9383, + 9385, 9387, 9389, 9391, 9393, 9395, 9397, 9399, 9401, 9403, + 9405, 9407, 9409, 9411, 9413, 9415, 9417, 9419, 9421, 9423, + 9425, 9427, 9429, 9431, 9433, 9435, 9437, 9439, 9441, 9443, + 9445, 9447, 9449, 9451, 9453, 9455, 9457, 9459, 9461, 9463, + 9465, 9467, 9469, 9471, 9473, 9475, 9477, 9479, 9481, 9483, + 9485, 9487, 9489, 9491, 9493, 9495, 9497, 9499, 9501, 9503, + 9505, 9507, 9509, 9511, 9513, 9515, 9517, 9519, 9521, 9523, + 9525, 9527, 9529, 9531, 9533, 9535, 9537, 9539, 9541, 9543, + 9545, 9547, 9549, 9551, 9553, 9555, 9557, 9559, 9561, 9563, + 9565, 9567, 9569, 9571, 9573, 9575, 9577, 9579, 9581, 9583, + 9585, 9587, 9589, 9591, 9593, 9595, 9597, 9599, 9601, 9603, + 9605, 9607, 9609, 9611, 9613, 9615, 9617, 9619, 9621, 9623, + 9625, 9627, 9629, 9631, 9633, 9635, 9637, 9639, 9641, 9643, + 9645, 9647, 9649, 9651, 9653, 9655, 9657, 9659, 9661, 9663, + 9665, 9667 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 474, 0, -1, 475, -1, 475, 470, 476, -1, 476, + -1, 696, -1, 879, -1, 876, -1, 877, -1, 763, + -1, 882, -1, 710, -1, 632, -1, 635, -1, 640, + -1, 653, -1, 655, -1, 806, -1, 489, -1, 835, + -1, 836, -1, 841, -1, 837, -1, 664, -1, 610, + -1, 880, -1, 518, -1, 831, -1, 538, -1, 845, + -1, 486, -1, 484, -1, 849, -1, 885, -1, 884, + -1, 662, -1, 893, -1, 516, -1, 541, -1, 888, + -1, 737, -1, 513, -1, 542, -1, 672, -1, 602, + -1, 698, -1, 819, -1, 887, -1, 881, -1, 629, + -1, 636, -1, 649, -1, 654, -1, 779, -1, 488, + -1, 605, -1, 712, -1, 719, -1, 842, -1, 720, + -1, 663, -1, 618, -1, 491, -1, 609, -1, 558, + -1, 846, -1, 601, -1, 626, -1, 823, -1, 673, + -1, 692, -1, 477, -1, 483, -1, 659, -1, 870, + -1, 910, -1, 932, -1, 700, -1, 920, -1, 517, + -1, 816, -1, 699, -1, 821, -1, 723, -1, 724, + -1, 725, -1, 624, -1, 727, -1, 850, -1, 628, + -1, 825, -1, 487, -1, 661, -1, 878, -1, 908, + -1, 899, -1, 746, -1, 750, -1, 759, -1, 656, + -1, 768, -1, 911, -1, 860, -1, 608, -1, 869, + -1, 922, -1, 858, -1, 905, -1, 726, -1, 826, + -1, 810, -1, 809, -1, 811, -1, 832, -1, 751, + -1, 760, -1, 851, -1, 741, -1, 936, -1, 862, + -1, 735, -1, 861, -1, 927, -1, 890, -1, 507, + -1, 495, -1, 512, -1, 867, -1, -1, 90, 330, + 1115, 478, 479, -1, 430, -1, 453, -1, -1, 479, + 482, -1, -1, 480, 481, -1, -1, 287, 1113, -1, + 287, 256, -1, 135, 287, 1113, -1, 402, 287, 1113, + -1, 190, -1, 82, 222, 1114, -1, 413, 408, 1113, + -1, 410, 1117, -1, 3, -1, 481, -1, 375, 1112, + -1, 23, 1117, -1, 330, 1117, -1, 185, 330, 1117, + -1, 185, 171, 1117, -1, 90, 410, 1115, 478, 479, + -1, 28, 330, 1116, 478, 480, -1, 28, 410, 1116, + 478, 480, -1, -1, 185, 105, 1105, -1, 28, 330, + 1116, 485, 510, -1, 28, 330, 26, 485, 510, -1, + 28, 410, 1116, 485, 510, -1, 28, 410, 26, 485, + 510, -1, 130, 330, 1117, -1, 130, 330, 179, 145, + 1117, -1, 130, 410, 1117, -1, 130, 410, 179, 145, + 1117, -1, 130, 171, 1117, -1, 130, 171, 179, 145, + 1117, -1, 90, 171, 1115, 478, 479, -1, 28, 171, + 1116, 490, 410, 1117, -1, 22, -1, 130, -1, 90, + 337, 492, 43, 1116, 493, -1, 90, 337, 1118, 493, + -1, 90, 337, 179, 251, 145, 492, 43, 1116, 493, + -1, 90, 337, 179, 251, 145, 1118, 493, -1, 1118, + -1, -1, 493, 494, -1, -1, 558, -1, 768, -1, + 609, -1, 673, -1, 750, -1, 867, -1, 288, 350, + 497, -1, 350, 496, -1, 350, 225, 496, -1, 350, + 348, 496, -1, 390, 865, -1, 348, 64, 35, 390, + 865, -1, 498, -1, 499, 388, 500, -1, 499, 456, + 500, -1, 499, 388, 111, -1, 499, 456, 111, -1, + 497, -1, 499, 162, 94, -1, 386, 450, 504, -1, + 60, 1113, -1, 337, 1113, -1, 243, 505, -1, 330, + 506, -1, 348, 43, 506, -1, 348, 43, 111, -1, + 436, 269, 1047, -1, 390, 359, 1113, -1, 1118, -1, + 499, 469, 1118, -1, 501, -1, 500, 471, 501, -1, + 503, -1, 616, -1, 307, 401, -1, 307, 78, -1, + 320, 307, -1, 346, -1, 395, -1, 150, -1, 266, + -1, 506, -1, 1113, -1, 3, -1, 1031, 1113, 1033, + -1, 1031, 467, 1112, 468, 1113, -1, 616, -1, 111, + -1, 225, -1, 1113, -1, 111, -1, -1, 1120, -1, + 1113, -1, 323, 508, -1, 288, 323, 509, -1, 509, + -1, 386, 450, -1, 390, 208, 220, -1, 348, 43, + -1, 499, -1, 26, -1, 350, 496, -1, 507, -1, + 350, 498, -1, 507, -1, 288, 354, 499, -1, 288, + 354, 26, -1, 354, 499, -1, 354, 386, 450, -1, + 354, 390, 208, 220, -1, 354, 348, 43, -1, 354, + 26, -1, 350, 84, 514, 515, -1, 26, -1, 1101, + -1, 114, -1, 181, -1, 66, -1, 124, 26, -1, + 124, 381, -1, 124, 383, -1, 124, 290, -1, 124, + 345, -1, 28, 377, 990, 519, -1, 28, 377, 179, + 145, 990, 519, -1, 28, 377, 990, 520, -1, 28, + 377, 179, 145, 990, 520, -1, 28, 377, 26, 185, + 380, 1104, 350, 380, 1104, 925, -1, 28, 377, 26, + 185, 380, 1104, 280, 53, 1117, 350, 380, 1104, 925, + -1, 28, 188, 1102, 519, -1, 28, 188, 179, 145, + 1102, 519, -1, 28, 188, 26, 185, 380, 1104, 350, + 380, 1104, 925, -1, 28, 188, 26, 185, 380, 1104, + 280, 53, 1117, 350, 380, 1104, 925, -1, 28, 344, + 1102, 519, -1, 28, 344, 179, 145, 1102, 519, -1, + 28, 423, 1102, 519, -1, 28, 423, 179, 145, 1102, + 519, -1, 28, 234, 423, 1102, 519, -1, 28, 234, + 423, 179, 145, 1102, 519, -1, 28, 234, 423, 26, + 185, 380, 1104, 350, 380, 1104, 925, -1, 28, 234, + 423, 26, 185, 380, 1104, 280, 53, 1117, 350, 380, + 1104, 925, -1, 521, -1, 519, 471, 521, -1, 41, + 285, 1102, 533, -1, 121, 285, 1102, -1, 22, 566, + -1, 22, 179, 251, 145, 566, -1, 22, 73, 566, + -1, 22, 73, 179, 251, 145, 566, -1, 28, 833, + 1118, 522, -1, 28, 833, 1118, 130, 251, 256, -1, + 28, 833, 1118, 350, 251, 256, -1, 28, 833, 1118, + 350, 366, 1114, -1, 28, 833, 1118, 350, 527, -1, + 28, 833, 1118, 323, 527, -1, 28, 833, 1118, 350, + 369, 1118, -1, 28, 833, 1118, 22, 166, 571, 35, + 178, 612, -1, 28, 833, 1118, 531, -1, 28, 833, + 1118, 130, 178, -1, 28, 833, 1118, 130, 178, 179, + 145, -1, 130, 833, 179, 145, 1118, 523, -1, 130, + 833, 1118, 523, -1, 28, 833, 1118, 834, 398, 1012, + 524, 525, -1, 28, 833, 1118, 643, -1, 22, 576, + -1, 28, 83, 1104, 690, -1, 414, 83, 1104, -1, + 130, 83, 179, 145, 1104, 523, -1, 130, 83, 1104, + 523, -1, 350, 430, 264, -1, 350, 432, 264, -1, + 69, 266, 1104, -1, 350, 432, 69, -1, 350, 231, + -1, 350, 407, -1, 133, 393, 1104, -1, 133, 29, + 393, 1104, -1, 133, 322, 393, 1104, -1, 133, 393, + 26, -1, 133, 393, 410, -1, 123, 393, 1104, -1, + 123, 393, 26, -1, 123, 393, 410, -1, 133, 335, + 1104, -1, 133, 29, 335, 1104, -1, 133, 322, 335, + 1104, -1, 123, 335, 1104, -1, 190, 1102, -1, 249, + 190, 1102, -1, 261, 732, -1, 251, 261, -1, 281, + 388, 1116, -1, 350, 380, 1104, -1, 350, 527, -1, + 323, 527, -1, 322, 178, 526, -1, 133, 333, 220, + 342, -1, 123, 333, 220, 342, -1, 158, 333, 220, + 342, -1, 249, 158, 333, 220, 342, -1, 643, -1, + 350, 111, 1035, -1, 130, 111, -1, 56, -1, 325, + -1, -1, 71, 732, -1, -1, 411, 1035, -1, -1, + 252, -1, 163, -1, 111, -1, 411, 188, 1104, -1, + 467, 529, 468, -1, 430, 527, -1, -1, 530, -1, + 529, 471, 530, -1, 1121, 456, 704, -1, 1121, -1, + 1121, 469, 1121, 456, 704, -1, 1121, 469, 1121, -1, + 532, -1, 531, 532, -1, 324, -1, 324, 478, 616, + -1, 350, 614, -1, 350, 166, 571, -1, 157, 417, + 185, 467, 535, 468, -1, 157, 417, 162, 467, 536, + 468, 388, 467, 536, 468, -1, 1113, -1, 616, -1, + 256, -1, 534, -1, 535, 471, 534, -1, 537, -1, + 536, 471, 537, -1, 238, -1, 235, -1, 534, -1, + 28, 398, 732, 539, -1, 540, -1, 539, 471, 540, + -1, 22, 42, 1004, 523, -1, 130, 42, 179, 145, + 1118, 523, -1, 130, 42, 1118, 523, -1, 28, 42, + 1118, 834, 398, 1012, 524, 523, -1, 68, 933, -1, + 68, 26, -1, 88, 549, 1102, 579, 550, 543, 544, + 545, 551, 478, 546, -1, 88, 467, 907, 468, 388, + 544, 545, 478, 546, -1, 162, -1, 388, -1, 303, + -1, -1, 1113, -1, 367, -1, 368, -1, 547, -1, + 467, 553, 468, -1, 547, 548, -1, -1, 49, -1, + 264, -1, 161, -1, 117, 883, 1113, -1, 256, 883, + 1113, -1, 92, -1, 175, -1, 305, 883, 1113, -1, + 138, 883, 1113, -1, 158, 305, 580, -1, 158, 305, + 460, -1, 158, 251, 256, 580, -1, 158, 256, 580, + -1, 134, 1113, -1, 49, -1, -1, 430, 264, -1, + -1, 552, 118, 1113, -1, -1, 411, -1, -1, 554, + -1, 553, 471, 554, -1, 1121, 555, -1, 503, -1, + 616, -1, 460, -1, 467, 556, 468, -1, -1, 557, + -1, 556, 471, 557, -1, 503, -1, 90, 559, 377, + 1102, 467, 560, 468, 590, 591, 596, 597, 598, -1, + 90, 559, 377, 179, 251, 145, 1102, 467, 560, 468, + 590, 591, 596, 597, 598, -1, 90, 559, 377, 1102, + 261, 732, 561, 591, 596, 597, 598, -1, 90, 559, + 377, 179, 251, 145, 1102, 261, 732, 561, 591, 596, + 597, 598, -1, 90, 559, 377, 1102, 285, 261, 1102, + 561, 533, 591, 596, 597, 598, -1, 90, 559, 377, + 179, 251, 145, 1102, 285, 261, 1102, 561, 533, 591, + 596, 597, 598, -1, 383, -1, 381, -1, 225, 383, + -1, 225, 381, -1, 167, 383, -1, 167, 381, -1, + 407, -1, -1, 562, -1, -1, 467, 563, 468, -1, + -1, 564, -1, 562, 471, 564, -1, 565, -1, 563, + 471, 565, -1, 566, -1, 573, -1, 576, -1, 567, + -1, 576, -1, 1118, 1012, 641, 568, -1, 1118, 568, + -1, 1118, 430, 270, 568, -1, 568, 569, -1, -1, + 83, 1104, 570, -1, 570, -1, 572, -1, 71, 732, + -1, 251, 256, -1, 256, -1, 404, 803, 599, -1, + 298, 210, 803, 599, -1, 65, 467, 1035, 468, 578, + -1, 111, 1036, -1, 166, 571, 35, 178, 612, -1, + 313, 1102, 579, 582, 586, -1, 29, -1, 53, 111, + -1, 113, -1, 251, 113, -1, 192, 114, -1, 192, + 181, -1, 221, 1102, 574, -1, 574, 186, 575, -1, + 574, 142, 575, -1, -1, 112, -1, 84, -1, 178, + -1, 189, -1, 369, -1, 76, -1, 26, -1, 83, + 1104, 577, -1, 577, -1, 65, 467, 1035, 468, 690, + -1, 404, 467, 580, 468, 803, 599, 690, -1, 404, + 600, 690, -1, 298, 210, 467, 580, 468, 803, 599, + 690, -1, 298, 210, 600, 690, -1, 141, 772, 467, + 583, 468, 803, 599, 585, 690, -1, 159, 210, 467, + 580, 468, 313, 1102, 579, 582, 586, 690, -1, 249, + 190, -1, -1, 467, 580, 468, -1, -1, 581, -1, + 580, 471, 581, -1, 1118, -1, 233, 163, -1, 233, + 284, -1, 233, 356, -1, -1, 584, -1, 583, 471, + 584, -1, 774, 430, 813, -1, 774, 430, 268, 467, + 813, 468, -1, 427, 467, 1035, 468, -1, -1, 587, + -1, 588, -1, 587, 588, -1, 588, 587, -1, -1, + 266, 409, 589, -1, 266, 116, 589, -1, 249, 21, + -1, 325, -1, 56, -1, 350, 256, -1, 350, 111, + -1, 191, 467, 1101, 468, -1, -1, 592, -1, -1, + 285, 53, 593, 467, 594, 468, -1, 3, -1, 1122, + -1, 595, -1, 594, 471, 595, -1, 1118, 775, 776, + -1, 1040, 775, 776, -1, 467, 1035, 468, 775, 776, + -1, 430, 527, -1, 430, 264, -1, 432, 264, -1, + -1, 266, 77, 130, -1, 266, 77, 116, 334, -1, + 266, 77, 295, 334, -1, -1, 380, 1104, -1, -1, + 411, 188, 380, 1104, -1, -1, 411, 188, 1108, -1, + 90, 366, 732, 898, 266, 1071, 162, 981, -1, 90, + 366, 179, 251, 145, 732, 898, 266, 1071, 162, 981, + -1, 90, 559, 377, 603, 35, 936, 604, -1, 90, + 559, 377, 179, 251, 145, 603, 35, 936, 604, -1, + 1102, 579, 596, 597, 598, -1, 430, 104, -1, 430, + 249, 104, -1, -1, 90, 607, 234, 423, 606, 35, + 936, 604, -1, 90, 607, 234, 423, 179, 251, 145, + 606, 35, 936, 604, -1, 1102, 579, 528, 598, -1, + 407, -1, -1, 315, 234, 423, 770, 1102, 604, -1, + 90, 559, 344, 1102, 611, -1, 90, 559, 344, 179, + 251, 145, 1102, 611, -1, 28, 344, 1102, 613, -1, + 28, 344, 179, 145, 1102, 613, -1, 613, -1, -1, + 467, 613, 468, -1, -1, 614, -1, 613, 614, -1, + 35, 1014, -1, 54, 616, -1, 103, -1, 249, 103, + -1, 187, 615, 616, -1, 235, 616, -1, 238, 616, + -1, 249, 235, -1, 249, 238, -1, 280, 53, 732, + -1, 344, 242, 732, -1, 364, 478, 616, -1, 324, + -1, 324, 478, 616, -1, 53, -1, -1, 4, -1, + 458, 4, -1, 459, 4, -1, 1114, -1, 616, -1, + 617, 471, 616, -1, 90, 780, 619, 625, 212, 506, + -1, 90, 780, 619, 625, 212, 506, 173, 620, 621, + 623, -1, 397, -1, -1, 1104, -1, 1104, 733, -1, + 193, 620, -1, -1, 415, 620, -1, 249, 415, -1, + 622, -1, -1, 130, 625, 212, 506, 523, -1, 130, + 625, 212, 179, 145, 506, 523, -1, 301, -1, -1, + 90, 380, 1104, 627, 228, 1113, 528, -1, 281, 1116, + -1, -1, 130, 380, 1104, -1, 130, 380, 179, 145, + 1104, -1, 90, 147, 1104, 478, 630, -1, 90, 147, + 179, 251, 145, 1104, 478, 630, -1, 630, 631, -1, + -1, 337, 1104, -1, 422, 506, -1, 162, 506, -1, + 56, -1, 28, 147, 1104, 409, 633, -1, 633, 634, + -1, -1, 388, 506, -1, 28, 147, 1104, 490, 20, + 236, 1104, -1, 28, 147, 1104, 490, 25, 796, -1, + 28, 147, 1104, 490, 59, 467, 1012, 35, 1012, 468, + -1, 28, 147, 1104, 490, 72, 732, -1, 28, 147, + 1104, 490, 87, 732, -1, 28, 147, 1104, 490, 128, + 1012, -1, 28, 147, 1104, 490, 164, 784, -1, 28, + 147, 1104, 490, 625, 212, 1104, -1, 28, 147, 1104, + 490, 268, 815, -1, 28, 147, 1104, 490, 268, 67, + 732, 411, 1106, -1, 28, 147, 1104, 490, 268, 151, + 732, 411, 1106, -1, 28, 147, 1104, 490, 337, 1104, + -1, 28, 147, 1104, 490, 139, 393, 1104, -1, 28, + 147, 1104, 490, 377, 732, -1, 28, 147, 1104, 490, + 384, 340, 283, 732, -1, 28, 147, 1104, 490, 384, + 340, 122, 732, -1, 28, 147, 1104, 490, 384, 340, + 382, 732, -1, 28, 147, 1104, 490, 384, 340, 80, + 732, -1, 28, 147, 1104, 490, 344, 732, -1, 28, + 147, 1104, 490, 423, 732, -1, 28, 147, 1104, 490, + 234, 423, 732, -1, 28, 147, 1104, 490, 159, 377, + 732, -1, 28, 147, 1104, 490, 159, 104, 434, 1104, + -1, 28, 147, 1104, 490, 347, 1104, -1, 28, 147, + 1104, 490, 391, 157, 1012, 212, 1104, -1, 28, 147, + 1104, 490, 398, 1012, -1, 90, 159, 104, 434, 1104, + 639, 641, -1, 173, 620, -1, 249, 173, -1, 415, + 620, -1, 249, 415, -1, 637, -1, 638, 637, -1, + 638, -1, -1, 28, 159, 104, 434, 1104, 639, 643, + -1, 28, 159, 104, 434, 1104, 638, -1, 270, 467, + 642, 468, -1, -1, 646, -1, 642, 471, 646, -1, + 270, 467, 644, 468, -1, 645, -1, 644, 471, 645, + -1, 646, -1, 350, 646, -1, 22, 646, -1, 130, + 647, -1, 647, 648, -1, 1121, -1, 1113, -1, 90, + 347, 1104, 650, 652, 159, 104, 434, 1104, 641, -1, + 90, 347, 179, 251, 145, 1104, 650, 652, 159, 104, + 434, 1104, 641, -1, 398, 1113, -1, -1, 422, 1113, + -1, 422, 256, -1, 651, -1, -1, 28, 347, 1104, + 651, 643, -1, 28, 347, 1104, 651, -1, 28, 347, + 1104, 643, -1, 90, 159, 377, 1102, 467, 560, 468, + 590, 347, 1104, 641, -1, 90, 159, 377, 179, 251, + 145, 1102, 467, 560, 468, 590, 347, 1104, 641, -1, + 90, 159, 377, 1102, 285, 261, 1102, 561, 533, 347, + 1104, 641, -1, 90, 159, 377, 179, 251, 145, 1102, + 285, 261, 1102, 561, 533, 347, 1104, 641, -1, 28, + 159, 377, 990, 519, -1, 28, 159, 377, 179, 145, + 990, 519, -1, 184, 159, 337, 1104, 658, 162, 347, + 1104, 204, 1104, 641, -1, 222, 388, -1, 140, -1, + 657, 467, 991, 468, -1, -1, 90, 410, 232, 157, + 660, 347, 1104, 641, -1, 90, 410, 232, 179, 251, + 145, 157, 660, 347, 1104, 641, -1, 1116, -1, 410, + -1, 130, 410, 232, 157, 660, 347, 1104, -1, 130, + 410, 232, 179, 145, 157, 660, 347, 1104, -1, 28, + 410, 232, 157, 660, 347, 1104, 643, -1, 90, 291, + 1104, 266, 1102, 669, 670, 667, 665, 666, -1, 28, + 291, 1104, 266, 1102, 668, 665, 666, -1, 411, 467, + 1035, 468, -1, -1, 430, 65, 467, 1035, 468, -1, + -1, 388, 1117, -1, -1, 388, 1117, -1, -1, 35, + 3, -1, -1, 157, 671, -1, -1, 26, -1, 343, + -1, 198, -1, 409, -1, 116, -1, 90, 20, 236, + 1104, 398, 188, 173, 620, -1, 90, 393, 1104, 674, + 675, 266, 1102, 677, 683, 686, 144, 302, 1110, 467, + 687, 468, -1, 90, 83, 393, 1104, 24, 675, 266, + 1102, 689, 690, 157, 131, 333, 686, 144, 302, 1110, + 467, 687, 468, -1, 45, -1, 24, -1, 199, 261, + -1, 676, -1, 675, 271, 676, -1, 198, -1, 116, + -1, 409, -1, 409, 261, 580, -1, 396, -1, 314, + 678, -1, -1, 679, -1, 678, 679, -1, 680, 681, + 883, 682, -1, 247, -1, 265, -1, 377, -1, 333, + -1, 1118, -1, 157, 684, 685, -1, -1, 131, -1, + -1, 333, -1, 365, -1, 426, 467, 1035, 468, -1, + -1, 688, -1, 687, 471, 688, -1, -1, 1112, -1, + 4, -1, 1113, -1, 1121, -1, 162, 1102, -1, -1, + -1, 690, 691, -1, 251, 113, -1, 113, -1, 192, + 181, -1, 192, 114, -1, 251, 413, -1, 249, 190, + -1, 90, 139, 393, 1104, 266, 1121, 144, 302, 1110, + 467, 468, -1, 90, 139, 393, 1104, 266, 1121, 426, + 693, 144, 302, 1110, 467, 468, -1, 694, -1, 693, + 32, 694, -1, 1118, 185, 467, 695, 468, -1, 5, + -1, 695, 471, 5, -1, 28, 139, 393, 1104, 697, + -1, 133, -1, 133, 322, -1, 133, 29, -1, 123, + -1, 90, 37, 1104, 65, 467, 1035, 468, 690, -1, + 130, 37, 1104, 523, -1, 90, 25, 1110, 794, 701, + -1, 90, 25, 1110, 705, -1, 90, 268, 813, 701, + -1, 90, 398, 732, 701, -1, 90, 398, 732, -1, + 90, 398, 732, 35, 467, 1002, 468, -1, 90, 398, + 732, 35, 137, 467, 708, 468, -1, 90, 398, 732, + 35, 306, 701, -1, 90, 384, 340, 283, 732, 701, + -1, 90, 384, 340, 122, 732, 701, -1, 90, 384, + 340, 382, 732, 701, -1, 90, 384, 340, 80, 732, + 701, -1, 90, 72, 732, 701, -1, 90, 72, 179, + 251, 145, 732, 701, -1, 90, 72, 732, 162, 732, + -1, 90, 72, 179, 251, 145, 732, 162, 732, -1, + 467, 702, 468, -1, 703, -1, 702, 471, 703, -1, + 1121, 456, 704, -1, 1121, -1, 791, -1, 1125, -1, + 1069, -1, 616, -1, 1113, -1, 250, -1, 467, 706, + 468, -1, 707, -1, 706, 471, 707, -1, 3, 456, + 704, -1, 709, -1, -1, 1113, -1, 709, 471, 1113, + -1, 28, 398, 732, 22, 416, 711, 1113, -1, 28, + 398, 732, 22, 416, 711, 1113, 45, 1113, -1, 28, + 398, 732, 22, 416, 711, 1113, 24, 1113, -1, 28, + 398, 732, 319, 416, 1113, 388, 1113, -1, 179, 251, + 145, -1, -1, 90, 268, 67, 732, 715, 157, 398, + 1012, 411, 1106, 716, 35, 713, -1, 714, -1, 713, + 471, 714, -1, 268, 1112, 813, 717, 718, -1, 268, + 1112, 815, 717, 718, -1, 164, 1112, 784, -1, 164, + 1112, 467, 1074, 468, 784, -1, 369, 1012, -1, 111, + -1, -1, 151, 732, -1, -1, 157, 340, -1, 157, + 272, 53, 732, -1, -1, 310, -1, -1, 90, 268, + 151, 732, 411, 1106, -1, 28, 268, 151, 732, 411, + 1106, 22, 713, -1, 28, 268, 151, 732, 411, 1106, + 130, 721, -1, 722, -1, 721, 471, 722, -1, 268, + 1112, 467, 1074, 468, -1, 164, 1112, 467, 1074, 468, + -1, 130, 268, 67, 732, 411, 1106, 523, -1, 130, + 268, 67, 179, 145, 732, 411, 1106, 523, -1, 130, + 268, 151, 732, 411, 1106, 523, -1, 130, 268, 151, + 179, 145, 732, 411, 1106, 523, -1, 130, 280, 53, + 1117, 523, -1, 309, 280, 53, 1117, 388, 1116, -1, + 130, 728, 179, 145, 731, 523, -1, 130, 728, 731, + 523, -1, 130, 729, 179, 145, 1103, 523, -1, 130, + 729, 1103, 523, -1, 130, 730, 1104, 266, 732, 523, + -1, 130, 730, 179, 145, 1104, 266, 732, 523, -1, + 130, 398, 734, 523, -1, 130, 398, 179, 145, 734, + 523, -1, 130, 128, 734, 523, -1, 130, 128, 179, + 145, 734, 523, -1, 130, 188, 79, 731, 523, -1, + 130, 188, 79, 179, 145, 731, 523, -1, 377, -1, + 344, -1, 423, -1, 234, 423, -1, 188, -1, 159, + 377, -1, 72, -1, 87, -1, 366, -1, 384, 340, + 283, -1, 384, 340, 122, -1, 384, 340, 382, -1, + 384, 340, 80, -1, 20, 236, -1, 139, 393, -1, + 147, -1, 159, 104, 434, -1, 304, -1, 337, -1, + 347, -1, 291, -1, 335, -1, 393, -1, 732, -1, + 731, 471, 732, -1, 1118, -1, 1118, 733, -1, 469, + 1107, -1, 733, 469, 1107, -1, 1012, -1, 734, 471, + 1012, -1, 396, 947, 991, 736, 523, -1, 86, 178, + -1, 324, 178, -1, -1, 75, 266, 738, 732, 206, + 740, -1, 75, 266, 739, 1104, 206, 740, -1, 75, + 266, 398, 1012, 206, 740, -1, 75, 266, 128, 1012, + 206, 740, -1, 75, 266, 25, 796, 206, 740, -1, + 75, 266, 164, 784, 206, 740, -1, 75, 266, 268, + 815, 206, 740, -1, 75, 266, 83, 1104, 266, 732, + 206, 740, -1, 75, 266, 83, 1104, 266, 128, 732, + 206, 740, -1, 75, 266, 291, 1104, 266, 732, 206, + 740, -1, 75, 266, 335, 1104, 266, 732, 206, 740, + -1, 75, 266, 391, 157, 1012, 212, 1104, 206, 740, + -1, 75, 266, 393, 1104, 266, 732, 206, 740, -1, + 75, 266, 268, 67, 732, 411, 1106, 206, 740, -1, + 75, 266, 268, 151, 732, 411, 1106, 206, 740, -1, + 75, 266, 213, 260, 616, 206, 740, -1, 75, 266, + 59, 467, 1012, 35, 1012, 468, 206, 740, -1, 73, + -1, 188, -1, 344, -1, 366, -1, 377, -1, 423, + -1, 234, 423, -1, 72, -1, 87, -1, 159, 377, + -1, 384, 340, 80, -1, 384, 340, 122, -1, 384, + 340, 283, -1, 384, 340, 382, -1, 20, 236, -1, + 105, -1, 139, 393, -1, 147, -1, 159, 104, 434, + -1, 625, 212, -1, 304, -1, 330, -1, 337, -1, + 347, -1, 372, -1, 380, -1, 1113, -1, 256, -1, + 342, 211, 742, 266, 743, 732, 206, 745, -1, 342, + 211, 742, 266, 744, 1104, 206, 745, -1, 342, 211, + 742, 266, 398, 1012, 206, 745, -1, 342, 211, 742, + 266, 128, 1012, 206, 745, -1, 342, 211, 742, 266, + 25, 796, 206, 745, -1, 342, 211, 742, 266, 164, + 784, 206, 745, -1, 342, 211, 742, 266, 213, 260, + 616, 206, 745, -1, 157, 506, -1, -1, 73, -1, + 159, 377, -1, 344, -1, 377, -1, 423, -1, 234, + 423, -1, 105, -1, 139, 393, -1, 625, 212, -1, + 304, -1, 330, -1, 337, -1, 372, -1, 380, -1, + 1113, -1, 256, -1, 152, 747, -1, 241, 747, -1, + 933, -1, 748, 933, -1, 248, 749, 933, -1, 299, + 749, 933, -1, 154, 749, 933, -1, 214, 749, 933, + -1, 19, 1114, 749, 933, -1, 317, 1114, 749, 933, + -1, 1114, 749, 933, -1, 26, 749, 933, -1, 160, + 749, 933, -1, 160, 1114, 749, 933, -1, 160, 26, + 749, 933, -1, 44, 749, 933, -1, 44, 1114, 749, + 933, -1, 44, 26, 749, 933, -1, 162, -1, 185, + -1, 748, -1, -1, 168, 752, 266, 755, 388, 756, + 758, -1, 328, 752, 266, 755, 162, 756, 523, -1, + 328, 168, 269, 157, 752, 266, 755, 162, 756, 523, + -1, 753, -1, 26, -1, 26, 300, -1, 26, 467, + 580, 468, -1, 26, 300, 467, 580, 468, -1, 754, + -1, 753, 471, 754, -1, 343, 579, -1, 313, 579, + -1, 90, 579, -1, 1118, 579, -1, 1101, -1, 377, + 1101, -1, 344, 1101, -1, 159, 104, 434, 1103, -1, + 159, 347, 1103, -1, 164, 783, -1, 105, 1103, -1, + 128, 731, -1, 212, 1103, -1, 213, 260, 617, -1, + 337, 1103, -1, 380, 1103, -1, 398, 731, -1, 26, + 378, 185, 337, 1103, -1, 26, 345, 185, 337, 1103, + -1, 26, 165, 185, 337, 1103, -1, 757, -1, 756, + 471, 757, -1, 1116, -1, 171, 1116, -1, 430, 168, + 269, -1, -1, 168, 753, 388, 1117, 761, 762, -1, + 328, 753, 162, 1117, 762, 523, -1, 328, 23, 269, + 157, 753, 162, 1117, 762, 523, -1, 430, 23, 269, + -1, -1, 169, 53, 1116, -1, -1, 28, 111, 300, + 764, 766, -1, 764, 765, -1, -1, 185, 337, 1103, + -1, 157, 330, 1117, -1, 157, 410, 1117, -1, 168, + 752, 266, 767, 388, 756, 758, -1, 328, 752, 266, + 767, 162, 756, 523, -1, 328, 168, 269, 157, 752, + 266, 767, 162, 756, 523, -1, 378, -1, 165, -1, + 345, -1, 399, -1, 338, -1, 90, 769, 188, 770, + 771, 266, 1102, 772, 467, 773, 468, 528, 598, 1000, + -1, 90, 769, 188, 770, 179, 251, 145, 1108, 266, + 1102, 772, 467, 773, 468, 528, 598, 1000, -1, 404, + -1, -1, 79, -1, -1, 1108, -1, -1, 411, 1106, + -1, -1, 774, -1, 773, 471, 774, -1, 1118, 775, + 776, 777, 778, -1, 1040, 775, 776, 777, 778, -1, + 467, 1035, 468, 775, 776, 777, 778, -1, 71, 732, + -1, -1, 732, -1, -1, 36, -1, 120, -1, -1, + 452, 154, -1, 452, 214, -1, -1, 90, 780, 164, + 1110, 785, 327, 790, 798, 803, -1, 90, 780, 164, + 1110, 785, 327, 377, 467, 805, 468, 798, 803, -1, + 90, 780, 164, 1110, 785, 798, 803, -1, 271, 321, + -1, -1, 467, 782, 468, -1, 467, 468, -1, 787, + -1, 782, 471, 787, -1, 784, -1, 783, 471, 784, + -1, 1110, 781, -1, 1124, -1, 1118, -1, 1118, 1095, + -1, 467, 786, 468, -1, 467, 468, -1, 792, -1, + 786, 471, 792, -1, 788, 789, 791, -1, 789, 788, + 791, -1, 789, 791, -1, 788, 791, -1, 791, -1, + 185, -1, 274, -1, 195, -1, 185, 274, -1, 419, + -1, 1119, -1, 791, -1, 1012, -1, 1119, 733, 462, + 398, -1, 352, 1119, 733, 462, 398, -1, 787, -1, + 787, 111, 1035, -1, 787, 456, 1035, -1, 787, -1, + 467, 460, 468, -1, 467, 795, 468, -1, 467, 272, + 53, 795, 468, -1, 467, 795, 272, 53, 795, 468, + -1, 793, -1, 795, 471, 793, -1, 1110, 794, -1, + 796, -1, 797, 471, 796, -1, 800, -1, 798, 800, + -1, 55, 266, 256, 196, -1, 327, 256, 266, 256, + 196, -1, 370, -1, 182, -1, 362, -1, 425, -1, + 148, 342, 115, -1, 148, 342, 205, -1, 342, 115, + -1, 342, 205, -1, 217, -1, 251, 217, -1, 89, + 616, -1, 334, 616, -1, 511, -1, 282, 1118, -1, + 35, 801, -1, 212, 506, -1, 391, 802, -1, 429, + -1, 799, -1, 1113, -1, 1113, 471, 1113, -1, 157, + 398, 1012, -1, 802, 471, 157, 398, 1012, -1, 430, + 701, -1, -1, 789, 791, -1, 804, -1, 805, 471, + 804, -1, 28, 164, 784, 807, 808, -1, 799, -1, + 807, 799, -1, 325, -1, -1, 130, 164, 783, 523, + -1, 130, 164, 179, 145, 783, 523, -1, 130, 25, + 797, 523, -1, 130, 25, 179, 145, 797, 523, -1, + 130, 268, 814, 523, -1, 130, 268, 179, 145, 814, + 523, -1, 467, 1012, 468, -1, 467, 1012, 471, 1012, + 468, -1, 467, 250, 471, 1012, 468, -1, 467, 1012, + 471, 250, 468, -1, 1066, -1, 1118, 469, 813, -1, + 815, -1, 814, 471, 815, -1, 813, 812, -1, 126, + 817, -1, 818, -1, 817, 818, -1, 1113, -1, 212, + 506, -1, 90, 59, 467, 1012, 35, 1012, 468, 430, + 164, 784, 820, -1, 90, 59, 467, 1012, 35, 1012, + 468, 432, 164, 820, -1, 90, 59, 467, 1012, 35, + 1012, 468, 430, 195, 820, -1, 35, 183, -1, 35, + 38, -1, -1, 130, 59, 822, 467, 1012, 35, 1012, + 468, 523, -1, 179, 145, -1, -1, 90, 780, 391, + 157, 1012, 212, 1104, 467, 824, 468, -1, 162, 361, + 430, 164, 784, 471, 388, 361, 430, 164, 784, -1, + 388, 361, 430, 164, 784, 471, 162, 361, 430, 164, + 784, -1, 162, 361, 430, 164, 784, -1, 388, 361, + 430, 164, 784, -1, 130, 391, 822, 157, 1012, 212, + 1104, 523, -1, 316, 827, 1102, -1, 316, 828, 1104, + -1, 316, 467, 829, 468, 827, 1102, -1, 316, 467, + 829, 468, 828, 1104, -1, 188, -1, 377, -1, 337, + -1, 376, -1, 105, -1, 830, -1, 829, 471, 830, + -1, 421, -1, 28, 380, 1104, 350, 527, -1, 28, + 380, 1104, 323, 527, -1, 28, 25, 796, 319, 388, + 1104, -1, 28, 72, 732, 319, 388, 1104, -1, 28, + 87, 732, 319, 388, 1104, -1, 28, 105, 1105, 319, + 388, 1105, -1, 28, 128, 732, 319, 388, 1104, -1, + 28, 128, 732, 319, 83, 1104, 388, 1104, -1, 28, + 159, 104, 434, 1104, 319, 388, 1104, -1, 28, 164, + 784, 319, 388, 1104, -1, 28, 171, 1115, 319, 388, + 1115, -1, 28, 625, 212, 1104, 319, 388, 1104, -1, + 28, 268, 67, 732, 411, 1106, 319, 388, 1104, -1, + 28, 268, 151, 732, 411, 1106, 319, 388, 1104, -1, + 28, 291, 1104, 266, 1102, 319, 388, 1104, -1, 28, + 291, 179, 145, 1104, 266, 1102, 319, 388, 1104, -1, + 28, 304, 1104, 319, 388, 1104, -1, 28, 337, 1104, + 319, 388, 1104, -1, 28, 347, 1104, 319, 388, 1104, + -1, 28, 372, 1104, 319, 388, 1104, -1, 28, 377, + 990, 319, 388, 1104, -1, 28, 377, 179, 145, 990, + 319, 388, 1104, -1, 28, 344, 1102, 319, 388, 1104, + -1, 28, 344, 179, 145, 1102, 319, 388, 1104, -1, + 28, 423, 1102, 319, 388, 1104, -1, 28, 423, 179, + 145, 1102, 319, 388, 1104, -1, 28, 234, 423, 1102, + 319, 388, 1104, -1, 28, 234, 423, 179, 145, 1102, + 319, 388, 1104, -1, 28, 188, 1102, 319, 388, 1104, + -1, 28, 188, 179, 145, 1102, 319, 388, 1104, -1, + 28, 159, 377, 990, 319, 388, 1104, -1, 28, 159, + 377, 179, 145, 990, 319, 388, 1104, -1, 28, 377, + 990, 319, 833, 1104, 388, 1104, -1, 28, 377, 179, + 145, 990, 319, 833, 1104, 388, 1104, -1, 28, 234, + 423, 1102, 319, 833, 1104, 388, 1104, -1, 28, 234, + 423, 179, 145, 1102, 319, 833, 1104, 388, 1104, -1, + 28, 377, 990, 319, 83, 1104, 388, 1104, -1, 28, + 377, 179, 145, 990, 319, 83, 1104, 388, 1104, -1, + 28, 159, 377, 990, 319, 833, 1104, 388, 1104, -1, + 28, 159, 377, 179, 145, 990, 319, 833, 1104, 388, + 1104, -1, 28, 335, 1104, 266, 1102, 319, 388, 1104, + -1, 28, 393, 1104, 266, 1102, 319, 388, 1104, -1, + 28, 139, 393, 1104, 319, 388, 1104, -1, 28, 330, + 1115, 319, 388, 1115, -1, 28, 410, 1115, 319, 388, + 1115, -1, 28, 380, 1104, 319, 388, 1104, -1, 28, + 366, 732, 319, 388, 1104, -1, 28, 384, 340, 283, + 732, 319, 388, 1104, -1, 28, 384, 340, 122, 732, + 319, 388, 1104, -1, 28, 384, 340, 382, 732, 319, + 388, 1104, -1, 28, 384, 340, 80, 732, 319, 388, + 1104, -1, 28, 398, 732, 319, 388, 1104, -1, 28, + 398, 732, 319, 42, 1104, 388, 1104, 523, -1, 73, + -1, -1, 350, 104, -1, -1, 28, 164, 784, 119, + 266, 147, 1104, -1, 28, 393, 1104, 266, 1102, 119, + 266, 147, 1104, -1, 28, 234, 423, 1102, 119, 266, + 147, 1104, -1, 28, 188, 1102, 119, 266, 147, 1104, + -1, 28, 25, 796, 350, 337, 1104, -1, 28, 72, + 732, 350, 337, 1104, -1, 28, 87, 732, 350, 337, + 1104, -1, 28, 128, 732, 350, 337, 1104, -1, 28, + 147, 1104, 350, 337, 1104, -1, 28, 164, 784, 350, + 337, 1104, -1, 28, 268, 815, 350, 337, 1104, -1, + 28, 268, 67, 732, 411, 1106, 350, 337, 1104, -1, + 28, 268, 151, 732, 411, 1106, 350, 337, 1104, -1, + 28, 377, 990, 350, 337, 1104, -1, 28, 377, 179, + 145, 990, 350, 337, 1104, -1, 28, 366, 732, 350, + 337, 1104, -1, 28, 384, 340, 283, 732, 350, 337, + 1104, -1, 28, 384, 340, 122, 732, 350, 337, 1104, + -1, 28, 384, 340, 382, 732, 350, 337, 1104, -1, + 28, 384, 340, 80, 732, 350, 337, 1104, -1, 28, + 344, 1102, 350, 337, 1104, -1, 28, 344, 179, 145, + 1102, 350, 337, 1104, -1, 28, 423, 1102, 350, 337, + 1104, -1, 28, 423, 179, 145, 1102, 350, 337, 1104, + -1, 28, 234, 423, 1102, 350, 337, 1104, -1, 28, + 234, 423, 179, 145, 1102, 350, 337, 1104, -1, 28, + 159, 377, 990, 350, 337, 1104, -1, 28, 159, 377, + 179, 145, 990, 350, 337, 1104, -1, 28, 398, 732, + 350, 337, 1104, -1, 28, 268, 815, 350, 467, 838, + 468, -1, 839, -1, 838, 471, 839, -1, 1121, 456, + 250, -1, 1121, 456, 840, -1, 791, -1, 1125, -1, + 1069, -1, 616, -1, 1113, -1, 28, 25, 796, 281, + 388, 1116, -1, 28, 72, 732, 281, 388, 1116, -1, + 28, 87, 732, 281, 388, 1116, -1, 28, 105, 1105, + 281, 388, 1116, -1, 28, 128, 732, 281, 388, 1116, + -1, 28, 164, 784, 281, 388, 1116, -1, 28, 625, + 212, 1104, 281, 388, 1116, -1, 28, 213, 260, 616, + 281, 388, 1116, -1, 28, 268, 815, 281, 388, 1116, + -1, 28, 268, 67, 732, 411, 1106, 281, 388, 1116, + -1, 28, 268, 151, 732, 411, 1106, 281, 388, 1116, + -1, 28, 337, 1104, 281, 388, 1116, -1, 28, 398, + 732, 281, 388, 1116, -1, 28, 380, 1104, 281, 388, + 1116, -1, 28, 366, 732, 281, 388, 1116, -1, 28, + 384, 340, 122, 732, 281, 388, 1116, -1, 28, 384, + 340, 80, 732, 281, 388, 1116, -1, 28, 159, 104, + 434, 1104, 281, 388, 1116, -1, 28, 347, 1104, 281, + 388, 1116, -1, 28, 139, 393, 1104, 281, 388, 1116, + -1, 28, 304, 1104, 281, 388, 1116, -1, 28, 372, + 1104, 281, 388, 1116, -1, 90, 304, 1104, 843, 803, + -1, 844, -1, -1, 157, 377, 991, -1, 157, 26, + 378, -1, 28, 304, 1104, 350, 701, -1, 28, 304, + 1104, 22, 377, 991, -1, 28, 304, 1104, 350, 377, + 991, -1, 28, 304, 1104, 130, 377, 991, -1, 90, + 372, 1104, 82, 1113, 304, 847, 803, -1, 848, -1, + 847, 471, 848, -1, 1121, -1, 28, 372, 1104, 350, + 701, -1, 28, 372, 1104, 82, 1113, -1, 28, 372, + 1104, 315, 304, 803, -1, 28, 372, 1104, 350, 304, + 847, 803, -1, 28, 372, 1104, 133, -1, 28, 372, + 1104, 123, -1, 130, 372, 1104, 523, -1, 130, 372, + 179, 145, 1104, 523, -1, 90, 780, 335, 1104, 35, + 266, 856, 388, 1102, 1000, 126, 857, 852, -1, 252, + -1, 854, -1, 467, 853, 468, -1, 853, 470, 855, + -1, 855, -1, 936, -1, 911, -1, 927, -1, 920, + -1, 858, -1, 854, -1, -1, 343, -1, 409, -1, + 116, -1, 198, -1, 199, -1, 27, -1, -1, 253, + 1118, 859, -1, 471, 1113, -1, -1, 223, 1118, -1, + 406, 1118, -1, 406, 460, -1, 18, 863, -1, 46, + 863, 866, -1, 364, 390, 866, -1, 77, 863, -1, + 136, 863, -1, 331, 863, -1, 336, 1118, -1, 318, + 336, 1118, -1, 318, 1118, -1, 331, 863, 388, 336, + 1118, -1, 331, 863, 388, 1118, -1, 296, 390, 1113, + -1, 77, 297, 1113, -1, 331, 297, 1113, -1, 433, + -1, 390, -1, -1, 208, 220, 502, -1, 307, 267, + -1, 307, 435, -1, 113, -1, 251, 113, -1, 864, + -1, 865, 471, 864, -1, 865, 864, -1, 865, -1, + -1, 90, 559, 423, 1102, 579, 528, 35, 936, 868, + -1, 90, 271, 321, 559, 423, 1102, 579, 528, 35, + 936, 868, -1, 90, 559, 311, 423, 1102, 467, 580, + 468, 528, 35, 936, 868, -1, 90, 271, 321, 559, + 311, 423, 1102, 467, 580, 468, 528, 35, 936, 868, + -1, 430, 65, 269, -1, 430, 57, 65, 269, -1, + 430, 225, 65, 269, -1, -1, 224, 1109, -1, 90, + 105, 1105, 478, 871, -1, 872, -1, -1, 873, -1, + 872, 873, -1, 874, 875, 1114, -1, 874, 875, 503, + -1, 874, 875, 111, -1, 3, -1, 82, 222, -1, + 134, -1, 228, -1, 281, -1, 380, -1, 382, -1, + 456, -1, -1, 28, 105, 1105, 430, 871, -1, 28, + 105, 1105, 871, -1, 28, 105, 1105, 350, 380, 1104, + -1, 28, 105, 1105, 510, -1, 130, 105, 1105, -1, + 130, 105, 179, 145, 1105, -1, 28, 72, 732, 315, + 422, -1, 28, 376, 350, 497, -1, 28, 376, 323, + 509, -1, 90, 128, 732, 883, 1012, 568, -1, 28, + 128, 732, 522, -1, 28, 128, 732, 130, 251, 256, + -1, 28, 128, 732, 350, 251, 256, -1, 28, 128, + 732, 22, 576, -1, 28, 128, 732, 130, 83, 1104, + 523, -1, 28, 128, 732, 130, 83, 179, 145, 1104, + 523, -1, 28, 128, 732, 414, 83, 1104, -1, 35, + -1, -1, 28, 384, 340, 122, 732, 701, -1, 28, + 384, 340, 80, 732, 22, 232, 157, 1103, 886, 731, + -1, 28, 384, 340, 80, 732, 28, 232, 157, 1103, + 886, 731, -1, 28, 384, 340, 80, 732, 28, 232, + 321, 732, 886, 732, -1, 28, 384, 340, 80, 732, + 28, 232, 157, 1103, 321, 732, 886, 732, -1, 28, + 384, 340, 80, 732, 130, 232, 157, 1103, -1, 28, + 384, 340, 80, 732, 130, 232, 179, 145, 157, 1103, + -1, 430, -1, 453, -1, 90, 715, 87, 732, 157, + 1113, 388, 1113, 162, 732, -1, 69, 895, 1102, 889, + -1, 69, 895, -1, 69, 895, 1108, 266, 1102, -1, + 411, 1108, -1, -1, 412, 896, 897, 895, -1, 412, + 896, 897, 895, 1102, -1, 412, 896, 897, 895, 893, + -1, 412, 467, 891, 468, -1, 412, 467, 891, 468, + 1102, 898, -1, 892, -1, 891, 471, 892, -1, 894, + -1, 421, -1, 161, -1, 163, -1, 3, -1, 894, + 895, -1, 894, 895, 1102, 898, -1, 31, -1, 30, + -1, 421, -1, -1, 163, -1, -1, 161, -1, -1, + 467, 1103, 468, -1, -1, 146, 900, -1, 146, 894, + 895, 900, -1, 146, 421, 900, -1, 146, 467, 901, + 468, 900, -1, 936, -1, 911, -1, 927, -1, 920, + -1, 932, -1, 602, -1, 605, -1, 608, -1, 908, + -1, 902, -1, 901, 471, 902, -1, 903, 904, -1, + 1120, -1, 894, -1, 503, -1, 616, -1, -1, 296, + 1104, 906, 35, 907, -1, 467, 1074, 468, -1, -1, + 936, -1, 911, -1, 927, -1, 920, -1, 144, 1104, + 909, -1, 90, 559, 377, 603, 35, 144, 1104, 909, + 604, -1, 467, 1071, 468, -1, -1, 107, 1104, -1, + 107, 296, 1104, -1, 107, 26, -1, 107, 296, 26, + -1, 944, 198, 204, 912, 913, 917, 919, -1, 1102, + -1, 1102, 35, 1118, -1, 936, -1, 279, 914, 416, + 936, -1, 467, 915, 468, 936, -1, 467, 915, 468, + 279, 914, 416, 936, -1, 111, 417, -1, 410, -1, + 376, -1, 916, -1, 915, 471, 916, -1, 1118, 1096, + -1, 266, 81, 918, 126, 409, 350, 928, 1000, -1, + 266, 81, 918, 126, 252, -1, -1, 467, 773, 468, + 1000, -1, 266, 83, 1104, -1, -1, 326, 1099, -1, + -1, 944, 116, 162, 992, 921, 1001, 919, -1, 411, + 981, -1, -1, 229, 947, 991, 923, 925, -1, 185, + 924, 239, -1, -1, 20, 353, -1, 333, 353, -1, + 333, 143, -1, 353, 409, 143, -1, 353, -1, 353, + 333, 143, -1, 143, -1, 20, 143, -1, 255, -1, + -1, 255, -1, 357, 230, -1, -1, 944, 409, 992, + 350, 928, 980, 1001, 919, -1, 929, -1, 928, 471, + 929, -1, 930, 456, 1035, -1, 467, 931, 468, 456, + 1035, -1, 1118, 1096, -1, 930, -1, 931, 471, 930, + -1, 110, 933, 934, 102, 935, 157, 936, -1, 1104, + -1, -1, 934, 249, 339, -1, 934, 339, -1, 934, + 49, -1, 934, 197, -1, -1, 430, 176, -1, 432, + 176, -1, 938, -1, 937, -1, 467, 938, 468, -1, + 467, 937, 468, -1, 940, -1, 939, 952, -1, 939, + 951, 973, 956, -1, 939, 951, 955, 974, -1, 941, + 939, -1, 941, 939, 952, -1, 941, 939, 951, 973, + 956, -1, 941, 939, 951, 955, 974, -1, 940, -1, + 937, -1, 343, 950, 1098, 945, 980, 1000, 965, 972, + 1052, -1, 343, 949, 1099, 945, 980, 1000, 965, 972, + 1052, -1, 979, -1, 377, 990, -1, 939, 403, 948, + 939, -1, 939, 202, 948, 939, -1, 939, 140, 948, + 939, -1, 430, 942, -1, 453, 942, -1, 430, 311, + 942, -1, 943, -1, 942, 471, 943, -1, 1104, 898, + 35, 467, 907, 468, -1, 941, -1, -1, 204, 946, + -1, -1, 383, 947, 1102, -1, 381, 947, 1102, -1, + 225, 383, 947, 1102, -1, 225, 381, 947, 1102, -1, + 167, 383, 947, 1102, -1, 167, 381, 947, 1102, -1, + 407, 947, 1102, -1, 377, 1102, -1, 1102, -1, 377, + -1, -1, 26, -1, 125, -1, -1, 125, -1, 125, + 266, 467, 1071, 468, -1, 26, -1, -1, 952, -1, + -1, 272, 53, 953, -1, 954, -1, 953, 471, 954, + -1, 1035, 411, 1069, 778, -1, 1035, 777, 778, -1, + 957, 958, -1, 958, 957, -1, 957, -1, 958, -1, + 955, -1, -1, 222, 959, -1, 222, 959, 471, 960, + -1, 152, 964, 961, 963, 267, -1, 263, 960, -1, + 263, 962, 963, -1, 1035, -1, 26, -1, 1035, -1, + 1114, -1, 467, 1035, 468, -1, -1, 1037, -1, 333, + -1, 334, -1, 154, -1, 248, -1, 171, 53, 966, + -1, -1, 967, -1, 966, 471, 967, -1, 1035, -1, + 968, -1, 970, -1, 969, -1, 971, -1, 467, 468, + -1, 332, 467, 1071, 468, -1, 93, 467, 1071, 468, + -1, 172, 351, 467, 966, 468, -1, 174, 1035, -1, + -1, 975, -1, 157, 307, 267, -1, 973, -1, -1, + 976, -1, 975, 976, -1, 977, 978, 926, -1, 157, + 409, -1, 157, 249, 210, 409, -1, 157, 353, -1, + 157, 210, 353, -1, 261, 1101, -1, -1, 417, 467, + 1071, 468, -1, 979, 471, 467, 1071, 468, -1, 162, + 981, -1, -1, 982, -1, 981, 471, 982, -1, 990, + 985, -1, 990, 985, 993, -1, 995, 986, -1, 215, + 995, 986, -1, 1005, 985, -1, 215, 1005, 985, -1, + 937, 985, -1, 215, 937, 985, -1, 983, -1, 467, + 983, 468, 984, -1, 467, 983, 468, -1, 982, 91, + 209, 982, -1, 982, 987, 209, 982, 989, -1, 982, + 209, 982, 989, -1, 982, 245, 987, 209, 982, -1, + 982, 245, 209, 982, -1, 35, 1118, 467, 1103, 468, + -1, 35, 1118, -1, 1118, 467, 1103, 468, -1, 1118, + -1, 984, -1, -1, 984, -1, 35, 467, 1003, 468, + -1, 35, 1118, 467, 1003, 468, -1, 1118, 467, 1003, + 468, -1, -1, 163, 988, -1, 219, 988, -1, 329, + 988, -1, 194, -1, 275, -1, -1, 411, 467, 1103, + 468, -1, 266, 1035, -1, 1102, -1, 1102, 460, -1, + 267, 1102, -1, 267, 467, 1102, 468, -1, 990, -1, + 991, 471, 990, -1, 990, -1, 990, 1118, -1, 990, + 35, 1118, -1, 379, 1110, 467, 1071, 468, 994, -1, + 320, 467, 1035, 468, -1, -1, 1040, 999, -1, 334, + 162, 467, 997, 468, 999, -1, 1040, 998, -1, 996, + -1, 997, 471, 996, -1, 35, 467, 1003, 468, -1, + -1, 453, 273, -1, -1, 427, 1035, -1, -1, 427, + 1035, -1, 427, 94, 261, 933, -1, -1, 1003, -1, + -1, 1004, -1, 1003, 471, 1004, -1, 1118, 1012, 524, + -1, 447, 467, 1037, 1049, 74, 1006, 468, -1, 447, + 467, 442, 467, 1010, 468, 471, 1037, 1049, 74, 1006, + 468, -1, 1007, -1, 1006, 471, 1007, -1, 1118, 1012, + -1, 1118, 1012, 1008, -1, 1118, 157, 273, -1, 1009, + -1, 1008, 1009, -1, 3, 1036, -1, 111, 1036, -1, + 251, 256, -1, 256, -1, 1011, -1, 1010, 471, 1011, + -1, 1036, 35, 1121, -1, 111, 1036, -1, 1014, 1013, + -1, 352, 1014, 1013, -1, 1014, 34, 465, 1112, 466, + -1, 352, 1014, 34, 465, 1112, 466, -1, 1014, 34, + -1, 352, 1014, 34, -1, 1013, 465, 466, -1, 1013, + 465, 1112, 466, -1, -1, 1016, -1, 1018, -1, 1020, + -1, 1024, -1, 1030, -1, 1031, 1033, -1, 1031, 467, + 1112, 468, -1, 1018, -1, 1021, -1, 1025, -1, 1030, + -1, 1119, 1017, -1, 1119, 733, 1017, -1, 467, 1071, + 468, -1, -1, 200, -1, 201, -1, 358, -1, 48, + -1, 308, -1, 155, 1019, -1, 129, 294, -1, 109, + 1017, -1, 108, 1017, -1, 259, 1017, -1, 51, -1, + 467, 1112, 468, -1, -1, 1022, -1, 1023, -1, 1022, + -1, 1023, -1, 50, 1029, 467, 1071, 468, -1, 50, + 1029, -1, 1026, -1, 1027, -1, 1026, -1, 1027, -1, + 1028, 467, 1112, 468, -1, 1028, -1, 63, 1029, -1, + 62, 1029, -1, 418, -1, 244, 63, 1029, -1, 244, + 62, 1029, -1, 246, 1029, -1, 420, -1, -1, 387, + 467, 1112, 468, 1032, -1, 387, 1032, -1, 386, 467, + 1112, 468, 1032, -1, 386, 1032, -1, 203, -1, 453, + 386, 450, -1, 432, 386, 450, -1, -1, 448, -1, + 240, -1, 106, -1, 177, -1, 237, -1, 1034, -1, + 448, 388, 240, -1, 106, 388, 177, -1, 106, 388, + 237, -1, 106, 388, 1034, -1, 177, 388, 237, -1, + 177, 388, 1034, -1, 237, 388, 1034, -1, -1, 341, + -1, 341, 467, 1112, 468, -1, 1037, -1, 1035, 11, + 1012, -1, 1035, 71, 732, -1, 1035, 40, 386, 450, + 1035, -1, 458, 1035, -1, 459, 1035, -1, 1035, 458, + 1035, -1, 1035, 459, 1035, -1, 1035, 460, 1035, -1, + 1035, 461, 1035, -1, 1035, 462, 1035, -1, 1035, 463, + 1035, -1, 1035, 454, 1035, -1, 1035, 455, 1035, -1, + 1035, 456, 1035, -1, 1035, 15, 1035, -1, 1035, 16, + 1035, -1, 1035, 17, 1035, -1, 1035, 1068, 1035, -1, + 1068, 1035, -1, 1035, 1068, -1, 1035, 32, 1035, -1, + 1035, 271, 1035, -1, 251, 1035, -1, 451, 1035, -1, + 1035, 221, 1035, -1, 1035, 221, 1035, 138, 1035, -1, + 1035, 451, 221, 1035, -1, 1035, 451, 221, 1035, 138, + 1035, -1, 1035, 180, 1035, -1, 1035, 180, 1035, 138, + 1035, -1, 1035, 451, 180, 1035, -1, 1035, 451, 180, + 1035, 138, 1035, -1, 1035, 355, 388, 1035, -1, 1035, + 355, 388, 1035, 138, 1035, -1, 1035, 451, 355, 388, + 1035, -1, 1035, 451, 355, 388, 1035, 138, 1035, -1, + 1035, 206, 256, -1, 1035, 207, -1, 1035, 206, 251, + 256, -1, 1035, 254, -1, 1062, 277, 1062, -1, 1035, + 206, 395, -1, 1035, 206, 251, 395, -1, 1035, 206, + 150, -1, 1035, 206, 251, 150, -1, 1035, 206, 405, + -1, 1035, 206, 251, 405, -1, 1035, 206, 125, 162, + 1035, -1, 1035, 206, 251, 125, 162, 1035, -1, 1035, + 206, 261, 467, 1074, 468, -1, 1035, 206, 251, 261, + 467, 1074, 468, -1, 1035, 47, 1097, 1036, 32, 1035, + -1, 1035, 451, 47, 1097, 1036, 32, 1035, -1, 1035, + 47, 374, 1036, 32, 1035, -1, 1035, 451, 47, 374, + 1036, 32, 1035, -1, 1035, 185, 1086, -1, 1035, 451, + 185, 1086, -1, 1035, 1070, 1065, 937, -1, 1035, 1070, + 1065, 467, 1035, 468, -1, 404, 937, -1, 1035, 206, + 127, -1, 1035, 206, 251, 127, -1, 111, -1, 1037, + -1, 1036, 11, 1012, -1, 458, 1036, -1, 459, 1036, + -1, 1036, 458, 1036, -1, 1036, 459, 1036, -1, 1036, + 460, 1036, -1, 1036, 461, 1036, -1, 1036, 462, 1036, + -1, 1036, 463, 1036, -1, 1036, 454, 1036, -1, 1036, + 455, 1036, -1, 1036, 456, 1036, -1, 1036, 15, 1036, + -1, 1036, 16, 1036, -1, 1036, 17, 1036, -1, 1036, + 1068, 1036, -1, 1068, 1036, -1, 1036, 1068, -1, 1036, + 206, 125, 162, 1036, -1, 1036, 206, 251, 125, 162, + 1036, -1, 1036, 206, 261, 467, 1074, 468, -1, 1036, + 206, 251, 261, 467, 1074, 468, -1, 1036, 206, 127, + -1, 1036, 206, 251, 127, -1, 1092, -1, 1111, -1, + 10, 1096, -1, 467, 1035, 468, 1096, -1, 1087, -1, + 1039, -1, 937, -1, 937, 1095, -1, 145, 937, -1, + 34, 937, -1, 34, 1075, -1, 1063, -1, 1064, -1, + 172, 467, 1071, 468, -1, 1110, 467, 468, -1, 1110, + 467, 1072, 951, 468, -1, 1110, 467, 419, 1073, 951, + 468, -1, 1110, 467, 1072, 471, 419, 1073, 951, 468, + -1, 1110, 467, 26, 1072, 951, 468, -1, 1110, 467, + 125, 1072, 951, 468, -1, 1110, 467, 460, 468, -1, + 1038, 1050, 1051, 1055, -1, 1041, -1, 1038, -1, 1041, + -1, 72, 157, 467, 1035, 468, -1, 96, -1, 99, + -1, 99, 467, 1112, 468, -1, 100, -1, 100, 467, + 1112, 468, -1, 226, -1, 226, 467, 1112, 468, -1, + 227, -1, 227, 467, 1112, 468, -1, 97, -1, 101, + -1, 349, -1, 410, -1, 95, -1, 98, -1, 59, + 467, 1035, 35, 1012, 468, -1, 149, 467, 1077, 468, + -1, 278, 467, 1079, 468, -1, 292, 467, 1081, 468, + -1, 373, 467, 1082, 468, -1, 392, 467, 1035, 35, + 1012, 468, -1, 394, 467, 52, 1085, 468, -1, 394, + 467, 216, 1085, 468, -1, 394, 467, 389, 1085, 468, + -1, 394, 467, 1085, 468, -1, 257, 467, 1035, 471, + 1035, 468, -1, 70, 467, 1071, 468, -1, 170, 467, + 1071, 468, -1, 218, 467, 1071, 468, -1, 438, 467, + 1071, 468, -1, 439, 467, 242, 1121, 468, -1, 439, + 467, 242, 1121, 471, 1044, 468, -1, 439, 467, 242, + 1121, 471, 1071, 468, -1, 439, 467, 242, 1121, 471, + 1044, 471, 1071, 468, -1, 440, 467, 1037, 1049, 468, + -1, 441, 467, 1045, 468, -1, 443, 467, 1047, 1035, + 1048, 468, -1, 444, 467, 242, 1121, 468, -1, 444, + 467, 242, 1121, 471, 1035, 468, -1, 445, 467, 1035, + 471, 1042, 1043, 468, -1, 446, 467, 1047, 1035, 35, + 1014, 468, -1, 422, 1035, -1, 422, 249, 416, -1, + 471, 363, 449, -1, 471, 363, 249, -1, 471, 363, + 249, 416, -1, -1, 437, 467, 1045, 468, -1, 1046, + -1, 1045, 471, 1046, -1, 1035, 35, 1121, -1, 1035, + -1, 127, -1, 85, -1, 295, 428, -1, 371, 428, + -1, -1, 286, 1037, -1, 286, 1037, 53, 312, -1, + 286, 53, 312, 1037, -1, 286, 53, 312, 1037, 53, + 312, -1, 431, 171, 467, 952, 468, -1, -1, 153, + 467, 427, 1035, 468, -1, -1, 429, 1053, -1, -1, + 1054, -1, 1053, 471, 1054, -1, 1118, 35, 1056, -1, + 276, 1056, -1, 276, 1118, -1, -1, 467, 1057, 1058, + 951, 1059, 468, -1, 1118, -1, -1, 285, 53, 1071, + -1, -1, 306, 1060, -1, 334, 1060, -1, -1, 1061, + -1, 47, 1061, 32, 1061, -1, 400, 293, -1, 400, + 156, -1, 94, 333, -1, 1035, 293, -1, 1035, 156, + -1, 333, 467, 1071, 468, -1, 333, 467, 468, -1, + 467, 1071, 471, 1035, 468, -1, 333, 467, 1071, 468, + -1, 333, 467, 468, -1, 467, 1071, 471, 1035, 468, + -1, 33, -1, 360, -1, 26, -1, 8, -1, 1067, + -1, 458, -1, 459, -1, 460, -1, 461, -1, 462, + -1, 463, -1, 454, -1, 455, -1, 456, -1, 15, + -1, 16, -1, 17, -1, 8, -1, 268, 467, 813, + 468, -1, 1066, -1, 268, 467, 813, 468, -1, 1066, + -1, 268, 467, 813, 468, -1, 221, -1, 451, 221, + -1, 180, -1, 451, 180, -1, 1035, -1, 1071, 471, + 1035, -1, 1073, -1, 1072, 471, 1073, -1, 1035, -1, + 789, 13, 1035, -1, 789, 14, 1035, -1, 1012, -1, + 1074, 471, 1012, -1, 465, 1071, 466, -1, 465, 1076, + 466, -1, 465, 466, -1, 1075, -1, 1076, 471, 1075, + -1, 1078, 162, 1035, -1, -1, 3, -1, 448, -1, + 240, -1, 106, -1, 177, -1, 237, -1, 341, -1, + 1113, -1, 1035, 1080, 1083, 1084, -1, 1035, 1080, 1083, + -1, 289, 1035, -1, 1036, 185, 1036, -1, -1, 1035, + 1083, 1084, -1, 1035, 1084, 1083, -1, 1035, 1083, -1, + 1035, 1084, -1, 1071, -1, -1, 162, 1035, -1, 157, + 1035, -1, 1035, 162, 1071, -1, 162, 1071, -1, 1071, + -1, 937, -1, 467, 1071, 468, -1, 58, 1091, 1088, + 1090, 136, -1, 1089, -1, 1088, 1089, -1, 426, 1035, + 385, 1035, -1, 132, 1035, -1, -1, 1035, -1, -1, + 1118, -1, 1118, 1095, -1, 469, 1107, -1, 469, 460, + -1, 465, 1035, 466, -1, 465, 1094, 472, 1094, 466, + -1, 1035, -1, -1, 1093, -1, 1095, 1093, -1, -1, + 1096, 1093, -1, 39, -1, -1, 1099, -1, -1, 1100, + -1, 1099, 471, 1100, -1, 1035, 35, 1121, -1, 1035, + 3, -1, 1035, -1, 460, -1, 1102, -1, 1101, 471, + 1102, -1, 1118, -1, 1118, 1095, -1, 1104, -1, 1103, + 471, 1104, -1, 1118, -1, 1118, -1, 1118, -1, 1121, + -1, 1118, -1, 1113, -1, 1119, -1, 1118, 1095, -1, + 1112, -1, 4, -1, 1113, -1, 6, -1, 7, -1, + 1110, 1113, -1, 1110, 467, 1072, 951, 468, 1113, -1, + 1015, 1113, -1, 1031, 1113, 1033, -1, 1031, 467, 1112, + 468, 1113, -1, 395, -1, 150, -1, 256, -1, 9, + -1, 5, -1, 1112, -1, 458, 1112, -1, 459, 1112, + -1, 1116, -1, 1120, -1, 101, -1, 349, -1, 1116, + -1, 1117, 471, 1116, -1, 3, -1, 1122, -1, 1123, + -1, 3, -1, 1122, -1, 1124, -1, 3, -1, 1122, + -1, 1123, -1, 1124, -1, 3, -1, 1122, -1, 1123, + -1, 1124, -1, 1125, -1, 18, -1, 19, -1, 20, + -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, + -1, 27, -1, 28, -1, 29, -1, 37, -1, 38, + -1, 40, -1, 41, -1, 42, -1, 44, -1, 45, + -1, 46, -1, 53, -1, 54, -1, 55, -1, 56, + -1, 57, -1, 60, -1, 61, -1, 64, -1, 66, + -1, 67, -1, 68, -1, 69, -1, 74, -1, 75, + -1, 76, -1, 77, -1, 78, -1, 80, -1, 81, + -1, 82, -1, 84, -1, 85, -1, 86, -1, 87, + -1, 88, -1, 89, -1, 92, -1, 93, -1, 94, + -1, 102, -1, 103, -1, 104, -1, 105, -1, 106, + -1, 107, -1, 110, -1, 112, -1, 114, -1, 115, + -1, 116, -1, 117, -1, 118, -1, 119, -1, 121, + -1, 122, -1, 123, -1, 124, -1, 127, -1, 128, + -1, 129, -1, 130, -1, 131, -1, 133, -1, 134, + -1, 135, -1, 137, -1, 138, -1, 139, -1, 141, + -1, 142, -1, 143, -1, 144, -1, 146, -1, 147, + -1, 148, -1, 151, -1, 153, -1, 154, -1, 156, + -1, 158, -1, 160, -1, 164, -1, 165, -1, 166, + -1, 167, -1, 169, -1, 173, -1, 175, -1, 176, + -1, 177, -1, 178, -1, 179, -1, 181, -1, 182, + -1, 183, -1, 184, -1, 186, -1, 187, -1, 188, + -1, 189, -1, 190, -1, 191, -1, 193, -1, 196, + -1, 197, -1, 198, -1, 199, -1, 205, -1, 208, + -1, 210, -1, 211, -1, 212, -1, 213, -1, 214, + -1, 217, -1, 220, -1, 223, -1, 224, -1, 225, + -1, 228, -1, 229, -1, 230, -1, 231, -1, 232, + -1, 233, -1, 234, -1, 235, -1, 236, -1, 237, + -1, 238, -1, 239, -1, 240, -1, 241, -1, 242, + -1, 243, -1, 247, -1, 248, -1, 249, -1, 252, + -1, 253, -1, 255, -1, 258, -1, 260, -1, 261, + -1, 262, -1, 264, -1, 265, -1, 268, -1, 269, + -1, 270, -1, 273, -1, 276, -1, 279, -1, 280, + -1, 281, -1, 282, -1, 283, -1, 284, -1, 285, + -1, 286, -1, 287, -1, 290, -1, 291, -1, 293, + -1, 296, -1, 297, -1, 295, -1, 299, -1, 300, + -1, 301, -1, 302, -1, 303, -1, 304, -1, 305, + -1, 306, -1, 307, -1, 309, -1, 310, -1, 311, + -1, 312, -1, 314, -1, 315, -1, 316, -1, 317, + -1, 318, -1, 319, -1, 320, -1, 321, -1, 322, + -1, 323, -1, 324, -1, 325, -1, 327, -1, 328, + -1, 330, -1, 331, -1, 332, -1, 334, -1, 335, + -1, 336, -1, 337, -1, 338, -1, 339, -1, 340, + -1, 341, -1, 342, -1, 344, -1, 345, -1, 346, + -1, 347, -1, 348, -1, 350, -1, 351, -1, 353, + -1, 354, -1, 356, -1, 357, -1, 359, -1, 361, + -1, 362, -1, 363, -1, 364, -1, 365, -1, 366, + -1, 367, -1, 368, -1, 369, -1, 370, -1, 371, + -1, 372, -1, 375, -1, 376, -1, 378, -1, 380, + -1, 381, -1, 382, -1, 383, -1, 384, -1, 390, + -1, 391, -1, 393, -1, 396, -1, 397, -1, 398, + -1, 399, -1, 400, -1, 401, -1, 402, -1, 405, + -1, 406, -1, 407, -1, 408, -1, 409, -1, 412, + -1, 413, -1, 414, -1, 415, -1, 416, -1, 420, + -1, 422, -1, 423, -1, 424, -1, 425, -1, 428, + -1, 431, -1, 432, -1, 433, -1, 434, -1, 435, + -1, 436, -1, 448, -1, 449, -1, 450, -1, 47, + -1, 48, -1, 50, -1, 51, -1, 62, -1, 63, + -1, 70, -1, 108, -1, 109, -1, 145, -1, 149, + -1, 155, -1, 170, -1, 172, -1, 195, -1, 200, + -1, 201, -1, 203, -1, 218, -1, 244, -1, 246, + -1, 250, -1, 257, -1, 259, -1, 274, -1, 278, + -1, 292, -1, 294, -1, 308, -1, 333, -1, 352, + -1, 358, -1, 373, -1, 386, -1, 387, -1, 392, + -1, 394, -1, 417, -1, 418, -1, 437, -1, 438, + -1, 439, -1, 440, -1, 441, -1, 442, -1, 443, + -1, 444, -1, 445, -1, 446, -1, 447, -1, 43, + -1, 49, -1, 72, -1, 79, -1, 91, -1, 98, + -1, 161, -1, 163, -1, 180, -1, 194, -1, 206, + -1, 207, -1, 209, -1, 219, -1, 221, -1, 245, + -1, 254, -1, 275, -1, 277, -1, 329, -1, 355, + -1, 379, -1, 421, -1, 26, -1, 30, -1, 31, + -1, 32, -1, 33, -1, 34, -1, 35, -1, 36, + -1, 39, -1, 52, -1, 58, -1, 59, -1, 65, + -1, 71, -1, 73, -1, 83, -1, 90, -1, 95, + -1, 96, -1, 97, -1, 99, -1, 100, -1, 101, + -1, 111, -1, 113, -1, 120, -1, 125, -1, 126, + -1, 132, -1, 136, -1, 140, -1, 150, -1, 152, + -1, 157, -1, 159, -1, 162, -1, 168, -1, 171, + -1, 174, -1, 185, -1, 192, -1, 202, -1, 204, + -1, 215, -1, 216, -1, 222, -1, 226, -1, 227, + -1, 251, -1, 256, -1, 263, -1, 266, -1, 267, + -1, 271, -1, 272, -1, 289, -1, 298, -1, 313, + -1, 326, -1, 343, -1, 349, -1, 360, -1, 374, + -1, 377, -1, 385, -1, 388, -1, 389, -1, 395, + -1, 403, -1, 404, -1, 410, -1, 411, -1, 419, + -1, 426, -1, 427, -1, 429, -1, 430, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 812, 812, 828, 840, 850, 851, 852, 853, 854, @@ -2204,13 +3443,13 @@ static const char *const yytname[] = "Iconst", "Sconst", "SignedIconst", "RoleId", "RoleSpec", "role_list", "ColId", "type_function_name", "NonReservedWord", "ColLabel", "unreserved_keyword", "col_name_keyword", "type_func_name_keyword", - "reserved_keyword", YY_NULLPTR + "reserved_keyword", YY_NULL }; #endif # ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -2264,21780 +3503,21792 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -4583 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-4583))) - -#define YYTABLE_NINF -2568 - -#define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-2568))) +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 473, 474, 475, 475, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 477, + 478, 478, 478, 479, 479, 480, 480, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 482, 482, 482, 482, + 482, 482, 483, 484, 484, 485, 485, 486, 486, 486, + 486, 487, 487, 487, 487, 487, 487, 488, 489, 490, + 490, 491, 491, 491, 491, 492, 492, 493, 493, 494, + 494, 494, 494, 494, 494, 495, 495, 495, 495, 496, + 496, 496, 497, 497, 497, 497, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 499, 499, 500, + 500, 501, 501, 502, 502, 502, 502, 503, 503, 503, + 503, 504, 504, 504, 504, 504, 504, 504, 505, 505, + 505, 506, 506, 507, 507, 508, 508, 508, 508, 509, + 509, 510, 510, 511, 511, 512, 512, 512, 512, 512, + 512, 512, 513, 514, 514, 515, 515, 516, 517, 517, + 517, 517, 517, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 519, 519, 520, 520, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 522, 522, 523, 523, 523, 524, 524, 525, 525, + 526, 526, 526, 526, 527, 528, 528, 529, 529, 530, + 530, 530, 530, 531, 531, 532, 532, 532, 532, 533, + 533, 534, 534, 534, 535, 535, 536, 536, 537, 537, + 537, 538, 539, 539, 540, 540, 540, 540, 541, 541, + 542, 542, 543, 543, 544, 544, 545, 545, 545, 546, + 546, 547, 547, 548, 548, 548, 548, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 548, 549, 549, 550, + 550, 551, 551, 552, 552, 553, 553, 554, 555, 555, + 555, 555, 555, 556, 556, 557, 558, 558, 558, 558, + 558, 558, 559, 559, 559, 559, 559, 559, 559, 559, + 560, 560, 561, 561, 562, 562, 563, 563, 564, 564, + 564, 565, 565, 566, 567, 567, 568, 568, 569, 569, + 569, 569, 570, 570, 570, 570, 570, 570, 570, 570, + 571, 571, 572, 572, 572, 572, 573, 574, 574, 574, + 575, 575, 575, 575, 575, 575, 575, 576, 576, 577, + 577, 577, 577, 577, 577, 577, 578, 578, 579, 579, + 580, 580, 581, 582, 582, 582, 582, 583, 583, 584, + 584, 585, 585, 586, 586, 586, 586, 586, 587, 588, + 589, 589, 589, 589, 589, 590, 590, 591, 591, 592, + 593, 593, 594, 594, 595, 595, 595, 596, 596, 596, + 596, 597, 597, 597, 597, 598, 598, 599, 599, 600, + 601, 601, 602, 602, 603, 604, 604, 604, 605, 605, + 606, 607, 607, 608, 609, 609, 610, 610, 611, 611, + 612, 612, 613, 613, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, + 616, 616, 616, 616, 617, 617, 618, 618, 619, 619, + 620, 620, 621, 621, 622, 622, 623, 623, 624, 624, + 625, 625, 626, 627, 627, 628, 628, 629, 629, 630, + 630, 631, 631, 631, 631, 632, 633, 633, 634, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 636, 637, 637, 637, 637, + 638, 638, 639, 639, 640, 640, 641, 641, 642, 642, + 643, 644, 644, 645, 645, 645, 645, 646, 647, 648, + 649, 649, 650, 650, 651, 651, 652, 652, 653, 653, + 653, 654, 654, 654, 654, 655, 655, 656, 657, 657, + 658, 658, 659, 659, 660, 660, 661, 661, 662, 663, + 664, 665, 665, 666, 666, 667, 667, 668, 668, 669, + 669, 670, 670, 671, 671, 671, 671, 671, 672, 673, + 673, 674, 674, 674, 675, 675, 676, 676, 676, 676, + 676, 677, 677, 678, 678, 679, 680, 680, 681, 681, + 682, 683, 683, 684, 684, 685, 685, 686, 686, 687, + 687, 687, 688, 688, 688, 688, 689, 689, 690, 690, + 691, 691, 691, 691, 691, 691, 692, 692, 693, 693, + 694, 695, 695, 696, 697, 697, 697, 697, 698, 699, + 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, + 700, 700, 700, 700, 700, 700, 701, 702, 702, 703, + 703, 704, 704, 704, 704, 704, 704, 705, 706, 706, + 707, 708, 708, 709, 709, 710, 710, 710, 710, 711, + 711, 712, 713, 713, 714, 714, 714, 714, 714, 715, + 715, 716, 716, 717, 717, 717, 718, 718, 719, 720, + 720, 721, 721, 722, 722, 723, 723, 724, 724, 725, + 726, 727, 727, 727, 727, 727, 727, 727, 727, 727, + 727, 727, 727, 728, 728, 728, 728, 728, 728, 728, + 728, 728, 728, 728, 728, 728, 729, 729, 729, 729, + 729, 729, 729, 730, 730, 730, 731, 731, 732, 732, + 733, 733, 734, 734, 735, 736, 736, 736, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, 738, 739, + 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, + 739, 740, 740, 741, 741, 741, 741, 741, 741, 741, + 742, 742, 743, 743, 743, 743, 743, 743, 744, 744, + 744, 744, 744, 744, 744, 744, 745, 745, 746, 746, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 748, 748, 749, 749, + 750, 751, 751, 752, 752, 752, 752, 752, 753, 753, + 754, 754, 754, 754, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, + 756, 756, 757, 757, 758, 758, 759, 760, 760, 761, + 761, 762, 762, 763, 764, 764, 765, 765, 765, 766, + 766, 766, 767, 767, 767, 767, 767, 768, 768, 769, + 769, 770, 770, 771, 771, 772, 772, 773, 773, 774, + 774, 774, 775, 775, 776, 776, 777, 777, 777, 778, + 778, 778, 779, 779, 779, 780, 780, 781, 781, 782, + 782, 783, 783, 784, 784, 784, 784, 785, 785, 786, + 786, 787, 787, 787, 787, 787, 788, 788, 788, 788, + 788, 789, 790, 791, 791, 791, 792, 792, 792, 793, + 794, 794, 794, 794, 795, 795, 796, 797, 797, 798, + 798, 799, 799, 799, 799, 799, 799, 799, 799, 799, + 799, 799, 799, 799, 799, 799, 799, 800, 800, 800, + 800, 800, 801, 801, 802, 802, 803, 803, 804, 805, + 805, 806, 807, 807, 808, 808, 809, 809, 810, 810, + 811, 811, 812, 812, 812, 812, 813, 813, 814, 814, + 815, 816, 817, 817, 818, 818, 819, 819, 819, 820, + 820, 820, 821, 822, 822, 823, 824, 824, 824, 824, + 825, 826, 826, 826, 826, 827, 827, 828, 828, 828, + 829, 829, 830, 831, 831, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 833, 833, 834, 834, + 835, 835, 835, 835, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, 836, 837, + 838, 838, 839, 839, 840, 840, 840, 840, 840, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 842, 843, 843, 844, 844, 845, 845, 845, 845, + 846, 847, 847, 848, 849, 849, 849, 849, 849, 849, + 850, 850, 851, 852, 852, 852, 853, 853, 854, 854, + 854, 854, 854, 855, 855, 856, 856, 856, 856, 857, + 857, 857, 858, 859, 859, 860, 861, 861, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 863, 863, 863, 864, 864, 864, 864, 864, + 865, 865, 865, 866, 866, 867, 867, 867, 867, 868, + 868, 868, 868, 869, 870, 871, 871, 872, 872, 873, + 873, 873, 874, 874, 874, 874, 874, 874, 874, 875, + 875, 876, 876, 876, 877, 878, 878, 879, 880, 880, + 881, 882, 882, 882, 882, 882, 882, 882, 883, 883, + 884, 885, 885, 885, 885, 885, 885, 886, 886, 887, + 888, 888, 888, 889, 889, 890, 890, 890, 890, 890, + 891, 891, 892, 892, 892, 892, 892, 893, 893, 894, + 894, 895, 895, 896, 896, 897, 897, 898, 898, 899, + 899, 899, 899, 900, 900, 900, 900, 900, 900, 900, + 900, 900, 901, 901, 902, 903, 903, 904, 904, 904, + 905, 906, 906, 907, 907, 907, 907, 908, 908, 909, + 909, 910, 910, 910, 910, 911, 912, 912, 913, 913, + 913, 913, 913, 914, 914, 915, 915, 916, 917, 917, + 917, 918, 918, 918, 919, 919, 920, 921, 921, 922, + 923, 923, 924, 924, 924, 924, 924, 924, 924, 924, + 925, 925, 926, 926, 926, 927, 928, 928, 929, 929, + 930, 931, 931, 932, 933, 934, 934, 934, 934, 934, + 935, 935, 935, 936, 936, 937, 937, 938, 938, 938, + 938, 938, 938, 938, 938, 939, 939, 940, 940, 940, + 940, 940, 940, 940, 941, 941, 941, 942, 942, 943, + 944, 944, 945, 945, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 947, 947, 948, 948, 948, 949, 949, + 950, 950, 951, 951, 952, 953, 953, 954, 954, 955, + 955, 955, 955, 956, 956, 957, 957, 957, 958, 958, + 959, 959, 960, 961, 961, 961, 962, 963, 963, 964, + 964, 965, 965, 966, 966, 967, 967, 967, 967, 967, + 968, 969, 970, 971, 972, 972, 973, 973, 974, 974, + 975, 975, 976, 977, 977, 977, 977, 978, 978, 979, + 979, 980, 980, 981, 981, 982, 982, 982, 982, 982, + 982, 982, 982, 982, 982, 983, 983, 983, 983, 983, + 983, 984, 984, 984, 984, 985, 985, 986, 986, 986, + 986, 986, 987, 987, 987, 987, 988, 988, 989, 989, + 990, 990, 990, 990, 991, 991, 992, 992, 992, 993, + 994, 994, 995, 995, 996, 997, 997, 998, 998, 999, + 999, 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1003, 1003, + 1004, 1005, 1005, 1006, 1006, 1007, 1007, 1007, 1008, 1008, + 1009, 1009, 1009, 1009, 1010, 1010, 1011, 1011, 1012, 1012, + 1012, 1012, 1012, 1012, 1013, 1013, 1013, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1016, 1016, + 1017, 1017, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1019, 1019, 1020, 1020, 1021, 1021, 1022, + 1023, 1024, 1024, 1025, 1025, 1026, 1027, 1028, 1028, 1028, + 1028, 1028, 1028, 1029, 1029, 1030, 1030, 1030, 1030, 1031, + 1032, 1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, + 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, + 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, + 1039, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1043, 1043, 1043, + 1043, 1044, 1045, 1045, 1046, 1046, 1047, 1047, 1048, 1048, + 1048, 1049, 1049, 1049, 1049, 1050, 1050, 1051, 1051, 1052, + 1052, 1053, 1053, 1054, 1055, 1055, 1055, 1056, 1057, 1057, + 1058, 1058, 1059, 1059, 1059, 1060, 1060, 1061, 1061, 1061, + 1061, 1061, 1062, 1062, 1062, 1063, 1063, 1064, 1065, 1065, + 1065, 1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, + 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1069, 1069, 1070, + 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1072, 1072, 1073, + 1073, 1073, 1074, 1074, 1075, 1075, 1075, 1076, 1076, 1077, + 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, + 1079, 1080, 1081, 1081, 1082, 1082, 1082, 1082, 1082, 1082, + 1083, 1084, 1085, 1085, 1085, 1086, 1086, 1087, 1088, 1088, + 1089, 1090, 1090, 1091, 1091, 1092, 1092, 1093, 1093, 1093, + 1093, 1094, 1094, 1095, 1095, 1096, 1096, 1097, 1097, 1098, + 1098, 1099, 1099, 1100, 1100, 1100, 1100, 1101, 1101, 1102, + 1102, 1103, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1112, 1113, 1114, 1114, 1114, 1115, + 1116, 1116, 1116, 1117, 1117, 1118, 1118, 1118, 1119, 1119, + 1119, 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121, 1121, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, + 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, + 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1125, 1125 +}; - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const int yypact[] = +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = { - 9436, 810, 12815, -4583, -4583, 810, -4583, 65551, 434, 654, - 1021, 165, 13899, 65999, 73167, 900, 828, 14963, 810, 73167, - 1568, 50319, 62415, 845, 73167, 1129, 858, 50319, 73167, 1778, - 73615, 1121, 1272, 886, 74063, 66447, 61071, 1442, 73167, 1247, - 1349, 74511, 66895, 1184, 67343, 858, 46763, 326, 1137, 74959, - 73167, 2388, 1699, 1312, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 434, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 1645, - -4583, 957, 1831, 1433, 978, 1140, -4583, -4583, -4583, 58831, - 73167, 73167, 73167, 1564, 73167, 1419, 73167, 320, 58831, 54799, - 67791, 1671, 1481, 43173, 75407, -4583, 73167, 53007, 73167, 73167, - 75855, 73167, 73167, 73167, 1361, 63759, 73167, 1607, 73167, 73167, - 53455, 76303, 1754, 1224, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, 73167, 15410, 1129, -4583, -4583, 2388, - 73167, 1738, 58831, 73167, 1546, 76751, 1631, 73167, -4583, 73167, - 1648, 77199, 443, 1956, 54799, 2009, 43622, 1747, 73167, 73167, - 54799, 77647, 78095, 78543, 73167, 73167, -4583, -4583, 1741, 73167, - 73167, -4583, 1878, 55247, 1535, 1904, 2098, 2004, 1278, -4583, - 68239, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 57935, - 828, -4583, -4583, 1862, 59279, 73167, 2028, -4583, -4583, 78991, - 94153, 1838, -4583, 459, 59727, 55695, 2146, 1833, 44071, 2229, - -4583, -4583, 56143, -4583, -4583, -4583, -4583, -4583, 79439, -4583, - 79887, 1927, 2028, -4583, 94587, 56591, -4583, 2079, 80335, 80783, - 81231, -4583, 1819, 1515, 1403, 39108, -4583, -4583, -4583, 434, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 191, 1820, - 209, 206, 293, -4583, -4583, 208, 213, 215, 191, 2287, - 2287, -4583, 73167, -4583, -4583, 1820, 36, 1849, 1849, 1849, - 2103, -23, -4583, 1849, 1984, -4583, -4583, -4583, -4583, 67343, - -4583, 1902, 68687, 73167, 69135, 1129, 1909, 2356, 1917, -4583, - -4583, -4583, -4583, -4583, 1977, 73167, 73167, 73167, -4583, -4583, - 2365, 1992, 2206, 1946, -4583, -4583, -4583, 2159, 2167, 2213, - 98, 1129, 2066, -4583, 2325, -4583, 2240, 27638, 27638, 1129, - 69583, 81679, 258, 57935, 1129, 70031, 2102, 1200, 2255, -4583, - -4583, -4583, 650, -4583, 2513, 2115, 2349, 1946, 1224, 40460, - -4583, 2120, 785, 67343, -4583, -4583, -4583, 332, 2425, 29498, - 73167, 2126, -4583, 2124, 2126, 2142, 2161, 1433, -4583, 9436, - 73167, 1421, 1421, 2552, 1421, 1877, 1905, -4583, 2007, -4583, - 2458, 2426, 67343, 2170, 214, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 1476, 2176, - 785, -4583, 241, -4583, 1492, 2179, 1487, 967, -4583, -4583, - 234, 73167, 207, 2220, 70479, 6278, 2241, 785, 2245, -4583, - -4583, -4583, 2395, 1071, -4583, -4583, -4583, -4583, 2533, 2579, - 6185, 306, 70927, -4583, -4583, -4583, -4583, 73167, 73167, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 2259, 1077, - -4583, -4583, 2261, 2583, 2472, 776, 2560, 2430, 1031, 2485, - 1618, 2608, 9287, 1190, 1651, 889, 68687, 73167, 2574, 2612, - 7016, 1425, 709, 2503, 1202, 2560, 2633, 2476, 1031, 2657, - 9008, 73167, -4583, 2588, 2699, 677, -4583, 108, -4583, 2406, - 2553, 52, 2585, 58831, 2362, -4583, -4583, 73167, -4583, -4583, - 95021, 2434, -4583, 678, 58831, -4583, 2582, 2433, 44520, 73167, - -4583, -4583, 73167, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - 2518, 2709, 73167, 95021, -4583, 2656, 73167, 73167, -4583, 2401, - -4583, -4583, -4583, -4583, 1849, 73167, 2403, 2806, 95021, 2621, - 114, 73167, 1592, 2838, 73167, 2625, 1592, 2441, 82127, -4583, - -4583, 1592, -4583, -4583, -4583, 73167, 73167, 2411, 1503, 2613, - 2723, 1592, 2630, 2842, 2843, 2637, 2491, 2639, 2124, 2809, - 2614, 903, 1204, 175, 1952, 1592, 2474, 82575, 83023, 73167, - 2475, 73167, 2821, 58831, 73167, 2746, -4583, 2603, -4583, -4583, - 1134, -4583, -4583, -4583, -4583, -4583, 2760, -4583, 155, 229, - 2761, 2440, 2768, -4583, -4583, -4583, 2496, -4583, 2496, 2496, - 2450, 2450, 2627, 2452, 2777, -4583, -4583, -4583, 2154, 2496, - 2450, -4583, 95889, -4583, 1561, 1611, -4583, 182, -4583, 2890, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 2459, -4583, - 966, 1993, -4583, -4583, 2494, -4583, 2784, 185, -4583, 2786, - -4583, 2463, 83471, -4583, 83919, 84367, 2791, 269, -4583, 54799, - 2792, 2463, 2795, 229, 2797, -4583, 914, 2781, 2798, 182, - 2799, 1954, 2463, 58383, 2801, 288, -4583, 2807, 316, -4583, - 2808, 2688, 29498, -4583, 2580, -4583, 1137, -4583, 1737, -4583, - 49423, -4583, 1403, 1820, -4583, 73167, 1820, 73167, 1820, 73167, - 1820, 73167, 1820, 73167, 73167, 73167, 1820, -4583, -4583, -4583, - 73167, 2489, 73167, 73167, -4583, -4583, -4583, 62863, 54799, 63311, - -4583, 73167, -4583, 89, 1129, -4583, -4583, -4583, 1289, -4583, - 1946, -4583, 95021, 2923, 54799, 2821, -4583, 1764, -4583, -4583, - -4583, -4583, -4583, -4583, 2740, 73167, 2812, 2815, 62863, 54799, - -4583, 84815, 57935, 2697, 2498, -4583, -4583, -4583, -4583, -4583, - 2008, 2961, 192, 2968, 29498, 2507, 192, 192, 2509, 2824, - -4583, -4583, -4583, 244, 2515, 2516, -4583, 199, 199, -4583, - 2517, 2519, -4583, 220, 2520, 2523, 2980, 2987, 225, 2526, - 2527, 2529, 2154, 192, 29498, -4583, 2531, 199, 2534, 2536, - 2537, 3000, 2539, -4583, 3003, 2542, 318, 338, 2543, 2544, - -4583, 2517, -4583, 245, 2545, 2554, 2555, 2556, 2559, 2561, - 2562, 2563, 29498, 29498, 29498, -4583, 26243, 785, 1129, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, 262, 5583, -4583, - 2589, -4583, -4583, 2742, -4583, -4583, 29498, -4583, -4583, 87, - -4583, 264, -4583, -4583, -4583, 785, 2823, 2564, -4583, -4583, - 276, 2565, -4583, 376, -4583, -4583, -4583, -4583, -4583, -4583, - 57039, 2997, -4583, 349, 1129, 108, 1416, 2939, 48527, 48975, - -4583, -4583, 2814, -4583, 73167, -4583, -4583, 29498, 46315, -4583, - 785, 130, -4583, -4583, -4583, -4583, 1829, -4583, -4583, -4583, - 434, 13029, 1830, 2126, 73167, 73167, 3002, -4583, -4583, -4583, - 2124, -4583, -4583, 1433, 1433, 29498, 1433, 235, 1145, 28103, - 29498, 2881, 2779, 254, 742, 2883, -4583, 2782, 1877, 1905, - 67343, 73167, 85263, 2694, 29498, 2658, 2660, 2708, 47659, -4583, - 785, 2661, 2628, 2664, 2716, 51215, 2586, 2666, 2670, 2726, - -4583, 2840, -4583, -4583, 2672, 2741, 2678, 85711, -4583, -4583, - 864, -4583, -4583, -4583, 864, -4583, 2611, 1404, 976, 1354, - 2680, 255, 1127, 2986, -4583, 201, -4583, -4583, 2733, -4583, - 6034, 73167, 2926, 9835, 2810, 306, 2811, 2730, -4583, -4583, - 2857, 2693, 73167, 2700, 2833, 306, 802, 86159, -4583, -4583, - -4583, -4583, -4583, -4583, 4609, 25374, -4583, -38, 2702, 2681, - 2713, 73167, 60175, 350, 2828, 2829, 1682, 2097, 197, 2763, - 73167, 1551, 2836, 73167, 2632, 2712, 2717, 2928, 2634, 2038, - 3024, 2638, -4583, -4583, -4583, 1396, 1804, 2827, -4583, 2929, - 2966, 7801, 2704, 2705, 92851, -4583, 2735, 579, 44969, 73167, - 73167, 2736, 2744, 2743, 2745, 602, 3027, 1397, 2747, -4583, - -4583, -4583, 1397, 73167, 2748, 2749, 73167, 95889, 306, -4583, - 3081, 306, 306, 1765, 3085, 2753, 400, 2900, 81, 1592, - 2638, 1716, -4583, 2755, 2756, 279, -4583, 2876, 2769, 2770, - 2822, 1129, -4583, -4583, 2772, 2844, 2773, 631, -4583, -4583, - 2771, 67343, 2877, 2878, 178, 1287, 2638, -4583, 2776, 2778, - 2634, 2634, 73167, 73167, 73167, 73167, 73167, 195, 3123, 3125, - 2780, 161, 2837, 2706, -4583, 1397, 53903, 2785, -4583, 1397, - 73167, 2787, 1512, 2638, 1692, 110, -4583, -4583, -4583, 1224, - -4583, 73167, -4583, 73167, -4583, 2970, 95021, 2913, 2978, -4583, - 2752, -4583, 2981, 306, -4583, 73167, 73167, 2982, 2925, 2932, - 930, 95021, 2933, 2994, -4583, 2995, 2996, 2804, 2775, 2818, - 48093, -4583, 2411, 2739, 3177, 3072, 73167, 51215, -4583, 3194, - 864, -4583, 95021, 2955, 3079, -4583, 73167, 2974, 41, -4583, - 3115, 2816, -4583, -4583, 987, 73167, 246, 2800, -4583, -4583, - 3084, 54799, 1466, 3086, 1129, 2817, 3087, 2967, 1129, 54799, - 3006, 73167, 73167, 73167, 73167, -4583, -4583, 2975, 711, 122, - -4583, 53903, 2989, -4583, 73167, 2990, 1716, 2991, 3203, 94, - 1849, 86607, 3088, -4583, 87055, 2783, 3208, 95021, 3032, -4583, - 2063, -4583, 2907, -4583, 58831, -4583, -4583, 58831, -4583, -4583, - -4583, 95021, 73167, -4583, 2788, -4583, -4583, 29498, -4583, -4583, - -4583, 2287, -4583, 95021, 2496, 2496, -4583, -4583, 3214, 2863, - 2865, 2287, -4583, 2287, -4583, 95021, -4583, 2802, 2803, 2287, - 2868, 2872, 2882, -4583, 2805, 2885, 2287, -4583, -4583, 2074, - -4583, -4583, 58831, 58831, -4583, 54799, 54799, 3108, 288, 3119, - 2854, 3121, 2860, 44969, 44969, -4583, 442, 54799, 73167, -4583, - 73167, -4583, -4583, -4583, -4583, 95021, 95021, -4583, 54799, 53903, - 3129, 3130, 229, 73167, 73167, -4583, 73167, 73167, -4583, 73167, - 73167, 1843, 87503, 1403, 57487, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, 73167, -4583, 73167, -4583, 73167, -4583, 73167, - -4583, 73167, -4583, -4583, -4583, 73167, -4583, 73167, 1844, -4583, - -4583, 1863, 121, 73167, 73167, 328, 58831, 73167, 3016, 73167, - 73167, 73167, 73167, 73167, 2889, 2565, 563, -4583, 1169, 450, - 67343, 3023, -4583, -4583, 1864, 2388, 1239, 73167, 1230, 1977, - -4583, -4583, 63311, 62415, 3117, 96, 73167, -4583, -4583, 4789, - 29498, 785, 27173, -4583, -4583, 13029, 2855, 29498, 29498, 2820, - 2287, 2287, -4583, 997, 29498, 29498, 29498, 2287, 2287, 4231, - 29498, 44969, 29498, 33683, 23540, 29498, 29498, 26708, -4583, 29498, - 3040, 34607, 29498, 1416, 3041, 29498, 1416, 4231, 3274, 3274, - 1824, 6368, 2825, 785, -4583, 2287, 1105, -4583, 416, 95021, - 29498, 29498, 29498, 29498, 51215, 2902, 240, 73167, 29498, 2826, - 1221, -4583, 29498, -4583, 2831, 29498, 2912, 805, 29498, 29498, - 29498, 29498, 29498, 29498, 29498, 29498, 29498, -4583, 35957, 418, - 3133, 3148, 33, 410, 71375, 27638, 3143, 22608, -4583, 193, - 3143, -4583, -4583, -4583, 73167, 2997, -4583, -4583, 2917, -4583, - -4583, -4583, -4583, -4583, 265, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, 2839, -4583, -4583, -4583, -4583, 2839, -4583, 2841, - 11459, 2845, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 3134, 3136, - 229, 73167, 332, 64207, -4583, 29498, -4583, 1865, 2851, -4583, - 3106, -4583, 2850, -4583, 9364, 3106, -4583, -4583, 302, 2973, - 3118, 3064, -4583, -4583, -4583, 2861, 13029, -4583, 1910, 13029, - 1938, -4583, -4583, -4583, -4583, -4583, -4583, 1270, -4583, 73167, - 963, 2881, 742, 2922, 1073, 3299, 73167, -4583, 40910, 1873, - 54799, 73167, 73167, 3061, -4583, 3283, -4583, 95889, -4583, 2869, - -4583, 95455, 91535, -4583, -4583, 585, -4583, 921, 54799, -4583, - 73167, 73167, -4583, 51215, 54799, 73167, 73167, -4583, 54799, 73167, - 73167, -4583, -4583, -4583, -4583, -4583, 49871, 850, 62415, 3001, - 61519, -4583, -4583, 2874, 73167, 2931, 3135, 3137, 1310, -4583, - -4583, 87951, -4583, 3083, 54799, 73167, 73167, 29498, 3090, 73167, - 73167, -4583, 298, 2962, 2963, -4583, 73167, 2964, 3112, 58831, - 2886, 73167, 73167, 95021, 2969, 750, 58831, 2934, 45418, 73167, - 73167, 73167, 73167, 3015, 3199, 95021, 73167, 3147, 1408, 67343, - 174, 1612, 2638, 3104, -4583, 3217, 1215, -4583, 54799, -4583, - 73167, 3095, -4583, -4583, -4583, 71823, 3322, 3007, -4583, -4583, - 88399, -4583, -4583, -4583, 1881, -4583, 54799, 54799, 73167, 10484, - 88847, 1447, 3116, -4583, -4583, 95021, -4583, 73167, 73167, 73167, - 3222, 3150, 73167, 64655, 89295, 89743, 78, 1522, 3151, 73167, - 65103, 3152, -4583, 3042, 73167, -4583, -4583, 51663, 54799, 73167, - 814, 51215, -4583, -4583, 73167, -4583, 3110, 771, -4583, 73167, - 8184, -4583, -4583, 2985, 2999, 73167, 3120, 180, 1832, 2638, - 73167, 73167, 2910, 1887, 54799, 73167, 51215, -4583, 3122, 1065, - 67343, 67343, 54799, 73167, 67343, -4583, 73167, 81679, -4583, 54799, - 1057, -4583, 3063, 54799, 73167, 13282, -4583, -4583, -4583, 306, - -4583, -4583, -4583, -4583, -4583, 73167, 73167, 306, 73167, 73167, - 306, 1365, -4583, 54799, 73167, -4583, -4583, -4583, 54799, 73167, - 73167, -4583, 54799, 2800, 73167, 51215, -4583, 73167, 7535, 73167, - 73167, 73167, 73167, 73167, 73167, 54799, 73167, -4583, -4583, 1283, - 1405, 88, 1269, 718, 73167, 3204, 73167, 90191, 54799, 73167, - 73167, 1129, 73167, 364, -4583, -4583, 3038, -4583, 54799, 1057, - -4583, 11625, 73167, 73167, 3004, 3005, 230, 3080, -4583, -4583, - -4583, -4583, -4583, -4583, 282, 3354, 90639, 282, -4583, 282, - 3184, 2983, 2984, 282, 73167, 73167, -4583, -4583, -4583, -4583, - 3179, 73167, 282, 282, 282, 3093, 3138, 139, 3209, 2942, - 1891, -4583, -4583, 29498, 95021, 73167, -4583, 1906, -4583, 2943, - 711, -4583, -4583, 51215, 73167, 187, 643, 3255, 3140, 60623, - 1087, 3247, 73167, 2992, 73167, 3370, 3028, 67343, 2411, -4583, - 1087, 73167, -4583, 1870, 62415, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, 73167, -4583, -4583, 3248, 73167, 29498, 3105, -4583, - 1129, 2411, 2411, 2411, 2411, -4583, -4583, -4583, -4583, 3153, - 1799, -4583, 2945, 2411, 73167, 3066, 3272, 1087, 2958, 3281, - -4583, 1716, 3282, 1285, 73167, 3167, 60623, 2137, 3009, 3185, - 3395, 1849, 1129, 3186, 3174, -4583, 25808, 6583, 3180, 3236, - 57935, 3275, 3277, 3293, -4583, 155, -4583, 3419, -4583, 29498, - 1913, 2993, 182, -4583, -4583, 2998, 2803, 3010, 3012, 3008, - 3011, -4583, 2287, 198, 3013, 1279, 150, 3128, 2287, 3226, - 3018, -4583, 185, -4583, 2463, -4583, 73167, -4583, 73167, 73167, - 73167, 73167, 269, -4583, -4583, 2463, 229, -4583, 3260, 182, - 2463, 3126, 3317, 57935, -4583, 288, -4583, 316, -4583, 3212, - 229, -4583, 3229, 1849, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, 1914, -4583, 73167, -4583, 3302, 3303, 3305, 3020, - 3021, 3060, 73167, 3029, 3020, 306, 3020, 2565, 2565, 3020, - 3021, 54351, 3475, 3332, -4583, 3114, 3036, 3342, 137, -4583, - 692, 75, 3266, -4583, -4583, -4583, -4583, 95021, -4583, 54799, - 3076, 73167, 73167, -4583, 100, 3241, 3037, 54351, 3456, 229, - -4583, 58831, -4583, -4583, 95021, 3124, 3139, 58831, 3251, 3101, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, 95021, -4583, 3301, - 73167, 73167, 1918, -4583, -4583, 1776, -4583, 1795, 29498, 181, - -4583, 11966, 1920, 29498, 3050, 3057, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, 3058, 3371, -4583, 1928, 1958, 1964, 3069, - 3070, 5235, 3071, 11591, 3073, 3067, 33683, 33683, 26243, 2075, - -4583, 33683, 3074, 3263, 1969, 11479, 3075, 3077, 12061, 28568, - 29498, 28568, 28568, 12326, 3075, 3082, 1970, 51215, 3257, 12364, - 1978, -4583, 29498, 51215, 5493, 29498, -4583, 29498, 3089, -4583, - -4583, 2624, 2624, 2624, 4231, -4583, 3094, -4583, 33683, 33683, - -4583, 2960, 26243, -4583, -4583, 3385, -4583, -4583, 1573, -4583, - 3091, -4583, -4583, 3109, 44969, 6717, 29498, 375, 29498, 2826, - 29498, 3160, 2624, 2624, 2624, 435, 435, 257, 257, 257, - 394, 410, -4583, -4583, -4583, 3096, 3098, 3107, 3276, 3111, - 29498, -4583, 2198, 2218, 73167, 2548, 2725, 2793, -4583, -4583, - -4583, 36858, 3146, 29498, 29498, 29498, 3113, -4583, 2351, 13029, - 84, -4583, 268, 3146, -4583, 1224, 2287, 1105, 49423, -4583, - -4583, 29498, -4583, -4583, -4583, 2124, -4583, -4583, -4583, 13029, - -4583, 2388, 29498, -4583, -4583, 907, 3099, 29498, 1910, -4583, - -4583, 3144, -4583, 29498, -4583, -4583, -4583, 2565, -4583, 3325, - -4583, -4583, -4583, 36858, 3156, 3145, 851, 40009, 3290, -4583, - 73167, -4583, 73167, 109, -4583, 3141, -4583, -4583, -4583, -4583, - -4583, -4583, 91535, 1993, -4583, 95455, -4583, 95455, -4583, 1993, - 3508, -4583, 91535, 1790, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, 54799, 54799, 3309, - 73167, 3310, 3326, 29498, 865, 73167, 3127, 3131, 1474, 3403, - 73167, -4583, 3451, 229, -4583, -4583, 3211, -4583, 13029, -4583, - -4583, -4583, -4583, -4583, 54799, 73167, -4583, 57935, -4583, 73167, - -4583, 95021, -4583, -4583, -4583, 73167, 3172, 73167, -4583, 73167, - 73167, 73167, -4583, -4583, -4583, -4583, -4583, 974, 95021, -4583, - -4583, 73167, 73167, 636, 3219, 3224, 73167, -4583, 1102, 2876, - 11994, 73167, 73167, 73167, 3414, 73167, -4583, -4583, -4583, -4583, - 3358, -4583, -4583, 91535, -4583, 2463, 1245, 3231, 2638, 3373, - -4583, 3476, 3352, -4583, 909, -4583, 73167, 3286, -4583, -4583, - -4583, -4583, 3484, 229, 3487, 229, 73167, 73167, 73167, 73167, - 3292, -4583, -4583, -4583, -4583, 3294, 3415, -4583, 51215, 51215, - 51215, 1979, -4583, -4583, 1129, -4583, -4583, -4583, -4583, -4583, - -4583, 3449, -4583, 2012, -4583, 1583, -4583, -4583, -4583, -4583, - -4583, -4583, 54799, 73167, 12317, 3491, 73167, 73167, 73167, 1706, - -4583, 945, 95021, -4583, 93285, -4583, -4583, 2016, -4583, 3188, - 73167, 3252, 54799, 3230, 3175, 3175, -4583, -4583, 3175, -4583, - -4583, -4583, 3423, 3360, -4583, 309, 3362, 54799, 3242, -4583, - 3264, -4583, -4583, 3265, 1990, 2638, 1716, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, 1010, -4583, -4583, 1375, 301, 2140, 2638, -4583, - 3494, -4583, 3267, -4583, 3268, -4583, -4583, -4583, 3429, 3430, - 3431, 3279, 3280, 3327, 3284, 3287, 3333, -4583, 3291, 3334, - 3295, 3337, 3416, 3304, 229, 95021, 3418, 1129, 3331, 3542, - 229, -4583, 3306, -4583, 3312, -4583, 3648, -4583, 73167, -4583, - 3313, 2152, 2638, -4583, -4583, 54799, 73167, -4583, -4583, -4583, - -4583, -4583, -4583, 95021, 73167, 3485, -4583, -4583, 282, 73167, - 73167, -4583, 3490, 3496, 73167, 3501, -4583, -4583, -4583, -4583, - 231, -4583, -4583, -4583, 3093, 3520, 42263, -4583, 3694, 6388, - 3240, 116, -4583, 51215, 42263, 1879, 2289, 138, 1592, -4583, - 57935, 73167, 57935, -4583, 643, 3352, 73167, 73167, 73167, 3243, - 3238, -4583, -4583, -4583, -4583, 54799, 212, 54799, 2287, -4583, - -4583, 3314, -4583, 73167, 1849, 3710, 3557, -4583, 3175, -4583, - 3672, 2843, 1466, 3396, 1650, 2491, 3612, 2124, 144, 51215, - 3009, -4583, -4583, -4583, -4583, 73167, 73167, 711, 1129, -4583, - 3253, 3249, -4583, 73167, 3565, 73167, 73167, 73167, 73167, 3076, - 3256, 73167, 3258, 95021, 67, 3460, 3464, 2634, 3697, 3589, - 2388, 3009, 3347, 3591, 73167, -4583, 2023, 166, -4583, 1129, - 57935, 92417, 3580, -4583, 5887, -4583, -4583, 1016, 73167, 3568, - -4583, -4583, 2388, -4583, 95021, 2029, -4583, -4583, -4583, 2287, - -4583, -4583, 1698, 1698, 3278, -4583, 3285, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, 3270, -4583, -4583, -4583, 288, 3336, - 229, 3338, 229, -4583, -4583, 73167, -4583, 73167, 53903, 229, - -4583, -4583, 73167, -4583, 3598, -4583, -4583, 3408, 3411, 3417, - 73167, 3020, -4583, 3288, 54799, 1260, -4583, -4583, 3483, -4583, - -4583, 67343, 3406, -4583, -4583, -4583, -4583, 3613, 3614, -4583, - -4583, -4583, 247, -4583, -4583, -4583, 54799, 62863, 448, 54799, - -4583, 3549, 3554, -4583, -4583, 3559, 306, -4583, 3567, -4583, - 3570, 3571, -4583, -4583, -4583, 3315, 12636, 29498, -4583, 3638, - 95021, -4583, 7005, -4583, -4583, -4583, 29498, -4583, -4583, -4583, - -4583, -4583, 29498, -4583, 29498, 3616, -4583, 24006, 3770, 3770, - 3318, 95021, 33683, 33683, 33683, 33683, 1636, 2534, 33683, 33683, - 33683, 33683, 33683, 33683, 33683, 33683, 33683, 34148, 384, -4583, - 3506, 29498, 29498, 3628, 3616, -4583, 95021, 3320, 3075, 3323, - 3324, 29498, -4583, -4583, 2031, 35057, 3328, 51215, -4583, 29498, - 11499, 2036, 3364, 12948, 785, 7317, 1129, 29498, 3427, 3504, - 29498, 2040, 29498, 3631, -4583, -4583, -4583, 3330, -4583, -4583, - 95021, 29498, 3340, 3142, 33683, 33683, 3519, -4583, 3771, 29498, - 26243, -4583, 3518, 3367, 41360, -4583, 24472, 3335, 858, 858, - 858, 858, -4583, 73167, 73167, 73167, 37308, 3633, 3343, 36407, - 72271, 3341, 1364, -4583, 72271, 72719, 72271, -4583, 3345, -4583, - 3348, 785, 29498, 3630, 608, 608, 3518, -4583, 29498, 29498, - 29033, 3349, -4583, 3630, 108, 3351, -4583, -4583, 13029, 3350, - -4583, 3355, -4583, 3353, -4583, 3099, 1042, -4583, 7634, 3532, - -4583, -4583, -4583, 3341, 29963, 3498, -4583, -4583, -4583, 3393, - 2041, -4583, -4583, 3741, 3498, -4583, -4583, 2055, 40910, 3156, - 29498, 785, 2057, 1816, -4583, -4583, 91535, -4583, 3428, 2463, - 2463, 853, 3020, 3668, 853, 7893, -4583, -4583, 37758, 73167, - 73167, -4583, 73167, 2071, 1685, 73167, -4583, 73167, -4583, -4583, - -4583, -4583, 3792, -4583, 73167, -4583, -4583, 3420, 3422, 73167, - 73167, 73167, 73167, 3617, -4583, -4583, 2179, -4583, -4583, 54799, - 73167, -4583, -4583, -4583, 374, 2164, 2638, -4583, 3440, -4583, - -4583, -4583, 3634, -4583, 3781, 3455, 73167, 3691, 73167, 3372, - -4583, 1685, 3674, 1594, 2634, 400, 4603, -4583, 86, -4583, - -4583, 3443, -4583, -4583, 73167, -4583, 73167, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, 3505, -4583, -4583, -4583, -4583, 51663, - -4583, -4583, 73167, -4583, 51215, 42263, 51215, -4583, 1376, 413, - 2267, 2638, 73167, -4583, 3450, -4583, 3458, 3463, 3521, 1035, - 224, 3471, 3472, 3527, 3375, 3397, 3398, -4583, 51215, 42724, - 3551, 73167, 2463, 3401, 3441, 191, 1129, -4583, -4583, 1129, - 2463, 1129, 73167, 73167, 73167, 51215, -4583, 3819, 3493, 73167, - 73167, 73167, 73167, 3459, -4583, 73167, 73167, 3718, 693, 1965, - 54799, 73167, 73167, 54799, 73167, 73167, 73167, 73167, 73167, 73167, - 3730, 73167, -4583, 3807, 3734, 2129, 3776, 3486, 73167, -4583, - 73167, 1129, 2876, 73167, 73167, -4583, -4583, 3425, 3685, 282, - -4583, 3688, 3690, 282, 282, 3693, 282, -4583, -4583, 1592, - -4583, 231, 73167, -4583, 3353, 1396, 1804, -4583, -4583, -4583, - -4583, -4583, -4583, 2942, -4583, -4583, 2160, 73167, -4583, -4583, - -4583, 73167, 3435, 73167, 73167, 33683, -4583, 1707, 793, 1178, - -4583, 3687, 73167, 2800, -4583, -4583, -4583, 3603, 73167, -4583, - -4583, -4583, -4583, -4583, 72, 3256, -4583, 3715, 60623, 2463, - 54799, 54799, 2463, -4583, 95021, 3444, 3009, -4583, 281, 3522, - 54799, 1466, 1616, 91087, 2817, 3473, 3642, 36858, 1010, -4583, - 3442, 3601, -4583, 3448, 3446, -4583, -4583, 73167, 3352, 53903, - 2078, 1716, 3877, 735, 1819, -4583, 61967, 3636, 3256, 3715, - -4583, -4583, -4583, 3841, 3543, -4583, 2388, 73167, 3076, 3543, - 1129, 73167, 2931, -4583, 91535, 29498, 29498, -4583, 3453, -4583, - 3461, 8497, -4583, 3524, 3454, -4583, -4583, -4583, -4583, -4583, - -4583, 3538, 3465, 73167, -4583, 3462, -4583, 3468, -4583, -4583, - -4583, -4583, -4583, -4583, 73167, -4583, 73167, -4583, 229, -4583, - 3584, -4583, 229, 73167, 73167, 73167, 73167, 3020, 306, -4583, - 3759, 54351, -4583, -4583, 2083, 73167, -4583, -4583, -4583, 3831, - 96, 3774, -4583, -4583, 523, 523, 523, 3731, 523, 523, - 523, -4583, 29498, 13029, -4583, 3470, -4583, 13029, 7950, 13029, - 3628, -4583, 2090, 29498, -4583, 622, 622, 622, 3569, 3777, - -4583, 1659, 3474, 622, 622, 622, 415, 415, 221, 221, - 221, 3770, 384, 13029, 13029, -4583, -4583, 3478, -4583, -4583, - -4583, 3075, -4583, 30428, 3635, 3887, -4583, -4583, -4583, 3514, - 3515, 3480, -4583, 29498, 30893, 3479, 95889, 3675, -4583, 1642, - 29498, 29498, 5202, -4583, 4342, 29498, 95021, 2105, 5202, 426, - 29498, 5320, 5354, 29498, 29498, 4648, 8272, 3489, 29498, 91969, - -4583, -4583, -4583, 2106, 29498, 73167, 73167, 73167, 73167, -4583, - -4583, -4583, 72271, 72719, 72271, 3488, 35507, 24923, 1364, 3500, - 73167, -4583, -4583, 3502, 36858, 3744, 3679, -4583, 36858, 3679, - 1797, 3679, 3752, 3596, 41810, -4583, -4583, 3516, -4583, 3711, - -4583, 22608, -38, 13029, 3932, 3812, 29498, 3525, 3529, 3530, - 13029, 13029, 29498, -4583, 1129, 3812, 1129, -4583, -4583, 44969, - -4583, -4583, -4583, -4583, -4583, 3726, 13029, 27638, -4583, 2388, - 1986, 73167, 785, 583, -4583, 3533, 73167, -4583, 3498, 13029, - -4583, 3597, 2117, -4583, -4583, -4583, -4583, -4583, -4583, 3611, - 62415, 3838, -4583, 29498, 2135, -4583, 3572, 3930, 141, 2147, - 2155, 1685, -4583, 2800, -4583, 1478, 3813, 359, -4583, 229, - -4583, 95021, -4583, 73167, 73167, -4583, -4583, -4583, -4583, 73167, - 2586, -4583, -4583, 73167, 73167, 73167, 73167, -4583, 54799, 73167, - -4583, 73167, -4583, 51215, 2289, 1707, 3825, 3749, -4583, 306, - -4583, 1707, 3750, 191, 73167, -4583, -4583, 2107, -4583, 95021, - 229, 229, -4583, -4583, -4583, -4583, -4583, 3552, 3954, 3632, - 73167, 73167, 73167, -4583, 73167, 54799, 73167, 73167, 2287, 2287, - 95021, 3540, -4583, 2287, 2287, 3544, -4583, 54799, 73167, 73167, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, 3625, -4583, 29498, 3952, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, 54799, 73167, 3645, -4583, 3647, -4583, - 1869, -4583, -4583, 73167, 73167, 73167, 73167, 3875, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 73167, -4583, - 73167, -4583, -4583, 1129, 1129, 95021, 229, 229, -4583, -4583, - -4583, -4583, 3816, 282, -4583, 282, 282, -4583, -4583, 282, - -4583, 3573, 391, -4583, 1685, 1571, 3862, -4583, 3874, 29498, - -4583, 1002, 3569, -4583, 3927, 4006, -4583, -4583, -4583, -4583, - 2800, 1849, 3637, 58831, 353, -4583, 3857, 187, 3782, 60623, - 3494, 1639, 3577, 3698, -4583, 2463, 2463, 3639, 73167, 4011, - -4583, -4583, -4583, -4583, -4583, -4583, 54799, 3230, -4583, 3796, - 1009, 3890, 73167, 29498, 3341, -4583, 1691, 3894, -4583, 1129, - -4583, -4583, 3705, 3009, -4583, 2388, 73167, 3794, 60623, 3076, - 2156, -4583, -4583, -4583, 3626, 4005, 2137, -4583, 3494, 3636, - 1227, 73167, -4583, 3629, 4025, -4583, -4583, 3900, 3797, 3599, - -4583, 13029, 13029, 1129, 96323, 5887, 95021, 3907, 73167, 800, - 3878, 229, -4583, 229, 229, -4583, 73167, -4583, 3020, 3020, - 3020, -4583, 3798, -4583, -4583, 3864, -4583, 229, 54351, -4583, - -4583, -4583, -4583, -4583, 523, -4583, -4583, -4583, 13029, -4583, - -4583, -4583, -4583, 8631, 33683, 3910, -4583, 3606, 95021, -4583, - 3607, 2157, 2182, 34607, 3763, -4583, -4583, -4583, 8649, 3660, - 13029, 3714, 3615, 3618, 5202, 5202, 4342, 2184, -4583, 5202, - 29498, 29498, 5202, 5202, 29498, -4583, -4583, 8751, 3802, -4583, - -4583, 8793, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 52111, - 3621, 3257, 72271, 3623, 73167, 1364, 36858, -4583, -4583, 1857, - -4583, 36858, 3882, -4583, 36858, 58831, -4583, 73167, 3627, 73167, - -4583, 84, 31358, 29498, 3663, -4583, -4583, -4583, 3518, -4583, - 3663, -4583, 3641, 73167, 2564, -4583, 851, -4583, -4583, 4010, - 37758, 3969, 29498, -4583, -4583, -4583, -4583, 54351, 3830, 54351, - 1685, 9820, 2800, 37758, 45867, 73167, 73167, 73167, 3785, 2800, - 3637, -4583, -4583, -4583, -4583, -4583, -4583, 3643, -4583, -4583, - -4583, -4583, 3713, -4583, -4583, 30, 3023, -4583, 2188, -4583, - 4064, 3958, -4583, -4583, -4583, -4583, -4583, -4583, 3807, -4583, - -4583, 42263, 54799, 73167, -4583, 3716, -4583, -4583, -4583, -4583, - -4583, 39559, 44969, -4583, 1035, 3646, 3649, 224, -4583, -4583, - -4583, 73167, 9839, 3652, 31, 3023, 73167, 73167, 3653, 3654, - 1654, 1472, 1647, 3020, 3948, -4583, -4583, -4583, -4583, 3807, - -4583, -4583, 282, -4583, -4583, -4583, -4583, 51215, -4583, 2352, - -4583, 1592, 3992, 58831, 4077, 4077, 73167, -4583, 9959, 3858, - -4583, -4583, 3937, 3637, 3889, 3936, -4583, 3661, 73167, 3827, - 3666, 73167, 3659, 3783, 1252, 1252, 73167, 73167, 73167, 2197, - 2388, 2463, 3441, 1466, 3990, 60623, 4034, 3352, 183, -4583, - -4583, 1691, -4583, 1530, 4009, 3717, -4583, 73167, 4109, 3076, - 3256, 73167, 3677, -4583, -4583, 61967, 3876, 2289, 96757, 3464, - 3636, 2137, 3814, -4583, 3815, -4583, 1350, -4583, 2388, 73167, - 73167, 37758, -4583, 95455, -4583, 2199, -4583, -4583, -4583, 3753, - 3146, 3789, 3791, 3686, 73167, 129, -4583, -4583, -4583, -4583, - -4583, 73167, -4583, 448, -4583, -4583, 5436, 33683, 95021, 2201, - 29498, -4583, 29498, -4583, 4102, -4583, -4583, -4583, 766, -4583, - -4583, -4583, 5202, 5202, 5202, -4583, 4103, 3518, -4583, -4583, - 2208, 4122, 32753, 4084, -4583, 73167, 2209, -4583, 29498, 3692, - -4583, -4583, 36858, 1857, 3696, 2210, 73167, 2214, 95021, 3701, - 3699, 45, 3704, 23074, 3689, -4583, -4583, -4583, -4583, -4583, - 13029, 13029, 73167, -4583, 3706, -4583, -4583, -4583, 3748, 73167, - 2215, -4583, 745, 13029, 1260, 853, 448, 3930, 3637, -4583, - 3708, -4583, -4583, -4583, 365, 365, 73167, 3637, -4583, -4583, - 73167, 3804, -4583, -4583, 51215, 3987, -4583, 3761, -4583, 532, - 3023, 73167, 95021, -4583, 74, 4019, -4583, 95021, 95021, -4583, - -4583, -4583, 29498, 3805, -4583, -4583, -4583, 809, 407, -4583, - -4583, 73167, 73167, 73167, 73167, 73167, 229, -4583, 2216, -4583, - 38658, -4583, -4583, 2838, 1129, 2838, 1679, -4583, -4583, 2838, - -4583, 2838, -4583, 3573, 1129, 4077, 1004, -4583, -4583, -4583, - 1538, 3929, 3719, -4583, 1026, 3916, 3808, 3721, -4583, 58831, - 4185, 3256, 3715, 73167, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, 2223, 3352, 4040, 3009, 3629, -4583, 73167, - 3758, -4583, 36858, -4583, -4583, -4583, 2838, -4583, 1644, 3727, - 4049, 3352, 2388, -4583, 3636, 3256, 3715, -4583, -4583, -4583, - 3728, -4583, 3543, 2137, 3464, -4583, -4583, 4131, 3928, 4134, - 3076, -4583, 2931, 2230, -4583, 8497, 96323, 95021, 4075, 3772, - 3773, -4583, -4583, 3790, 73167, -4583, -4583, 3352, -4583, 5436, - 2238, -4583, 2252, 2264, 3892, 3795, -4583, 29498, 1623, 3345, - 52111, 3739, -4583, 33683, 2268, -4583, 3308, 73167, 2272, -4583, - 13029, 73167, -4583, -4583, 29498, -4583, 2307, -4583, -4583, 29498, - 3740, 29498, -4583, 31358, 3737, -4583, 4175, -4583, 2388, -4583, - 3146, 37758, -4583, 3865, -4583, 4050, -4583, 73167, 3787, 44969, - 3099, 3099, 1849, -4583, 1685, -4583, 73167, -4583, 3719, 29498, - -4583, 3837, -4583, -4583, 2309, 759, 3908, 3908, 2321, 2323, - 10331, 73167, -4583, -4583, -4583, -4583, 2328, -4583, -4583, -4583, - -4583, 2335, 3021, 1647, 3021, -4583, 3020, -4583, -4583, 51215, - -4583, 52559, -4583, -4583, -4583, 1129, -4583, 1129, 3963, 73167, - 47211, 1129, 1129, -4583, -4583, -4583, -4583, -4583, 4090, 4033, - -4583, 1716, -4583, -4583, -4583, -4583, 216, -4583, 3961, 3962, - 73167, -4583, 3757, -4583, 2339, 3494, 3888, 3352, -4583, -4583, - 73167, 4201, 4202, -4583, 1141, 73167, 3341, 73167, -4583, -4583, - -4583, 29498, 3938, -4583, 3629, 2137, 3494, 3636, 2289, 38208, - -4583, 3464, 3543, 3972, -4583, 3975, -4583, 3778, 3009, 5887, - -4583, -4583, 972, 4074, 4085, -4583, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, 3075, 31823, 31823, 3784, -4583, -4583, 73167, - 3569, 3779, 32753, 51215, 2345, -4583, 93719, -4583, 2355, 2360, - -4583, 2367, 31358, 2368, -4583, 73167, 3786, -4583, -4583, -4583, - 40910, 54351, 365, 3793, -4583, 3800, -4583, -4583, 3889, 1685, - 3023, -4583, 13029, 73167, 58831, 4204, -4583, -4583, -4583, -4583, - -4583, -4583, -4583, 3023, 3866, 809, -4583, 407, 73167, -4583, - -4583, 2375, -4583, -4583, -4583, 73167, 3442, -4583, 3442, -4583, - -4583, 3925, -4583, 1186, 916, 916, 4143, -4583, 3852, -4583, - -4583, 3801, -4583, 4267, 3926, 73167, -4583, -4583, 1035, 2388, - 60623, 3352, -4583, -4583, 10456, 58831, -4583, 3464, 3636, 2137, - 29498, 2376, -4583, 3930, 141, 3543, -4583, -4583, -4583, 37758, - 3543, -4583, -4583, -4583, 2572, 58831, 58831, 33218, 3941, 194, - 11572, -4583, -4583, -4583, -4583, 2380, 34607, -4583, -4583, -4583, - 73167, 4002, 1020, -4583, 3956, -4583, 2381, -4583, -4583, -4583, - 1468, 448, 3099, 29498, 1685, -4583, 3916, -4583, 3023, -4583, - 73167, -4583, 3817, -4583, -4583, -4583, -4583, 52559, 3442, 3717, - -4583, -4583, 4258, -4583, 1070, -4583, -4583, -4583, -4583, 73167, - 3352, 3540, 3629, -4583, -4583, 3818, 3543, 2137, 3464, 10635, - -4583, 38208, 73167, 73167, -4583, 2382, 3146, -4583, 2330, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, 3810, 3811, 4254, -4583, - -4583, -4583, -4583, -4583, -4583, 3257, -4583, -4583, 33683, 33683, - 4031, -4583, 1020, -4583, 3821, -4583, -4583, -4583, -4583, -4583, - 10862, -4583, -4583, -4583, 809, -4583, 4145, -4583, -4583, -4583, - 3352, -4583, -4583, 50767, -4583, 3464, 3543, 3930, -4583, -4583, - -4583, 3009, -4583, 2174, -4583, -4583, 2190, 2161, 3902, 4130, - 32288, 4220, 3569, 3569, -4583, -4583, 29498, -4583, 1685, 2386, - 3995, -4583, -4583, 2391, -4583, -4583, -4583, -4583, 3543, -4583, - 73167, 3543, -4583, 2330, 3940, 3942, -4583, 73167, 10981, -4583, - 58831, -4583, 50767, -4583, -4583, 3146, -4583, 3868, 3869, 2392, - -4583, 3842, -4583, -4583, 4140, 4146, -4583, 50767, 58831, 58831, - 2396, -4583, -4583, -4583 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint16 yydefact[] = -{ - 1621, 1404, 621, 1490, 1489, 1404, 257, 0, 1492, 0, - 1404, 418, 1096, 0, 0, 0, 0, 621, 1404, 0, - 1621, 0, 0, 0, 0, 0, 1634, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1404, 0, 0, - 1641, 0, 0, 0, 0, 1634, 0, 1494, 0, 0, - 0, 0, 0, 2, 4, 71, 72, 31, 30, 91, - 54, 18, 62, 125, 124, 126, 41, 37, 79, 26, - 28, 38, 42, 64, 66, 44, 55, 103, 63, 24, - 61, 86, 67, 89, 49, 12, 13, 50, 14, 51, - 15, 52, 16, 99, 73, 92, 35, 60, 23, 43, - 69, 70, 5, 45, 81, 77, 11, 56, 57, 59, - 83, 84, 85, 108, 87, 120, 40, 117, 96, 97, - 114, 98, 115, 9, 100, 53, 17, 111, 110, 112, - 80, 46, 82, 68, 90, 109, 27, 113, 19, 20, - 22, 21, 58, 29, 65, 32, 88, 116, 106, 102, - 121, 119, 127, 104, 74, 7, 8, 93, 6, 25, - 48, 10, 34, 33, 47, 39, 123, 36, 1492, 95, - 107, 94, 75, 101, 78, 105, 122, 76, 118, 1594, - 1593, 1643, 1597, 1620, 0, 1609, 1403, 1402, 1388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 620, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1414, 2215, 2230, 2231, 2232, 2233, 2234, - 2235, 2236, 2237, 389, 2238, 2239, 2240, 2241, 2242, 2243, - 2244, 2245, 2246, 2247, 2248, 2512, 2513, 2514, 2515, 2249, - 2250, 2251, 2252, 2253, 2254, 2255, 2516, 2517, 2256, 2257, - 2258, 2259, 2260, 2518, 2261, 2262, 2263, 2264, 2265, 2266, - 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, - 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2519, 2520, 2284, - 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, - 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, - 2305, 2306, 2307, 2308, 2309, 2310, 2521, 2311, 2312, 2313, - 2522, 2314, 2315, 2316, 2523, 2317, 2318, 2319, 2320, 2321, - 2322, 2323, 2324, 2524, 2525, 2325, 2326, 2327, 2328, 2329, - 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, - 2340, 2341, 2526, 2342, 2343, 2344, 2345, 2527, 2528, 2529, - 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2530, 2354, - 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, - 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2531, - 2532, 2374, 2375, 2376, 2533, 2377, 2378, 2379, 2534, 2380, - 2535, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, - 2536, 2390, 2537, 2391, 2392, 2393, 2394, 2395, 2396, 2397, - 2398, 2399, 2400, 2401, 2538, 2402, 2539, 2405, 2403, 2404, - 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2540, - 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, - 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, - 2435, 2541, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, - 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2542, 2452, - 2453, 2454, 2455, 2543, 2456, 2457, 2458, 2459, 2460, 2461, - 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2544, 2469, 2470, - 2471, 2472, 2473, 2474, 2475, 2476, 2545, 2546, 2477, 2478, - 2547, 2479, 2548, 2480, 2481, 2482, 2483, 2484, 2485, 2486, - 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, - 2549, 2550, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, - 2505, 2506, 2507, 2508, 2551, 2552, 2553, 2554, 2555, 2556, - 2557, 2558, 2559, 2560, 2561, 2509, 2510, 2511, 388, 1584, - 2183, 2216, 2217, 1491, 1471, 621, 0, 1391, 417, 1621, - 0, 0, 0, 0, 0, 0, 0, 0, 849, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 176, 0, 0, 0, 0, 443, 442, 0, 0, - 0, 1069, 448, 0, 0, 0, 0, 0, 609, 1533, - 2403, 1531, 1585, 258, 261, 262, 259, 260, 2205, 0, - 1191, 1192, 1194, 0, 0, 0, 1204, 889, 890, 0, - 0, 0, 898, 0, 0, 0, 887, 0, 0, 0, - 903, 900, 0, 904, 901, 884, 902, 891, 0, 883, - 0, 0, 1204, 905, 0, 0, 885, 0, 0, 0, - 0, 1392, 1530, 449, 1621, 0, 1508, 1509, 1510, 1492, - 1499, 1511, 1504, 1506, 1505, 1507, 1503, 2204, 2231, 1009, - 1009, 1009, 1009, 1006, 1007, 1009, 1009, 1009, 2422, 0, - 0, 988, 0, 990, 2206, 1009, 1014, 509, 509, 509, - 0, 1013, 1018, 509, 0, 1385, 1423, 2188, 1633, 0, - 989, 1384, 0, 0, 0, 2477, 1522, 0, 0, 1219, - 1215, 1217, 1218, 1216, 0, 0, 0, 2438, 1396, 240, - 2449, 2545, 2477, 239, 233, 235, 207, 2235, 0, 0, - 1013, 0, 1393, 1394, 971, 1640, 1638, 0, 2170, 2254, - 2269, 2357, 230, 2433, 2439, 2449, 2545, 2477, 2508, 186, - 196, 191, 0, 251, 2449, 2545, 2477, 247, 1414, 0, - 1610, 1740, 2179, 0, 1387, 1386, 1493, 0, 1496, 0, - 2417, 1614, 1617, 1498, 1615, 1606, 0, 0, 1, 1621, - 1487, 1637, 1637, 0, 1637, 0, 1598, 1606, 1601, 1605, - 0, 0, 0, 0, 2215, 2562, 2563, 2564, 2565, 2566, - 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, - 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 0, 0, - 0, 2189, 2216, 2220, 0, 908, 0, 1426, 2184, 1055, - 0, 0, 0, 0, 0, 0, 0, 1105, 1104, 2221, - 2211, 2212, 0, 2209, 2210, 2222, 2223, 2224, 0, 2330, - 0, 0, 0, 2081, 2092, 2093, 2094, 2258, 2314, 2089, - 2090, 2091, 2083, 2084, 2085, 2086, 2087, 2088, 0, 0, - 1186, 2082, 0, 2330, 0, 0, 155, 0, 132, 0, - 0, 2330, 0, 0, 0, 0, 0, 0, 0, 2330, - 0, 0, 0, 0, 0, 155, 2362, 0, 132, 2330, - 0, 0, 1408, 0, 0, 0, 1410, 1413, 1389, 1474, - 0, 2179, 0, 0, 0, 942, 935, 0, 943, 950, - 0, 0, 952, 0, 0, 936, 0, 0, 0, 0, - 955, 956, 0, 957, 937, 958, 938, 959, 939, 960, - 0, 0, 0, 0, 940, 0, 0, 0, 1400, 0, - 1524, 1526, 1525, 1523, 509, 0, 0, 0, 0, 2330, - 0, 0, 132, 1459, 0, 2330, 132, 0, 0, 447, - 446, 132, 2209, 445, 444, 2258, 2314, 0, 1095, 0, - 1343, 132, 2330, 0, 178, 2330, 693, 2330, 1498, 0, - 624, 0, 0, 804, 2362, 132, 0, 0, 0, 0, - 0, 0, 1072, 0, 0, 0, 608, 621, 1534, 1532, - 0, 1195, 232, 231, 1193, 896, 2330, 1137, 345, 345, - 0, 0, 2330, 1445, 2218, 1815, 1844, 1822, 1844, 1844, - 1811, 1811, 2298, 1824, 2330, 1812, 1813, 1849, 0, 1844, - 1811, 1816, 0, 1814, 1852, 1852, 1839, 345, 912, 1796, - 1797, 1798, 1799, 1825, 1826, 1800, 1831, 1832, 1836, 1801, - 1866, 1811, 2219, 897, 0, 888, 2330, 345, 1101, 2330, - 2213, 165, 0, 886, 2258, 2314, 2330, 345, 1188, 0, - 2330, 161, 2330, 345, 2330, 625, 0, 0, 2330, 345, - 2330, 2362, 163, 0, 2330, 345, 906, 2330, 345, 2181, - 2330, 0, 0, 1527, 0, 1501, 2549, 1516, 0, 1512, - 1519, 1515, 1621, 1009, 1008, 0, 1009, 0, 1009, 0, - 1009, 0, 1009, 0, 0, 0, 1009, 2207, 2208, 991, - 0, 1015, 0, 0, 1022, 1021, 1020, 0, 0, 0, - 1023, 0, 1744, 1561, 0, 1382, 234, 185, 0, 246, - 245, 1399, 0, 0, 0, 1072, 1222, 0, 1220, 1211, - 1212, 1395, 238, 236, 0, 0, 0, 0, 0, 0, - 1401, 0, 0, 0, 0, 2192, 2194, 2195, 2095, 2165, - 0, 2513, 2514, 2515, 2154, 0, 2516, 2517, 2518, 2564, - 1997, 1984, 1993, 1998, 1985, 1987, 1994, 2519, 2520, 1932, - 2521, 2522, 2202, 2523, 2524, 2525, 2527, 2528, 2529, 2530, - 1989, 1991, 2531, 2532, 0, 2203, 2534, 2535, 2386, 2537, - 2538, 2540, 2541, 1995, 2543, 2544, 2545, 2546, 2547, 2548, - 2201, 0, 1996, 2550, 2552, 2553, 2554, 2555, 2557, 2558, - 2559, 2560, 0, 0, 0, 2176, 0, 1964, 0, 1804, - 1805, 1827, 1828, 1806, 1833, 1834, 1807, 0, 2175, 1869, - 2046, 1963, 1980, 0, 1969, 1970, 0, 1962, 1958, 1623, - 2171, 0, 1959, 2191, 2193, 2155, 1623, 2169, 199, 253, - 0, 254, 2177, 2449, 187, 229, 201, 228, 202, 200, - 0, 2256, 188, 0, 0, 189, 0, 0, 0, 0, - 250, 248, 0, 1390, 0, 1742, 1741, 2162, 0, 2163, - 2180, 917, 1486, 1484, 1485, 1483, 0, 1480, 1482, 1495, - 1492, 2105, 0, 1616, 0, 0, 0, 1596, 1595, 3, - 1498, 1635, 1636, 0, 0, 0, 0, 0, 0, 0, - 0, 1689, 1651, 1652, 1654, 1686, 1690, 1698, 0, 1602, - 0, 0, 1746, 0, 0, 0, 0, 0, 0, 1136, - 2190, 0, 0, 0, 0, 0, 909, 0, 0, 0, - 1432, 0, 1434, 1435, 1436, 0, 0, 0, 1437, 1438, - 1426, 242, 1444, 1442, 1425, 1427, 1440, 0, 0, 0, - 0, 0, 0, 0, 1451, 0, 169, 170, 0, 637, - 621, 0, 2330, 0, 0, 0, 0, 0, 1144, 1151, - 0, 0, 0, 0, 0, 0, 0, 0, 1145, 1143, - 1146, 244, 1155, 1172, 1175, 0, 1103, 1106, 0, 0, - 0, 0, 0, 1277, 0, 0, 0, 1277, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 269, 281, 340, 600, 0, 0, 0, 603, 0, - 2330, 0, 0, 0, 0, 1190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, - 131, 136, 0, 0, 0, 0, 0, 0, 0, 586, - 599, 0, 0, 0, 0, 0, 596, 0, 0, 132, - 273, 576, 582, 0, 0, 0, 700, 699, 0, 0, - 0, 0, 1359, 1358, 0, 0, 0, 0, 1449, 1448, - 0, 0, 0, 0, 1277, 0, 263, 265, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 381, 382, 0, 0, 0, 136, 0, - 0, 0, 0, 275, 0, 0, 1409, 1406, 1407, 0, - 1412, 0, 1470, 0, 949, 0, 0, 0, 0, 951, - 0, 944, 0, 0, 941, 2258, 2314, 0, 0, 0, - 0, 0, 0, 0, 954, 0, 0, 0, 420, 0, - 0, 801, 0, 0, 0, 0, 0, 0, 812, 0, - 1426, 1458, 0, 0, 0, 630, 0, 2330, 0, 134, - 850, 0, 802, 448, 0, 0, 0, 1167, 1342, 134, - 0, 0, 172, 0, 0, 697, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 742, 741, 0, 0, 0, - 803, 0, 0, 134, 0, 2330, 579, 2330, 0, 509, - 509, 0, 0, 1071, 1074, 0, 0, 0, 0, 1588, - 1590, 1589, 0, 1587, 0, 343, 344, 0, 1178, 799, - 1203, 0, 0, 1843, 1830, 1838, 1837, 0, 1820, 1819, - 1818, 0, 1817, 0, 1844, 1844, 1842, 1821, 1796, 0, - 0, 0, 1848, 0, 1846, 0, 879, 1792, 1788, 0, - 1855, 1856, 1857, 1854, 1867, 1853, 0, 1802, 1858, 1811, - 1808, 899, 0, 0, 1176, 0, 0, 2330, 345, 2330, - 0, 2330, 0, 0, 0, 1180, 345, 0, 0, 1360, - 0, 895, 893, 892, 894, 0, 0, 877, 0, 0, - 0, 2330, 345, 0, 0, 872, 0, 0, 874, 0, - 0, 0, 0, 1621, 0, 218, 219, 217, 1517, 220, - 1518, 1514, 1500, 0, 999, 0, 1003, 0, 994, 0, - 1000, 0, 995, 992, 993, 0, 998, 0, 0, 510, - 512, 0, 0, 2281, 2297, 0, 2320, 2350, 2351, 2439, - 2445, 0, 2472, 2482, 0, 1024, 1050, 1019, 711, 0, - 0, 1571, 1383, 2112, 0, 1621, 0, 0, 0, 0, - 237, 208, 0, 0, 0, 1052, 2438, 1398, 970, 621, - 0, 1960, 0, 1967, 1968, 2153, 0, 0, 0, 0, - 0, 0, 1966, 2120, 0, 0, 0, 0, 0, 1892, - 0, 0, 0, 2133, 0, 2139, 0, 0, 1929, 0, - 0, 0, 0, 0, 0, 0, 0, 1893, 1873, 1874, - 1964, 2105, 0, 1965, 2198, 0, 1866, 2174, 2095, 0, - 2092, 2093, 2094, 0, 0, 0, 2168, 0, 2103, 0, - 0, 1907, 2101, 1909, 0, 0, 0, 0, 2089, 2090, - 2091, 2083, 2084, 2085, 2086, 2087, 2088, 2099, 1889, 0, - 0, 2048, 0, 1888, 0, 0, 1702, 0, 2196, 2156, - 1702, 255, 256, 252, 0, 0, 204, 203, 0, 222, - 226, 227, 198, 225, 0, 221, 206, 2037, 2036, 205, - 197, 194, 192, 209, 211, 212, 195, 193, 249, 0, - 2161, 0, 2225, 2585, 2586, 2587, 2588, 2589, 2590, 2591, - 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, - 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, - 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, - 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, - 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, - 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, - 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, - 2158, 2157, 2186, 2226, 2227, 2228, 2229, 2164, 0, 0, - 345, 1478, 0, 1475, 1699, 0, 1618, 0, 0, 1488, - 1613, 1612, 1644, 1645, 1088, 1611, 1669, 1670, 1665, 0, - 0, 0, 1695, 1693, 1661, 1655, 1660, 1658, 0, 1662, - 1869, 1688, 1600, 1649, 1650, 1653, 1599, 0, 1691, 0, - 1574, 1689, 1654, 1558, 0, 1536, 0, 1747, 0, 0, - 0, 0, 0, 1116, 1118, 0, 1117, 0, 1120, 0, - 1129, 0, 0, 1115, 1134, 0, 1123, 1121, 0, 1447, - 0, 0, 910, 0, 0, 0, 0, 1433, 0, 0, - 2472, 241, 1436, 1441, 1428, 1439, 0, 0, 0, 0, - 0, 1054, 1053, 0, 0, 1076, 0, 0, 0, 1454, - 498, 0, 342, 0, 0, 0, 0, 0, 0, 0, - 0, 797, 794, 0, 0, 793, 0, 635, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 673, 0, - 1277, 0, 705, 0, 1153, 0, 0, 1152, 0, 1156, - 0, 0, 1154, 1149, 1150, 2439, 2449, 2477, 243, 1174, - 0, 1173, 1171, 1098, 0, 1099, 0, 0, 0, 0, - 0, 2307, 2330, 285, 304, 0, 1276, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 0, 0, 330, 329, 0, 0, 0, - 0, 0, 334, 313, 0, 314, 0, 0, 333, 0, - 0, 601, 602, 0, 0, 0, 0, 1277, 0, 277, - 0, 0, 0, 0, 0, 0, 0, 1187, 0, 728, - 0, 0, 0, 0, 0, 1346, 0, 0, 158, 0, - 153, 157, 0, 0, 0, 0, 584, 585, 598, 0, - 589, 590, 587, 591, 592, 0, 0, 0, 0, 0, - 0, 0, 583, 0, 0, 695, 694, 698, 0, 0, - 0, 1355, 0, 1167, 0, 0, 1354, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1224, 1223, 0, - 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, - 0, 0, 0, 0, 160, 715, 0, 714, 0, 154, - 159, 0, 0, 0, 0, 0, 0, 0, 216, 1405, - 1411, 1473, 2187, 1472, 0, 0, 0, 0, 953, 0, - 0, 0, 0, 0, 0, 0, 945, 946, 947, 948, - 0, 0, 0, 0, 0, 395, 0, 0, 0, 2218, - 0, 828, 800, 0, 0, 0, 814, 0, 817, 820, - 0, 1424, 467, 0, 0, 627, 673, 0, 0, 451, - 167, 0, 0, 0, 0, 730, 0, 0, 0, 1341, - 129, 176, 178, 449, 0, 177, 179, 181, 182, 183, - 180, 184, 0, 692, 696, 0, 0, 0, 0, 623, - 0, 0, 0, 0, 0, 743, 747, 746, 750, 748, - 0, 744, 0, 0, 1767, 0, 0, 152, 0, 0, - 574, 578, 0, 0, 0, 0, 451, 550, 356, 2330, - 0, 509, 0, 2330, 0, 1073, 0, 0, 0, 0, - 0, 0, 0, 0, 1586, 345, 1138, 0, 1446, 0, - 0, 0, 345, 1841, 1840, 1793, 1789, 0, 0, 0, - 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1809, 345, 1102, 166, 2214, 0, 881, 0, 0, - 0, 0, 345, 1189, 869, 162, 345, 626, 0, 345, - 164, 0, 0, 0, 618, 345, 907, 345, 2182, 0, - 345, 1529, 2330, 509, 1502, 1513, 996, 1005, 1004, 1002, - 1001, 997, 0, 1016, 0, 508, 0, 0, 0, 1030, - 1031, 0, 0, 1029, 1032, 0, 1034, 1026, 1025, 1035, - 1036, 0, 0, 1052, 709, 0, 0, 0, 0, 1568, - 0, 1566, 0, 1745, 1570, 1559, 1521, 0, 1520, 0, - 567, 0, 0, 1221, 0, 0, 1013, 0, 0, 345, - 1397, 0, 972, 978, 0, 0, 0, 0, 0, 0, - 981, 982, 983, 974, 984, 975, 985, 0, 976, 0, - 0, 0, 0, 2166, 2116, 0, 2117, 0, 0, 2152, - 2148, 0, 0, 0, 0, 0, 2121, 2124, 2125, 2126, - 2123, 2127, 2122, 0, 0, 2128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2541, 0, 0, 0, 0, - 1933, 0, 0, 2076, 0, 2105, 2138, 0, 0, 0, - 0, 0, 0, 2105, 2144, 0, 0, 0, 0, 2035, - 0, 2032, 0, 0, 0, 0, 2165, 0, 0, 2199, - 1870, 1884, 1885, 1886, 1890, 2173, 0, 2167, 0, 0, - 1871, 1898, 0, 2145, 1925, 0, 1930, 1913, 0, 1906, - 0, 1911, 1915, 1894, 0, 1891, 0, 2168, 2104, 0, - 2102, 0, 1881, 1882, 1883, 1875, 1876, 1877, 1878, 1879, - 1880, 1887, 2080, 2078, 2079, 0, 0, 0, 2056, 0, - 0, 1910, 2323, 2357, 0, 1634, 1634, 1634, 1622, 1632, - 2172, 0, 1762, 0, 0, 0, 0, 1972, 0, 2109, - 1643, 2107, 1121, 1762, 2178, 0, 0, 1866, 0, 1743, - 2159, 2162, 915, 916, 914, 1498, 1481, 1477, 1476, 2106, - 1497, 1621, 0, 1086, 1087, 0, 1091, 0, 0, 1663, - 1696, 0, 1687, 0, 1667, 1668, 1659, 1697, 1572, 0, - 1692, 1604, 1603, 0, 1765, 0, 0, 0, 1550, 1538, - 0, 1748, 0, 1702, 1576, 0, 2165, 1700, 1319, 1225, - 1284, 1119, 0, 1811, 1130, 0, 1114, 0, 1113, 1811, - 0, 1131, 0, 1811, 1320, 1226, 1285, 911, 1321, 1227, - 1286, 1322, 1228, 1443, 1431, 1430, 1429, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 778, 2330, 345, 1452, 1323, 0, 1229, 341, 1453, - 1287, 1457, 796, 795, 0, 0, 1288, 0, 636, 0, - 640, 0, 642, 643, 644, 0, 0, 0, 645, 0, - 2258, 2314, 647, 650, 657, 662, 652, 0, 0, 664, - 658, 0, 0, 0, 0, 0, 0, 670, 675, 0, - 0, 0, 0, 0, 0, 0, 1147, 1148, 1324, 1232, - 0, 1289, 1097, 0, 1233, 168, 0, 0, 270, 2330, - 287, 0, 677, 778, 1279, 311, 0, 0, 326, 321, - 322, 320, 2330, 345, 2330, 345, 0, 0, 0, 0, - 0, 323, 318, 319, 315, 0, 0, 328, 2234, 2299, - 2450, 0, 681, 683, 0, 688, 331, 1251, 352, 351, - 350, 0, 335, 0, 357, 360, 332, 309, 312, 310, - 306, 282, 0, 0, 0, 0, 0, 0, 0, 0, - 2185, 0, 0, 1182, 0, 1327, 1290, 0, 1310, 0, - 0, 0, 0, 722, 1347, 1349, 1339, 1239, 1348, 156, - 1266, 145, 0, 0, 141, 0, 0, 0, 0, 135, - 0, 1330, 1240, 0, 0, 274, 577, 588, 593, 1245, - 597, 594, 1300, 595, 1337, 1241, 1333, 1269, 1295, 1340, - 1356, 1242, 1167, 1351, 1353, 0, 1277, 0, 264, 266, - 0, 284, 0, 1243, 0, 1293, 1332, 1268, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1460, 0, 0, - 0, 0, 0, 0, 345, 0, 0, 0, 1279, 2330, - 345, 1331, 0, 1274, 0, 1308, 0, 383, 0, 1267, - 0, 0, 276, 1247, 1302, 0, 0, 214, 213, 215, - 962, 922, 961, 0, 2297, 0, 921, 923, 0, 0, - 0, 924, 0, 0, 0, 0, 920, 918, 919, 394, - 0, 419, 392, 393, 395, 0, 0, 827, 0, 0, - 0, 0, 816, 0, 0, 0, 1450, 0, 132, 634, - 0, 0, 0, 629, 672, 677, 0, 0, 0, 0, - 450, 454, 458, 459, 460, 0, 0, 0, 0, 146, - 133, 0, 858, 0, 509, 0, 732, 1345, 1344, 1166, - 0, 178, 171, 0, 0, 693, 0, 1498, 0, 0, - 356, 811, 809, 808, 810, 0, 0, 0, 832, 807, - 0, 1766, 1768, 0, 0, 0, 0, 0, 0, 567, - 453, 0, 0, 512, 0, 0, 554, 0, 0, 0, - 0, 356, 0, 0, 0, 1108, 0, 1126, 1109, 0, - 0, 0, 0, 1160, 1167, 1161, 1139, 0, 0, 606, - 1591, 1592, 0, 1179, 0, 0, 1810, 1823, 880, 0, - 1851, 1850, 1852, 1852, 0, 1794, 0, 1835, 1860, 1861, - 1862, 1863, 1864, 1865, 0, 1859, 1803, 1177, 345, 0, - 345, 0, 345, 1181, 1361, 0, 878, 0, 0, 345, - 871, 873, 0, 875, 0, 1017, 511, 0, 0, 0, - 0, 1028, 604, 1033, 0, 1045, 1040, 1042, 0, 1046, - 708, 0, 0, 1569, 1562, 1564, 1563, 0, 0, 1560, - 2113, 870, 0, 573, 1213, 1214, 0, 0, 345, 0, - 1047, 0, 0, 979, 973, 0, 0, 977, 0, 980, - 0, 0, 1639, 2114, 2115, 0, 0, 0, 2149, 0, - 0, 2010, 0, 1986, 1988, 2000, 0, 2011, 1971, 2012, - 1990, 1992, 0, 2096, 0, 0, 2001, 0, 1935, 1936, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1951, 1950, 2002, - 2075, 0, 0, 2136, 2137, 2003, 0, 0, 2143, 0, - 0, 0, 2008, 2013, 0, 0, 0, 0, 2019, 0, - 2040, 0, 0, 0, 1961, 2106, 0, 0, 0, 0, - 0, 0, 0, 0, 1931, 1914, 1908, 0, 1912, 1916, - 0, 0, 0, 1902, 0, 0, 1900, 1926, 1896, 0, - 0, 1927, 0, 0, 0, 1979, 0, 0, 1634, 1634, - 1634, 1634, 1631, 0, 0, 0, 0, 2436, 2561, 0, - 1726, 1701, 1703, 1713, 1726, 1731, 1726, 1981, 1760, 1982, - 0, 2179, 0, 1672, 1643, 1643, 1643, 1978, 0, 0, - 0, 0, 1642, 1672, 190, 0, 223, 210, 2161, 0, - 1479, 0, 1646, 0, 2097, 1091, 0, 1648, 0, 0, - 1694, 1656, 1573, 1557, 0, 1555, 1542, 1544, 1543, 0, - 0, 1545, 2165, 0, 1555, 1537, 1581, 0, 0, 1765, - 0, 1580, 0, 1811, 1111, 1112, 0, 1135, 0, 1057, - 1058, 0, 1056, 0, 0, 0, 497, 1075, 0, 0, - 0, 778, 0, 0, 501, 0, 1455, 0, 1338, 1265, - 638, 639, 0, 651, 0, 660, 659, 0, 0, 0, - 0, 0, 0, 0, 646, 666, 610, 667, 669, 0, - 0, 668, 671, 674, 1277, 0, 706, 1253, 0, 1306, - 1141, 1280, 0, 1100, 0, 0, 0, 0, 0, 0, - 467, 305, 0, 0, 0, 365, 0, 289, 297, 363, - 303, 0, 1283, 337, 0, 308, 0, 301, 324, 316, - 325, 317, 336, 338, 0, 685, 686, 684, 680, 0, - 687, 689, 0, 354, 0, 0, 0, 1326, 0, 1277, - 0, 278, 0, 1249, 0, 1304, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1309, 0, 0, - 0, 0, 727, 0, 724, 0, 0, 138, 137, 0, - 144, 0, 0, 0, 0, 0, 1357, 0, 0, 0, - 0, 0, 0, 0, 283, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 384, 347, 0, 835, 0, 0, 0, 386, - 0, 0, 0, 0, 0, 1325, 1234, 0, 0, 0, - 933, 0, 0, 0, 0, 0, 0, 397, 398, 132, - 396, 0, 0, 826, 2386, 2083, 2084, 824, 830, 821, - 823, 825, 822, 0, 829, 778, 0, 0, 813, 818, - 819, 0, 0, 0, 0, 0, 482, 0, 0, 0, - 473, 0, 0, 1167, 466, 469, 470, 0, 0, 630, - 633, 631, 632, 665, 0, 453, 489, 536, 0, 148, - 0, 0, 149, 147, 0, 0, 356, 729, 0, 726, - 0, 174, 449, 0, 697, 0, 0, 0, 1167, 622, - 749, 752, 745, 0, 831, 833, 805, 0, 677, 0, - 0, 579, 0, 509, 1530, 562, 0, 538, 453, 536, - 548, 547, 549, 0, 556, 355, 0, 0, 567, 556, - 0, 0, 1076, 1107, 0, 0, 0, 1157, 1162, 1158, - 0, 0, 1122, 0, 1159, 1140, 1094, 1377, 1378, 1375, - 1376, 0, 0, 0, 1583, 0, 1829, 0, 1847, 1845, - 1790, 1795, 1868, 882, 0, 865, 0, 867, 345, 716, - 0, 619, 345, 0, 0, 0, 0, 1027, 0, 1043, - 0, 0, 1010, 1049, 0, 0, 1567, 1565, 565, 0, - 1052, 0, 1011, 1051, 0, 0, 0, 0, 0, 0, - 0, 2118, 0, 2151, 2147, 0, 1983, 2119, 0, 2131, - 2130, 2076, 0, 0, 1934, 1946, 1947, 1948, 2132, 0, - 1956, 0, 0, 1943, 1944, 1945, 1937, 1938, 1939, 1940, - 1941, 1942, 1949, 2141, 2140, 2134, 2135, 0, 2005, 2006, - 2007, 2142, 2014, 0, 2249, 2041, 2018, 2034, 2033, 0, - 0, 0, 2021, 0, 0, 2030, 0, 2077, 2200, 1872, - 0, 0, 1899, 2146, 1917, 0, 0, 0, 1895, 2096, - 0, 0, 0, 0, 0, 1904, 0, 0, 0, 2059, - 2054, 2055, 2073, 0, 0, 0, 0, 0, 0, 1625, - 1624, 1630, 1726, 1731, 1726, 0, 0, 1606, 0, 1713, - 0, 1725, 1711, 1724, 0, 0, 1737, 1735, 0, 1737, - 0, 1737, 0, 1705, 0, 1727, 1707, 1724, 1709, 0, - 1752, 0, 2180, 1761, 0, 1685, 0, 0, 0, 0, - 2110, 2111, 0, 2108, 1973, 1685, 0, 2160, 1619, 0, - 1647, 1089, 1090, 1664, 1657, 2277, 1763, 0, 1556, 0, - 0, 0, 1547, 1553, 1535, 0, 0, 1577, 1555, 1578, - 1132, 0, 0, 1124, 1063, 1066, 1064, 1062, 1065, 0, - 0, 0, 778, 0, 0, 517, 0, 1083, 1083, 0, - 0, 503, 559, 1167, 781, 0, 0, 0, 779, 345, - 1230, 0, 661, 0, 0, 656, 654, 653, 655, 0, - 611, 1336, 1231, 0, 0, 0, 0, 1142, 0, 0, - 1252, 0, 286, 0, 463, 0, 298, 0, 294, 0, - 1278, 0, 0, 0, 0, 293, 367, 0, 364, 0, - 345, 345, 339, 682, 353, 358, 359, 362, 0, 0, - 0, 0, 0, 1282, 0, 0, 0, 0, 0, 0, - 0, 859, 842, 0, 0, 860, 861, 0, 0, 0, - 1184, 1185, 1183, 1311, 1312, 1317, 1314, 1313, 1316, 1318, - 1315, 0, 1237, 0, 0, 720, 142, 139, 140, 143, - 1263, 1246, 1301, 1352, 0, 0, 0, 1244, 0, 1294, - 0, 1259, 1255, 0, 0, 0, 0, 0, 1335, 1273, - 1299, 1334, 1271, 1297, 1270, 1296, 1272, 1298, 0, 1264, - 0, 1770, 839, 0, 0, 0, 345, 345, 838, 718, - 1248, 1303, 0, 0, 925, 0, 0, 927, 928, 0, - 930, 402, 422, 738, 798, 0, 0, 815, 777, 0, - 471, 0, 477, 480, 0, 0, 484, 485, 483, 472, - 1167, 509, 558, 0, 0, 788, 0, 628, 0, 451, - 0, 486, 0, 0, 455, 151, 150, 0, 0, 0, - 733, 737, 735, 734, 736, 731, 0, 722, 178, 2330, - 0, 0, 0, 0, 560, 1350, 0, 762, 806, 0, - 1769, 712, 0, 356, 575, 0, 0, 0, 451, 567, - 0, 456, 461, 462, 467, 0, 550, 537, 0, 538, - 0, 0, 564, 1422, 0, 568, 570, 0, 0, 0, - 1110, 1127, 1128, 0, 0, 1167, 0, 0, 0, 0, - 613, 345, 1791, 345, 345, 1210, 0, 876, 1039, 1038, - 1037, 605, 0, 1041, 710, 0, 566, 345, 0, 987, - 967, 986, 966, 968, 0, 965, 963, 964, 2150, 1999, - 2009, 2129, 2075, 2106, 0, 0, 1957, 0, 0, 2004, - 2551, 0, 0, 0, 0, 2038, 2039, 2020, 0, 2376, - 2025, 0, 0, 0, 1923, 1921, 1918, 0, 1919, 1903, - 0, 0, 1901, 1897, 0, 1928, 2045, 0, 2061, 2058, - 2072, 2106, 1629, 1628, 1627, 1626, 1712, 1708, 1710, 0, - 2556, 0, 1715, 1722, 0, 1704, 0, 1736, 1732, 0, - 1733, 0, 0, 1734, 0, 0, 1706, 0, 1722, 0, - 1759, 1643, 0, 0, 2050, 1976, 1977, 1974, 1643, 2197, - 2050, 224, 0, 0, 1554, 1539, 0, 1540, 1546, 0, - 0, 0, 0, 1582, 1575, 1125, 1133, 0, 0, 0, - 499, 0, 1167, 0, 0, 0, 1085, 1085, 0, 1167, - 558, 783, 782, 785, 780, 784, 1456, 0, 648, 649, - 663, 1254, 0, 1307, 1261, 0, 1571, 288, 0, 678, - 0, 0, 290, 366, 368, 291, 292, 295, 347, 307, - 300, 0, 0, 0, 1250, 0, 1305, 1257, 1328, 1235, - 1291, 0, 0, 848, 0, 0, 0, 0, 1329, 1236, - 1292, 0, 0, 0, 0, 1571, 0, 0, 0, 0, - 0, 0, 0, 1465, 0, 1281, 346, 837, 836, 347, - 385, 1275, 0, 926, 931, 932, 929, 0, 391, 399, - 423, 132, 0, 0, 1201, 1201, 0, 778, 0, 0, - 468, 481, 0, 558, 516, 0, 474, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 725, 724, 173, 0, 451, 0, 677, 0, 756, - 757, 751, 753, 0, 764, 768, 834, 0, 0, 567, - 453, 0, 0, 1528, 452, 0, 0, 464, 0, 554, - 538, 550, 0, 551, 0, 555, 0, 1415, 0, 0, - 0, 0, 1163, 0, 1169, 0, 1121, 1092, 1164, 0, - 1762, 0, 0, 0, 0, 617, 1202, 866, 868, 717, - 1044, 0, 1048, 345, 969, 2077, 1952, 0, 0, 0, - 0, 2015, 0, 2016, 2043, 2042, 2022, 2026, 0, 2023, - 2024, 1920, 1924, 1922, 1905, 2047, 0, 1643, 2074, 1755, - 0, 1758, 0, 0, 1714, 0, 0, 1716, 0, 0, - 1718, 1720, 0, 0, 0, 0, 0, 0, 2183, 0, - 2276, 2525, 2435, 0, 1671, 1673, 1676, 1678, 1677, 1679, - 1675, 1684, 0, 1608, 0, 1607, 2098, 1764, 0, 0, - 0, 1077, 0, 1579, 1045, 0, 345, 1083, 558, 518, - 2386, 519, 1082, 1084, 1088, 1088, 0, 558, 778, 641, - 0, 0, 271, 676, 0, 0, 299, 349, 361, 0, - 1571, 0, 0, 846, 855, 855, 843, 0, 0, 862, - 1238, 721, 0, 0, 267, 1260, 1256, 0, 0, 1467, - 1468, 0, 0, 0, 0, 0, 345, 934, 0, 425, - 432, 403, 408, 1459, 0, 1459, 0, 405, 409, 1459, - 404, 1459, 401, 402, 0, 1201, 0, 1198, 1197, 776, - 0, 507, 581, 475, 0, 527, 0, 0, 789, 0, - 0, 453, 536, 0, 496, 495, 491, 490, 492, 493, - 494, 488, 487, 0, 677, 852, 356, 1422, 719, 0, - 0, 690, 0, 754, 759, 758, 1459, 763, 0, 0, - 0, 677, 0, 563, 538, 453, 536, 457, 467, 540, - 0, 541, 556, 550, 554, 552, 553, 0, 0, 0, - 567, 1469, 1076, 0, 1168, 0, 0, 0, 0, 0, - 0, 1205, 612, 0, 0, 616, 607, 677, 1012, 1953, - 0, 1954, 0, 0, 0, 2028, 2027, 0, 2064, 1760, - 0, 0, 1754, 0, 0, 1784, 0, 0, 0, 1723, - 1739, 0, 1719, 1717, 0, 1728, 0, 1730, 1973, 0, - 0, 0, 1680, 0, 2049, 2051, 0, 1975, 0, 1552, - 1762, 0, 1549, 0, 1059, 0, 1060, 1085, 522, 0, - 1091, 1091, 509, 778, 500, 1262, 0, 679, 581, 0, - 302, 0, 279, 1258, 0, 0, 857, 857, 0, 0, - 0, 0, 379, 378, 373, 380, 0, 376, 372, 371, - 374, 0, 1461, 0, 1462, 1463, 1466, 387, 400, 0, - 430, 0, 428, 427, 429, 0, 416, 0, 0, 0, - 0, 0, 0, 390, 421, 1196, 1200, 1199, 0, 0, - 476, 0, 478, 513, 514, 515, 0, 479, 523, 524, - 0, 786, 0, 791, 0, 0, 0, 677, 535, 701, - 0, 0, 0, 1416, 0, 0, 561, 0, 765, 766, - 761, 0, 0, 713, 1422, 550, 0, 538, 465, 0, - 438, 554, 556, 0, 1419, 0, 569, 0, 356, 1167, - 1170, 1165, 1381, 0, 0, 615, 614, 707, 1955, 2031, - 2017, 2044, 2029, 2060, 0, 0, 0, 1753, 1756, 0, - 1787, 0, 0, 0, 0, 1773, 0, 1721, 0, 0, - 1729, 0, 0, 0, 1674, 0, 0, 1541, 1551, 1078, - 0, 0, 1088, 0, 778, 0, 1080, 1079, 516, 502, - 1571, 296, 348, 0, 0, 0, 853, 856, 844, 845, - 864, 863, 723, 1571, 0, 0, 369, 0, 0, 426, - 435, 0, 433, 406, 411, 0, 415, 413, 412, 407, - 410, 0, 506, 0, 0, 0, 0, 525, 0, 526, - 557, 0, 790, 0, 0, 0, 703, 851, 0, 0, - 451, 677, 755, 760, 0, 0, 1417, 554, 538, 550, - 0, 0, 542, 1083, 1083, 556, 436, 1420, 1421, 0, - 556, 1093, 1380, 1379, 1621, 0, 0, 2512, 2277, 2484, - 0, 2062, 2065, 2063, 2057, 0, 0, 1785, 1786, 1771, - 0, 0, 1775, 1738, 1751, 1682, 0, 1681, 2052, 2053, - 1762, 345, 1091, 0, 504, 520, 527, 272, 1571, 847, - 0, 268, 0, 377, 375, 1464, 431, 0, 414, 768, - 580, 532, 0, 531, 0, 529, 528, 787, 792, 0, - 677, 841, 1422, 691, 767, 0, 556, 550, 554, 0, - 539, 0, 1085, 1085, 440, 0, 1762, 1363, 1621, 1362, - 1364, 1372, 1369, 1371, 1370, 1368, 1208, 1209, 0, 2069, - 2068, 2067, 2071, 2070, 1757, 0, 1774, 1777, 0, 0, - 0, 1783, 1776, 1778, 0, 1749, 1683, 1548, 1061, 1081, - 0, 778, 280, 854, 0, 434, 0, 530, 534, 533, - 677, 702, 1418, 771, 439, 554, 556, 1083, 543, 545, - 544, 356, 1067, 0, 1373, 1367, 1606, 1593, 0, 0, - 0, 0, 1780, 1781, 1782, 1779, 0, 521, 505, 0, - 0, 704, 773, 0, 769, 772, 774, 775, 556, 437, - 1085, 556, 1365, 1621, 0, 0, 2066, 0, 0, 370, - 0, 739, 0, 441, 546, 1762, 1366, 0, 0, 0, - 1750, 0, 770, 1068, 0, 0, 1772, 771, 0, 0, - 0, 1206, 1207, 740 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -4583, -4583, -4583, 3523, -4583, -862, 333, 2757, -689, -4583, - -4583, -4583, 1267, -4583, -4583, -4583, -4583, 3466, -4583, 1892, - -2354, -4583, -4583, 134, -383, -1279, 112, 3014, 1548, -4583, - -1110, -4583, -4583, -574, 90, -4583, -351, 250, -4583, -4583, - -4583, -4583, -4583, -4583, -4583, -4583, -761, 1996, 2067, 1386, - 4454, -2735, -4583, -4583, -1352, -3085, -4583, 717, -4583, 744, - -4054, -4476, -4583, -909, -738, -4583, -4583, 1985, -4583, -4583, - -4583, 1205, 629, -421, -4583, -4583, -4583, -4583, -4583, -4583, - -4583, -596, -4583, -4583, -833, 151, 35, -2367, -3620, -4583, - -4583, 587, -239, -1406, -4583, -3474, -4583, 127, -2520, -4583, - -4583, -4583, -206, -1361, 1486, -4583, -672, -1126, 1789, -702, - -4583, -86, -4583, -808, -610, -607, -725, -3654, -4127, -4583, - -4583, -4583, -837, -4144, -4389, -3684, -4157, 1497, -4583, 153, - -3024, -3112, 156, 559, -4583, 158, 159, -4583, 584, -532, - -890, -1488, -4583, -721, -4583, -4583, -4583, -2839, -4583, -4583, - -4583, -4583, 53, -4583, -4583, -4583, -4583, 628, -4583, -4583, - -4583, -4583, -4583, -4583, -2619, 1962, 1963, -4583, -3034, -4583, - -860, -4583, 772, -2876, 1411, -4583, -4583, 1197, 3482, 612, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -1588, -4583, -4583, - -4583, -4583, 143, -175, -4583, -4583, -4583, -4583, -4583, -4583, - 160, -4583, 1987, 1198, -4583, -4583, -173, -4583, -4583, -4583, - -4583, -4583, -4583, -778, -921, -900, -4583, -2881, -4583, -4583, - -4583, -143, -4583, -4583, -4583, -4583, -4583, -4583, -770, -4583, - 1263, -3049, -4583, -4583, 1265, -4583, -4583, -4583, -4583, -4583, - -699, -84, 2789, -4583, -314, -504, -4583, -4583, -4583, -83, - -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -1047, -57, - -805, -537, -4583, -4583, -4583, -4583, -4583, -2079, -4583, -4583, - -4583, -4583, -3570, -4583, 4378, 2011, -218, 163, -4583, -22, - 47, 3259, -1124, -2556, 555, -274, -4583, -4583, -4583, -2484, - -4583, -4583, -4583, -4583, -3406, 167, -4583, 3250, -4583, -3681, - -4396, -3432, -3941, -4291, -4450, -3396, -4583, -4583, -4583, -4583, - -783, -186, -4583, -4583, -1387, 2310, -1867, -4583, -2004, 610, - 1585, 3452, -2642, -129, 2750, -3688, -668, -3148, -4583, -4583, - -2213, -407, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -578, 2687, -199, -4583, -4583, 3803, -4583, -4196, -4583, 3769, - -4583, -4583, -4583, -4583, 2604, 2607, -4583, 2610, -4583, -4583, - -1396, 1348, -4583, -4583, -4583, -4583, 799, -4583, -4583, -4583, - -4583, -4583, -4583, -4583, 1251, 786, -4583, -4583, -4583, -4583, - -4583, -691, -849, -4583, -4583, 169, -4583, -4583, -4583, -4583, - 2270, -864, -693, 3667, 170, -4582, -4583, -4583, -1073, -4583, - 3045, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -2578, -4583, -4583, -4181, -4583, -4583, -4583, -4583, -4583, 2394, - 2397, 51, -50, -4583, -4583, -937, -4583, -544, -4583, 2677, - -4583, -4583, -4583, -4583, -1693, 171, 660, -4583, 3, -4583, - -4583, 29, -4583, 425, -4583, -4583, -3300, 6, -4583, -4583, - -4583, -4583, -4275, -4583, 7, -593, 950, -2703, -4583, 172, - 15, -4583, -4583, 59, 322, -36, -42, -19, 1, 124, - 3132, -4583, 3163, -4583, 27, 1898, -4583, -4583, -793, -163, - -4583, 1668, -617, 2369, 3103, 3149, -4583, 1664, -4583, -4583, - 1672, -4583, 996, -571, -411, -4583, -4583, -4583, -4583, 458, - -603, 2383, -4583, 3154, -4583, -4583, -4583, -1792, -2737, -3323, - 1028, -3318, -3245, 502, 488, -1277, -184, 49, -729, 3155, - -4583, -4583, 1034, -379, -4583, -4583, -377, -2720, 977, -4583, - -4213, -2233, 1039, -810, -662, -4583, -743, -4583, -541, 1022, - 2790, -1024, -4583, -4583, -985, 13038, -4583, -4583, -4583, 15135, - 15285, -4583, -4583, 15708, 16135, -4583, -856, 16558, 6393, -997, - -1734, -329, 13711, -1723, -1165, -2555, -4583, -3438, -2470, -4583, - -4583, -4583, -137, 1097, 370, -4583, -4237, -4583, -4583, 77, - -4583, -546, -4583, -545, -4583, -4583, -4583, -525, -4174, 2581, - -4583, -4583, -4583, -164, -4583, 17359, -2649, -4583, -730, -2650, - -2663, -3319, -1759, -4583, -4583, -4583, -4583, -4583, -4583, -4583, - -1469, -3171, -515, 1773, -4583, -4583, 1866, -4583, -4583, -4583, - -1246, 1723, -734, -2541, 1780, -4583, -731, 2587, -739, 7322, - -635, 6280, -472, -2173, -1210, -1514, -4583, 1580, -4583, 13, - -16, -8, -145, 140, -543, 2720, 13145, -587, -1298, 9508, - 12811, 12541, -3032 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 52, 53, 54, 55, 1491, 2410, 2280, 3159, 3160, - 56, 57, 1487, 58, 59, 60, 61, 1410, 62, 993, - 1632, 2425, 63, 2121, 760, 761, 762, 1942, 1943, 2359, - 1944, 1932, 1296, 1769, 1431, 734, 735, 1392, 1432, 65, - 66, 1290, 1923, 67, 68, 69, 1461, 1537, 1462, 1404, - 1678, 4181, 4900, 2972, 2248, 3208, 2973, 2974, 3578, 3579, - 3654, 4915, 4921, 4916, 4917, 70, 1553, 1554, 71, 72, - 3124, 3120, 3699, 4518, 4519, 4752, 570, 2387, 4521, 4522, - 4738, 4739, 4933, 5071, 5072, 2426, 1624, 3202, 3787, 3150, - 4270, 3151, 4271, 3152, 4272, 3136, 3734, 3735, 4215, 3736, - 3153, 4231, 4781, 3154, 2140, 4950, 2467, 1791, 1789, 4765, - 4044, 4045, 5044, 4957, 4958, 4959, 5175, 4233, 4276, 4277, - 4810, 5111, 5112, 3206, 3794, 4282, 4536, 2861, 74, 666, - 1658, 3303, 667, 2470, 605, 668, 2427, 79, 2460, 4952, - 2461, 1512, 2289, 4918, 3283, 80, 1017, 3545, 4605, 4835, - 4836, 81, 222, 82, 1640, 83, 84, 2405, 3143, 85, - 2157, 2878, 86, 87, 2907, 2908, 2909, 88, 3570, 4458, - 1463, 2961, 2962, 2963, 2964, 3600, 89, 1635, 2434, 2435, - 90, 91, 92, 93, 2576, 2577, 94, 2346, 95, 96, - 97, 98, 3634, 4145, 4247, 3003, 3166, 3759, 4245, 99, - 2428, 1648, 2450, 2451, 4257, 4561, 4562, 4563, 4796, 5102, - 4565, 4798, 4980, 4800, 5273, 5274, 4527, 3524, 4058, 101, - 4224, 4225, 4964, 102, 2155, 103, 104, 105, 1608, 2397, - 2398, 3708, 1601, 2390, 2391, 3773, 3774, 106, 3077, 107, - 4121, 4122, 606, 4971, 4906, 5058, 108, 109, 4125, 4126, - 110, 111, 112, 113, 114, 658, 659, 660, 1105, 1106, - 2833, 1057, 115, 2040, 116, 956, 957, 3101, 117, 1183, - 2620, 2621, 4320, 118, 691, 1124, 1125, 2429, 120, 700, - 2596, 702, 1804, 3285, 3286, 3852, 121, 122, 2573, 2599, - 123, 1397, 2131, 2132, 4039, 2430, 607, 1664, 2474, 2856, - 4680, 4681, 4436, 4694, 2786, 3477, 125, 608, 1436, 2204, - 1077, 1078, 2477, 3216, 2100, 2101, 2102, 3811, 2103, 3218, - 2104, 1369, 2105, 1027, 1028, 3224, 3225, 3226, 3807, 3814, - 2419, 4594, 4595, 126, 1434, 2202, 127, 128, 129, 1475, - 878, 1087, 1088, 130, 620, 621, 131, 4757, 132, 1031, - 133, 4603, 134, 135, 725, 726, 1167, 1168, 136, 137, - 2218, 3581, 138, 139, 140, 2997, 2998, 4137, 141, 142, - 1627, 1628, 143, 144, 3042, 3043, 145, 146, 147, 5199, - 5253, 5254, 5255, 3821, 5124, 5201, 1155, 149, 150, 151, - 188, 916, 917, 918, 2431, 4587, 153, 154, 1393, 1394, - 1395, 1396, 2126, 155, 156, 157, 158, 159, 160, 161, - 1612, 162, 163, 4731, 164, 165, 1572, 166, 1326, 1327, - 167, 168, 564, 778, 1330, 1336, 169, 670, 1118, 1119, - 1120, 1771, 170, 1163, 959, 671, 1113, 172, 672, 2084, - 2808, 3489, 3490, 3491, 3494, 4421, 4018, 673, 2804, 175, - 1811, 2582, 2585, 2800, 674, 2813, 2814, 2815, 3497, 675, - 693, 1020, 2483, 676, 1257, 180, 181, 182, 787, 781, - 782, 184, 1916, 2748, 709, 1343, 747, 748, 795, 3462, - 2052, 2053, 2075, 2076, 1352, 1353, 2065, 2067, 2788, 2068, - 2796, 2058, 3995, 4664, 4665, 4666, 4667, 4668, 4669, 4404, - 2071, 2072, 1355, 1356, 1357, 2080, 185, 2752, 3441, 3442, - 3443, 3971, 3972, 3986, 3982, 4388, 4650, 3444, 1153, 1363, - 4396, 5225, 3445, 4639, 4640, 4852, 3990, 3453, 3485, 3190, - 3191, 3192, 3446, 5024, 5025, 5222, 5223, 4854, 4855, 2106, - 1708, 1059, 1258, 1060, 1720, 1259, 1692, 1062, 1260, 1261, - 1262, 1065, 1263, 1264, 1265, 1068, 1684, 1266, 1267, 1702, - 1717, 1718, 1331, 4856, 1269, 1270, 1271, 3448, 1272, 3925, - 4352, 4341, 2680, 2681, 1939, 3921, 3386, 1911, 2738, 4673, - 4874, 4875, 3425, 3950, 4368, 4637, 5016, 5131, 5132, 1273, - 1274, 1275, 2735, 1907, 881, 1276, 3710, 1909, 2674, 2760, - 2761, 1814, 1834, 2627, 2643, 2644, 2654, 3345, 2662, 2667, - 3373, 3374, 2675, 2704, 1277, 2629, 2630, 3329, 1836, 1278, - 1319, 1951, 1370, 1831, 2699, 1286, 1279, 1280, 1805, 771, - 4646, 1109, 837, 2989, 2031, 920, 706, 1281, 1282, 1283, - 1284, 1468, 852, 1080, 1081, 560, 831, 854, 2965, 561, - 562, 833, 2036 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 622, 183, 1511, 173, 879, 1358, 174, 176, 987, 707, - 1768, 1291, 845, 695, 739, 786, 1788, 1287, 796, 695, - 2032, 183, 558, 2302, 1108, 1144, 1145, 1146, 1698, 612, - 1376, 1150, 1023, 1516, 694, 1728, 2213, 2139, 1320, 880, - 694, 3308, 3149, 3463, 1321, 1021, 1558, 604, 2205, 1332, - 2758, 2225, 3571, 1570, 1824, 1688, 1689, 2361, 1704, 178, - 828, 1637, 887, 2455, 1305, 1697, 3483, 3551, 3172, 701, - 657, 669, 773, 2626, 2037, 907, 3815, 2032, 1121, 4010, - 4047, 2214, 3595, 740, 3597, 3720, 4046, 3785, 2991, 3289, - 64, 3937, 3456, 770, 3712, 3769, 4084, 2826, 2828, 1091, - 3040, 3074, 3712, 3454, 3455, 972, 2242, 4437, 4041, 3496, - 1610, 3743, 1102, 1437, 1615, 4286, 3968, 1099, 790, 1619, - 1115, 4289, 2588, 4295, 2037, 4230, 3799, 3985, 2763, 1629, - 2659, 1510, 4579, 834, 836, 4279, 3475, 840, 2323, 1536, - 1467, 798, 2689, 1653, 4643, 3394, 4695, 733, 2198, 1563, - 2475, 73, 4581, 75, 767, 894, 76, 1033, 77, 78, - 100, 2531, 904, 119, 799, 2112, 1023, 124, 4278, 148, - 152, 171, 177, 3782, 784, 759, 4543, 1433, 1351, 1298, - 3502, 4702, 1685, 1686, 4655, 2070, 4657, 1320, 2327, 2328, - 4812, 2037, 1354, 1696, 4024, 4823, 3447, -1844, -2190, 3983, - 677, 3988, 3905, 2339, -1811, 4973, -2316, 677, -2352, -2246, - 1649, 1675, 4435, -2375, 568, -2406, 2038, 1622, 677, -2218, - 4724, 912, 1688, 1689, 4580, -1824, 2226, -2218, -2218, 1406, - -1849, 4905, 3351, 1650, 2825, 1126, 618, 2334, 1675, 3162, - 1704, 1675, 1697, 3139, 4890, 4891, -2219, 2216, 3447, -2567, - -1839, 2216, 4920, 2216, -2219, -2219, 1398, -2567, -2567, 2452, - 1179, 2321, 3306, 618, 900, 2598, 1719, 618, 1879, 618, - 618, 2751, 2416, -2189, 1809, 3501, 1606, 3805, 3717, 2697, - 3293, 3449, 3737, 4698, 618, 1675, 2556, 618, 3106, 3552, - 3107, 1914, 1598, -2319, 3111, 4322, 4323, 1885, 4325, 4326, - 4327, 3122, 677, 3116, 3117, 3118, 3767, 4240, 3097, 2399, - 1464, 677, 2243, 3327, 618, 677, 913, 2123, -2187, 1130, - 4733, 4734, 179, -1852, 2151, 1675, 2408, 2872, 1887, 4758, - 1157, 3790, 5084, 3449, 2152, 1322, 1141, 1407, 2145, 853, - 1685, 1686, 179, -1852, 1675, 4792, 3260, 888, 3262, 3140, - 5210, 3858, 1929, 1464, 618, 2464, 793, 4228, 677, 914, - 908, 1156, 3, 4, 1399, 1148, 2739, 1696, 683, 1295, - 683, 683, 1675, 785, 2216, 683, 4763, 683, 4833, 2465, - 4701, 4723, 1761, 3750, 3649, 4538, 3086, 3251, 4123, 2056, - 1921, 684, 1548, 684, 684, 3351, 4870, 4241, 684, 1770, - 684, 2783, 5106, 2049, -132, 1879, 1347, 3068, 3297, -132, - 3575, 1464, 618, 2946, 2697, 915, 677, 2356, 2299, 1300, - -2373, 1879, 880, 2216, 843, 4992, 3351, 1317, 2453, -2190, - 2357, 1318, 2561, 2217, 1885, 4902, 4097, 4814, 3069, 981, - 1925, 1570, -2081, 4866, 2732, 991, 1879, 2216, 1149, -2081, - 1885, 2733, -2100, 4813, 2039, 683, 2358, 1922, 1005, -2100, - 1930, 2244, 1127, 1129, 1131, 1887, 2557, 1133, 1134, 1135, - 2578, 2947, 4444, 2286, 880, 1885, 1349, 1140, 684, 4242, - 1676, 1887, 2153, 2057, 3298, 2784, 2216, 5211, 2245, 776, - 3294, 1714, 4124, 1323, 1549, 1324, 3859, 4539, 1675, 2558, - 2740, 1726, 1726, 1142, 1675, 797, 1887, 1676, 2409, -424, - 1676, 2246, 1845, 2247, 1529, 1400, 1023, 1317, 970, 2227, - 2154, 1318, 973, 1873, 3141, 3552, 1872, 3123, 618, 1752, - 2228, 4888, 2229, 1023, 2241, 2305, 998, 2401, 3100, 4229, - 4893, 1474, 3751, 1003, 4834, 1528, 1736, 977, 2241, 2340, - 958, 1919, 1047, 1401, 1676, 3460, 4106, 1408, 1915, 4945, - 1810, 2466, 2911, 1074, 3738, 3637, 2322, 1726, 2986, 1149, - 183, 1149, 960, 3712, 1931, 961, 962, 2341, 1772, 1569, - 3498, 1607, 1933, 1607, 1402, 2623, 2695, 1945, 1945, 2454, - 2230, 5164, 5152, 2579, 1676, 1023, 5042, 4140, 3697, 3698, - 5242, 1810, 5115, 1022, 622, 1806, 1317, 2628, 1828, 3142, - 1318, 2335, 1683, 1676, 2698, 2045, 1409, 4357, 955, 1122, - 2873, 1816, 3806, 2417, 4243, 5085, 1677, 2037, 963, 786, - 1188, 3098, 569, 3351, 2089, 1359, 1825, -2568, -2568, -2568, - 4051, 1676, 1607, 2146, 2297, 3985, -2373, 2300, 1403, 689, - 690, 4385, 2182, 1705, 2045, 4389, 1723, 2307, 1317, -1844, - -2190, 2552, 1318, 4914, 3245, 183, 1687, 689, 690, 4991, - 1123, 4239, 1128, 2037, 1132, 2562, -2316, 4985, -2352, -2246, - 1136, -2218, 3517, -2375, 3366, -2406, 4285, 1691, 2660, 3650, - 4244, 694, -1849, 694, 2184, 694, 2678, 844, 1114, 1161, - 2047, 694, 1137, 1138, 2192, 2360, 2535, 1139, -2219, 4331, - 2259, -2567, -1839, 1023, -2373, 2275, 1117, 4376, 5186, 4378, - 1906, 1023, 1023, 5195, 982, 1180, 1927, -2373, 4424, 1875, - 982, 1917, 2766, 1288, 2511, -2189, 1297, 1022, 1299, 1587, - 1734, 2081, 5068, 982, 4261, 798, 4887, 2560, 1582, 3414, - 1699, 689, 690, 1325, 4614, 2082, 2570, 2316, 1152, 1754, - 689, 690, 4073, -2319, 1465, 1466, 2201, 1676, 799, 2787, - 1699, 1700, 4445, 1676, 880, 5157, -2081, 2287, 2734, 4319, - 2290, 2291, 1580, 2580, 2912, 1701, -2100, 1757, 5161, 1542, - 183, 1700, 173, 777, 1575, 174, 176, 4003, 1481, 5246, - 4577, 4110, 4520, 2581, 2930, 1703, 5135, 1465, 1466, 3547, - 1472, 1473, 1307, 1464, 618, 2032, 2902, 3761, 677, 3782, - 978, 3504, 1152, 3505, 733, 1158, 1160, 2446, 1328, 3646, - 1489, 1543, 2392, 618, 4204, 3295, 1075, 3072, 2493, 2494, - 2978, 5107, 3361, 3362, 3363, 3364, 3365, 3366, 178, 4419, - 4164, 1362, 2717, 1490, 2886, 563, 5278, 2830, -132, -132, - 5109, 2987, 2370, 4203, 4032, 1465, 1466, 1380, 1901, 1902, - 1903, 1904, 1905, 1906, 694, 3363, 3364, 3365, 3366, 64, - 793, 3447, 4901, 5232, 3447, 1294, 2758, 2758, 2758, 1302, - 3357, 179, 2903, 1413, 1347, 1903, 1904, 1905, 1906, 1595, - 2267, 5249, 5250, 2837, 1333, 1773, 1482, 4216, 1775, 2447, - 1777, 5094, 1779, 1726, 1781, 863, 2265, 2193, 1785, 3851, - 565, 2198, 864, 865, 866, 2968, 613, 1391, 1620, 1621, - 2133, 3572, 5108, 3348, 3349, 2315, 3691, 3692, 3368, 2512, - 73, 4641, 75, 2975, 1567, 76, 1381, 77, 78, 100, - 4804, 4022, 119, 5208, 1662, -1811, 124, 2490, 148, 152, - 171, 177, 4601, 3447, 1349, 5188, 3449, 3619, 2999, 3449, - 1380, 1521, 5171, 2302, 4217, 3398, 3399, 2969, 5261, 2274, - 4138, 5187, 4047, 1641, 4300, 2718, 179, 785, 2468, 5294, - 2719, 719, 1544, 2572, 1741, 4047, 4266, 4882, 1382, 5122, - 2636, 4046, 618, 1726, 704, 1350, 2135, 2194, 733, 1158, - 2376, 3816, 1522, 2563, 4165, 4845, 2845, 3044, 4034, 4619, - 4267, 3499, 1523, 5218, 2136, 1642, 2720, 1730, 1732, 3690, - 4254, 5055, -1811, 3466, 1726, 2979, 1742, 3073, 1308, 3573, - 619, 2133, 4946, 5245, 4912, 3296, 2266, 4913, 3449, 1381, - 4420, 3548, 2377, 2831, 3539, 1581, 2832, 1483, 2906, 2134, - 3011, 2567, 2568, 4647, 4644, 4914, 2970, 3722, 4651, 1607, - 1668, 4653, 1710, 1698, 720, 3620, -2568, -2568, -2568, 3996, - 3361, 3362, 3363, 3364, 3365, 3366, 5286, 1022, 3471, 3217, - 3011, 1545, 1383, 1406, 800, 1484, 3540, 791, 1607, 5056, - 2622, 1382, 2625, 2637, 1022, 3137, 1309, 2448, 2632, 797, - 3155, 179, 1568, 3725, 2646, 2647, 2648, 2135, 4966, 1175, - 2449, 2537, 3709, 183, 2664, 2666, 1485, 2887, 4990, 2676, - 3709, 5219, 3817, 694, 618, 2136, 1873, 4999, 1812, 3012, - 1774, 4997, 1776, 1711, 1778, 2122, 1780, 3815, 1782, 1783, - 1784, 4965, 4987, 4047, 4883, 1786, 2492, 4573, 2559, 792, - 2721, 4430, 2564, 2137, 2566, 5172, 1022, 2569, 3727, 3012, - 1524, 5123, 5192, 5193, 2638, 3473, 801, 1121, 4568, 1454, - 2847, 5238, 2514, 1669, 2805, 4986, 1643, 4947, 4602, 4953, - 614, 4035, 3013, -1811, 2525, 1383, 4011, 1743, 4036, 4118, - 186, 1407, 4268, 1712, 1525, 2530, 1713, 4459, 1526, 2529, - 2488, 1710, 3447, 2378, 3818, 4846, 1486, 3812, 2798, 2544, - 786, 1497, 3013, 721, 1547, 2971, 3621, 3487, 1645, 793, - 1548, 4037, 3574, 3575, 2639, 708, 1670, 2640, 2147, 1527, - 1498, 5173, 1874, 187, 1388, 615, 1389, 3014, 1384, 1646, - 1317, 1876, 4038, 4529, 1318, 1385, 4012, 3541, 3730, 3576, - 2848, 3488, 722, 723, 3622, 1918, 5174, 1465, 1466, 2138, - 2464, 5220, 3156, 2652, 2137, 2902, 5221, 3014, 4774, 4885, - 2043, 616, 1711, 617, 1022, 1644, 1386, 1935, 1936, 1499, - 35, 4218, 1022, 1022, 2465, 3623, 1744, 3449, 2413, 4840, - 3731, 2050, 2051, 4119, 2055, 3058, 5280, 1714, 5116, 2574, - 4954, 3059, 2379, 912, 880, 3732, 694, 1387, 566, -155, - 2799, 694, 694, 4423, 799, 799, 5239, 799, 4775, 4862, - 2916, 1671, 1549, 4003, 4988, 719, 4776, 912, 2641, 4408, - 2797, 4401, 1712, 4582, 3015, 1713, 2705, 1388, 2706, 1389, - -2209, 2903, 2806, 724, -155, 2059, 3542, 4583, 1476, 3819, - 794, 869, 870, 871, 4777, 872, 873, 874, 875, 876, - 877, 2707, -672, 1500, 3015, 745, 4317, -1811, 2148, 3384, - 2138, -155, 4955, 1672, 3001, 3391, -1811, 802, 1687, -1811, - 1375, 2575, -1811, 4904, 2060, 3026, 2236, 1390, 4908, 4909, - 2251, 717, 4266, 1647, 4120, 677, 3733, 4817, 913, 1362, - 2414, 186, 4641, 3060, 1715, 4818, 40, 3157, 720, 3447, - 2917, 1501, 4708, 3447, 1502, 3820, 4267, 1477, 694, 3198, - 4778, 5194, 913, 1716, 4219, 2301, 5196, 2141, 694, 3712, - 2418, 4779, 1013, 4047, 179, 2642, 1714, 1341, 2928, 5039, - 44, 914, 2061, 3002, 187, 3975, 3248, 4803, 744, 3016, - 1454, 1489, 3158, 2177, 2149, 2142, 1504, 3017, 2292, 3258, - 3018, 1513, 2708, 1673, 746, 914, 4555, 2709, 1137, 1138, - 2059, 3645, 2710, 1550, 1490, 2329, 2330, 2331, 2332, 3016, - 48, 2660, 2660, 663, 5046, 5047, 2660, 3017, 2062, 2306, - 3018, 1937, 5244, 49, 3449, 2311, 718, 915, 3449, 1514, - 1506, 694, 1833, 14, 694, 694, 3249, 2906, 2243, 2060, - 4222, 1551, 4584, 4791, 3025, 3564, 50, 3976, 2371, 2372, - 1507, 915, 1842, 2660, 2660, 2523, 3563, 2513, 2302, 1023, - 2807, 3004, 3005, 1938, 4260, 3008, 1342, 19, 2486, 2396, - 1509, 5113, 1552, 1715, 2063, 4255, 2423, 3048, 3977, 1304, - 3067, 2127, 5279, 1858, 3061, 4460, 3871, 721, 3027, 880, - 880, 4464, 2128, 3978, 768, 4819, 3030, 1391, 1870, 3033, - 2318, 2902, 1391, 3979, 2441, 2442, 2443, 2444, 3070, 2129, - 3092, 3019, 4441, 2758, 5293, 3565, 694, 5295, 3, 4, - 2293, 3709, 3062, 2294, 779, 2143, 722, 723, 5100, 3980, - 4194, 803, 1515, 1014, 4197, 4198, 2711, 4200, 2433, 3071, - 1714, 4780, 2438, 2062, 2324, 4136, 2712, 2589, 40, 3885, - 3886, 3887, 3888, 3063, 2424, 3893, 3894, 3895, 3896, 3897, - 3898, 3899, 3900, 3901, 3902, 1391, 4760, 2842, 3169, 1391, - 3651, 4054, 1058, 1879, 5170, 3647, 4108, 2903, 663, 4442, - 3019, 4303, 44, 4304, 2925, 797, 797, 2244, 797, 1015, - 583, 3181, 3182, 3183, 3184, 1016, 1058, 1308, 14, 2063, - 3840, 4047, 583, 3189, 896, 1385, 3064, 880, 3168, 2904, - 3850, 3941, 3942, 3981, 2245, 4948, 2347, 2536, 3403, 788, - 3404, 4972, 48, 2540, 2491, 2142, 1538, 3178, 4996, 2233, - 1726, 897, 19, 1887, 2499, 49, 2500, 2246, 32, 2247, - 35, 2859, 2504, 3405, 3065, 3648, 4109, 2905, 585, 2510, - 4055, 3851, 2130, 4707, 3523, 4523, 4213, 2278, 50, 741, - 585, 2234, 2281, 2243, 1539, 1309, 40, 2277, 1540, -572, - 4969, 1497, 51, 5113, 2241, 3066, 5229, 1365, 1175, 3235, - 4214, 3889, 4613, 3890, 183, 4832, 4524, 4983, 1377, 829, - 1498, 2422, 4086, 1371, 4736, 1541, 40, 2860, 846, 2439, - 44, 4544, 789, 583, 4335, -1606, 4336, 4056, 2546, 4057, - 2547, 2347, 2548, 4732, 2549, 1366, 2550, -1606, 4054, 3211, - 2551, 2595, -1606, 5007, 3009, 2344, 1378, 1372, 2252, 2350, - 44, 1373, 841, 677, -449, 1117, 183, 4894, 960, 1499, - 48, 961, 962, 2906, 3447, 4545, 1367, 2645, 4897, 3406, - 2700, 3447, 186, 49, 3407, 2399, 3447, 1379, 3470, 3447, - 4440, 585, 1374, 2243, 3282, 4087, 1006, -1606, 2511, 2353, - 48, 3815, 3791, 2634, 2635, 3795, 50, 2948, 2855, 2583, - 2649, 2650, 4542, 4794, 839, 3447, 2515, -1606, 2292, 2594, - 51, 4684, 1607, 4686, 963, 187, 3880, 4055, 3447, 1007, - 4828, 3044, 2619, 32, 596, 2859, 597, 3891, 2688, 2347, - 4448, 4449, 2244, 1023, 4553, 3452, 596, 3892, 597, 1494, - 51, 4572, 4729, 1500, 862, 3906, 3229, 4795, -1606, 3449, - 1623, 40, 1008, 5120, -1076, 2949, 3449, -1606, 2767, 2245, - 4337, 3449, 602, 2233, 3449, 4730, -449, 3281, 3350, 5014, - 4938, 861, 1518, 5096, 4056, 4939, 4057, 1495, 4559, 3498, - 3378, 3520, 2246, 1757, 2247, 44, 1023, 902, 3975, 2913, - 3449, 1501, 1578, 576, 1502, 2234, 4560, 5015, 1009, 3269, - 3976, 1006, 2420, 3449, -1606, 2301, 911, 3461, 3408, 2892, - 1519, -1605, 3401, 2354, 965, 1593, -1606, 4978, 3409, 2241, - 2888, -1606, 683, -1605, 4940, 48, 2457, 3616, -1605, 664, - 1604, 3977, 2244, 1699, 1007, 5006, 1504, 596, 49, 597, - 2293, 1520, 4212, 2294, 880, 684, 4391, 4533, 4052, 4979, - 3427, 2355, 5049, 968, 1700, 2221, 3979, 2222, 3503, 2245, - 3976, 50, 1489, 1623, 971, 3617, -1606, 3763, 1701, 1347, - 2880, 4498, 692, -1605, 1348, 665, 3447, 583, 692, 3605, - 1506, 974, 2246, 1699, 2247, 1490, -1606, 1945, -1606, 3553, - 2789, 3977, 3606, -1605, 4499, 4976, 3618, -1642, -1070, 3770, - 1507, 2924, -1642, 2243, 1700, 3186, 3978, 5183, 988, 3780, - 3187, 694, 3464, 1009, 3580, 2223, 3979, 4729, 1703, 2241, - 1509, 1001, 4597, 1188, 4729, 179, 3351, -1606, 4096, 3917, - 3352, 3353, 3354, 1328, -1605, 585, -1606, 3447, 1025, 1349, - 4730, 712, 3980, -1605, 2882, 2883, 2849, 4730, 2852, 1651, - 1022, 1749, -571, 2894, 4513, 2896, 4514, 4515, 2846, 2900, - 4516, 3449, 4166, 4648, 2758, 1757, 3981, -1642, 713, 2758, - 1699, 1652, 714, 1750, 3010, 2758, 3412, 179, 1010, 694, - 1350, 3173, 1497, 2809, 4167, 3721, 5241, 791, 2623, 3556, - 3187, 1700, 966, 4183, 3377, 1492, 3379, 3380, 4074, -1643, - 5038, 1498, 4082, 5154, -1643, 4935, 5281, 4937, -1642, 2988, - 2216, 4941, 1555, 4942, 4184, 1559, 3250, 3252, 3253, 1299, - 2224, 1023, 3449, 3861, 1813, 1011, 3981, 2660, 2660, 2660, - 2660, 4262, 1012, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 3089, 829, 1763, 5271, 1030, 1764, 792, - 1499, 2703, 2244, 4111, 846, 3512, 1694, 1695, 4977, 4688, - 3915, 2243, 4088, 3611, 4095, 1082, 4697, -1606, 2910, -1643, - 2818, 1073, 1818, 2682, -1605, 1819, 2685, 3447, 3028, 2245, - 3766, 3031, 3323, 2794, 2795, 3828, 3829, 2045, 2834, 2660, - 2660, 596, 3508, 597, 2838, 2623, 1083, 1687, 2841, 2113, - 3355, 3324, 2246, 599, 2247, 4416, 3325, 1096, 4649, 2243, - -1643, -1666, -1666, 4091, 601, 223, 3739, 1623, 4031, 793, - 567, 3356, 1089, 1687, 2865, 2113, 1112, 4288, 661, 1317, - 1023, 1103, 1337, 1318, 1500, 3447, 677, 2041, 2044, 2241, - 2042, 2045, 694, 3530, 3509, 3510, 2975, 742, 4107, 3105, - 694, 2541, 2553, 694, 2045, 2554, 1143, 3112, 3113, 1152, - 1152, 1151, 3449, 1152, 3115, 3084, 3447, 3644, 2918, 40, - 2999, 2555, 2586, 2780, 2554, 2587, 1757, 979, 3131, 980, - 1165, 2817, 1501, 3357, 2045, 1502, 982, 3044, 3102, 2922, - 5268, 3102, 2923, 3102, 3722, 2993, 2301, 3102, 2994, 3127, - 3723, 3718, 3128, 44, 3458, 3459, 3102, 3102, 3102, 1147, - 2244, 2243, 3724, 1154, 3132, 4785, 1162, 3133, 2966, 3177, - 3449, 3236, 3275, 2243, 2045, 2554, 3322, 1504, 3331, 2045, - 983, 2045, 984, 4049, 4050, 2243, 3337, 2245, 1166, 2045, - 3725, 4741, 3726, 48, 2995, 3707, 179, 3200, 1172, 1164, - 794, 3449, 3006, 3707, 1174, 1175, 49, 3217, 2244, 982, - 2246, 3315, 2247, 3021, 3180, 4273, 3338, 4593, 1176, 2045, - 5227, 1506, 3339, 4737, 3447, 2045, 1177, 3370, 3383, 50, - 2045, 2045, 1173, 3034, 4742, 2245, 3388, 3598, 3036, 3389, - 3599, 1507, 3039, 51, 1181, 3727, 3212, 2241, 3174, 3632, - 1687, 3259, 1375, 3261, 1022, 3056, 1152, 3709, 2246, 4743, - 2247, 1509, 3311, 1832, 3640, 51, 5252, 3652, 3081, 1178, - 3603, 3728, 1182, 3604, 3627, 5151, 4744, 3628, 982, 3684, - 4745, 3803, 3756, 2481, 3804, 2482, 2263, 3826, 2243, 3912, - 2045, 4075, 3913, 829, 3922, 2241, 1184, 3923, 3933, 4020, - 4746, 2045, 4021, 4747, 846, 3244, 3246, 1022, 2511, 3449, - 2244, 3254, 3199, 4025, 1306, 4030, 4026, 4748, 2832, 3358, - 3359, 3360, 2244, 3361, 3362, 3363, 3364, 3365, 3366, 4053, - 3729, 1687, 2554, 2113, 2244, 3730, 4263, 2245, -2473, 2554, - 880, 4314, 1303, 1023, 1810, 1023, 1310, 1312, 4332, 2245, - 2660, 2045, 3854, 3320, 3447, 1311, 3740, 3204, 3742, 3205, - 2246, 2245, 2247, 4358, 4370, 5303, 2587, 2045, 694, 3428, - 1316, 3429, 2246, 28, 2247, 4426, 1329, 3731, 2832, 4824, - 4205, 1335, 4206, 1665, 2246, 3867, 2247, 1334, 2365, 3430, - 1570, 3431, 3732, 4432, 4112, 1345, 4433, 2241, 4749, 4096, - 1337, 4616, 3749, 2380, 3752, 4438, 4750, 3882, 2554, 2241, - 1360, 3474, 786, 4439, 4574, 4621, 2554, 4575, 4622, 1338, - 1361, 2241, 1878, 1023, 2402, 1879, 3447, 1364, -2473, -2568, - -2568, -2568, 5282, 1368, 5283, 3847, 3809, 2244, 1375, 3449, - 4623, 3911, 4631, 2045, 1411, 2587, 4703, 4751, 1337, 4704, - -1594, 3997, 3998, 3999, 1885, 4786, 786, 4825, 2554, 4841, - 4826, 1886, 2587, 40, 2245, 4457, 4849, 4859, 4865, 4850, - 1757, 3777, 4867, 4880, 4928, 3777, 4881, 4929, -2473, 2479, - 1344, 4968, 1346, 3733, 1924, 1887, 3953, 2246, 4998, 2247, - -2473, 4881, 4390, 2487, 4393, -2473, 5008, 44, 1435, 2587, - -2473, 3287, -2220, 4089, 1438, 1058, -2473, 3992, 1440, -2473, - 5009, 3449, -2473, 3389, 1441, -2475, 1474, 2501, 1479, 3301, - 1478, 40, 5010, 4572, 2241, 2045, 5021, 3287, 1480, 5022, - 5027, 4070, 703, 1757, 705, 1486, 2037, 48, 711, 1488, - -2473, 1493, 1022, 1496, 728, 736, 703, 1531, 743, 1530, - 49, 736, 736, 3860, 772, 44, 775, 2528, 1058, 1546, - -2473, 786, 3433, 3434, 3435, 5030, 2623, 5054, 3777, 3465, - 2587, 694, 183, 50, 960, 179, 5121, 961, 962, 5060, - 1556, 5061, 2587, -2489, 2587, 1557, 5064, 51, -1374, 5065, - -1374, 4381, 1560, 5066, 1888, 48, 5067, 5092, 1565, 1889, - 5093, -2473, 1566, 5139, -2473, -2475, 5140, 1571, 49, 1573, - -2473, 1574, 4189, 5143, 5197, 28, 1757, 1579, 5144, 1576, - 3535, 2045, 3536, 3537, 3538, 5145, 5147, 4201, 2045, 2045, - 963, 50, 1583, 5166, 5190, 1892, 5167, 5191, 5214, 5226, - 5251, 3777, 4873, 4881, 5289, 51, 1584, 5065, 1590, 5291, - 5306, 1022, 5292, 5140, 5313, -2475, 1591, 5292, 1594, 1597, - 1600, 1603, 1605, 1611, -2473, 1616, 1614, -2475, 1607, 1625, - 1626, 1630, -2475, -2489, 3707, 1631, -175, -2475, 1633, 1634, - 1636, 1638, 1894, -2475, 4839, 1639, -2475, 1654, 1661, -2475, - 1663, 2690, 4353, 1667, 205, 1674, 1680, 1681, 4135, 830, - 835, 835, 838, 1682, 835, 40, 1683, 1687, 847, 1691, - 772, 1690, 1693, 882, 1707, 708, 1709, -2475, 1721, 1722, - 772, 1725, 835, -2489, 1726, 772, 1733, 1737, 1745, 835, - 1738, 772, 1740, 1746, 1748, -2489, 1753, -2475, 3601, 44, - -2489, -2473, 1756, 1759, 1760, -2489, 1787, 1762, 1815, 4593, - 1820, -2489, 3474, 1829, -2489, 1830, -1815, -2489, 1878, 1822, - 3474, 1879, 1823, -1822, 1837, -2473, 1838, -2473, -2473, 1896, - 1870, 1839, 1840, 1841, 51, -1812, 1843, 1844, -2475, 48, - 1845, -2475, -1813, 1846, 1847, -2489, 1848, -2475, 1850, 3638, - 1885, 1851, 49, 1852, 1853, -1816, 1854, -2568, -1814, 1855, - 1856, 1857, 1859, -2473, 3528, -2489, -2473, -2473, -2473, 1912, - 1910, 1860, 1861, 1862, 1870, 50, 1863, 1914, 1864, 1865, - 1866, 1887, 1928, 1940, 1948, 1915, 1924, 2048, 1348, 5198, - 2077, 2703, 1350, 2079, 2088, 2092, 2090, 3688, 2091, 2108, - 2109, -2475, 2110, 2111, 2114, 2113, -2489, 3421, 2115, -2489, - 2118, 3675, 2117, 2116, 712, -2489, 2119, 2125, 2144, 2150, - 2156, 2179, 2186, 3440, 2187, 1897, 2183, 2185, -2568, -2568, - -2568, 2188, 1901, 1902, 1903, 1904, 1905, 1906, 2190, 2191, - 2206, 2207, 3102, 2208, 2219, 2220, 2231, 2235, 3400, 2237, - 2238, 2241, 708, 179, 3700, 2239, 2240, 2249, 2253, 2250, - 3711, 2255, 4549, 2270, 2254, 2260, 2261, 1878, 3711, -2489, - 1879, 2271, 3607, 2264, 1022, 3440, 1022, 4311, -2475, 785, - 5020, 2272, 2276, 2273, 2288, 2279, 2283, 2284, 2295, 694, - -2568, 2296, 2298, 2303, 2304, -2568, 1454, 694, 2313, 1885, - 1878, 2317, -2475, 1879, -2475, -2475, -2568, 2308, 2309, 2310, - 2312, 2314, 2319, 2320, 2325, 2336, 2326, 2337, 2338, 2660, - 708, 3753, 3775, 2348, 2342, 2352, 2364, 2343, 4624, 2366, - 1887, -2568, 1885, 4342, 2367, 2884, 2368, 2369, 2373, -2568, - -2475, 2374, 2385, -2475, -2475, -2475, -2489, 2899, 2375, 2381, - 2382, 2383, 2384, 3808, 1022, 2386, 2393, 4235, 4236, 4308, - 4309, 4310, 2394, 1887, 4273, 3842, 2388, 2395, 2400, 4740, - -2489, 2403, -2489, -2489, 2404, 2407, 578, 2412, 1894, 2421, - 2418, 2432, 2436, 2437, 2440, 3685, 2445, 2932, 2463, 1515, - 2456, 2459, 2462, 2478, 2480, 2472, 2484, 3411, 2495, 2497, - 2476, 2498, 3827, 2516, 829, 2489, 2505, 829, -2489, 3947, - 2506, -2489, -2489, -2489, 2518, 2519, 2520, 2502, 2503, 3798, - 2507, 2521, 2508, 2509, 2532, 2533, 2565, 2571, 2584, 2597, - 3940, 2628, 2677, 2683, 921, 1879, 4414, 2633, 2696, -2568, - 772, 3824, 830, 2702, -2568, 835, 2687, 838, 2714, 835, - 2716, 2737, 846, 846, 2736, 2751, 882, 2765, 792, 2769, - 2768, 994, 2772, 835, 2773, -2568, 1188, 2771, 2781, 3351, - 835, 2782, -2568, 3352, 3353, 3354, 2790, -2568, 2791, 694, - -2568, 2792, 2793, 2803, 2810, 2821, 2822, 2824, 2850, 2864, - 1152, 2853, 2855, 5023, 830, 2857, 2869, 2858, 2879, 838, - 2874, 2875, 2877, 2881, 847, 2897, 2898, 2889, 882, 2901, - 2914, 2920, 2885, -2568, 2915, 1300, 1304, 2931, 4463, 2936, - 2937, 2950, 2955, 2982, 2977, 2956, 846, 1894, 835, 2983, - 3928, 2992, 3020, 3076, 786, 3088, 2985, 3099, 3000, 3103, - 3108, 3114, 3095, 3096, 3109, 3110, 3119, 3125, 3126, 3134, - 3146, 3147, 3121, 786, 3161, 3165, 3167, 3176, 2347, 3179, - 1894, -2568, 3188, 3193, 3185, 3163, 3130, 3194, 1901, 1902, - 1903, 1904, 1905, 1906, 3849, 3195, 3196, 3197, 3201, 772, - 3210, 4412, 736, 736, 736, 1188, 3209, 3213, 3351, 3207, - 3214, 3474, 3352, 3353, 3354, 772, 3227, 1171, 3228, 3863, - 3232, 3230, 2660, 3231, 3234, 3955, 3956, 3957, 3958, 3930, - 3240, 3237, 3241, 3239, -2568, 3474, 3255, 1285, 1285, 1714, - 772, 736, 3265, 3267, 3268, 736, 3242, 2660, 3272, 3243, - 3274, 3247, 4065, 4066, 4067, 4068, 3256, 3277, 3278, 772, - 3279, 1757, 1754, 772, 3280, 5262, 5263, -2568, 3288, 1285, - 1723, 2598, 3290, 3291, 3292, 3299, 3302, 3307, 1149, 3309, - 772, 3316, 1188, 3319, 3356, 3351, 3314, 3313, 3333, 3352, - 3353, 3354, 772, 4558, 3317, 3334, 3335, 1878, 4500, 4501, - 1879, 4503, 179, 3336, 3347, 4455, 3931, 3340, 3341, 3343, - -2073, 3346, 3369, 3385, 3397, 3375, 2045, 3402, 3419, 4534, - 3382, 3476, 3424, 3480, 179, 3482, 3493, 3396, 3410, 1885, - -2568, 3506, 3486, 3420, 772, 3422, -2568, 1901, 1902, 1903, - 1904, 1905, 1906, 3452, 3423, 3511, 3357, 1188, 3426, 3513, - 3351, 3457, 772, 3484, 3352, 3353, 3354, 835, 835, 3711, - 1887, 3522, 3514, -2568, 3518, 2302, 3525, 3500, 3519, 3527, - 1901, 1902, 1903, 1904, 1905, 1906, 3534, 3549, 4659, 3300, - 3560, 4494, 3550, 4139, 3562, 4674, 736, 736, 694, 3566, - 4147, 3568, 3569, 4148, 3567, 4149, 3312, 4146, 3583, 3584, - 4932, 4740, 3586, 3356, 3592, 3594, 3593, 3602, 3612, 3318, - 3631, 3633, 694, 830, 3629, 3635, 1810, 3636, 694, 3639, - 3641, 3653, 3642, 3643, 847, 3655, 3656, 3943, 882, 4753, - 4207, 3657, 3658, 3659, 3662, 4188, 4210, 3660, 3661, 3674, - 3665, 3667, 3663, 3102, 3669, 3664, 835, 3102, 3102, 3666, - 3102, 3676, 3670, 3668, 4922, 3700, 4924, 3678, 2660, 4071, - 2334, 3689, 3671, 3702, 3680, 3357, 3693, 3713, 772, -2568, - 3681, 3683, 3694, 4551, -2568, 835, 835, 3696, 3716, 3748, - 3356, 3747, 3754, 3757, 3758, 3760, 3765, 3762, 1137, 1138, - 3777, 3776, 3779, 3786, 3792, 5138, 3789, 772, 772, 772, - 3793, 835, 3796, 830, 3797, 3800, 3801, 3813, 3832, 829, - -2568, 3823, 1870, 3843, 3830, 3844, 846, 3834, 3845, 3836, - 3707, 3831, 3853, 3855, 3846, 3864, 3856, 3857, 3962, 3848, - 3865, 3967, 3358, 3359, 3360, 3866, 3361, 3362, 3363, 3364, - 3365, 3366, 3357, 3868, 3874, 3356, 3869, 3870, 3372, 1878, - 1832, 3351, 1879, -2072, 4287, 3371, 3924, 1894, 3908, 3883, - 793, 3909, 3910, 3935, 3948, 3965, 3916, 3936, 3989, 4014, - 4168, 3994, 835, 4171, 835, 835, 3954, 4783, 3939, 4019, - 3966, 1885, 3974, 5076, 5078, 3991, 4007, 4004, -2568, 4006, - 4009, 5070, 4023, 4008, 4017, 4040, 4033, 4061, 4076, 4069, - 4077, 4063, 1285, 4064, 4078, 4079, 4081, 3357, 4114, 4083, - 4085, 4099, 1887, 4130, 4848, 880, 4115, 4102, 4321, 4321, - 4321, 4116, 4321, 4321, 4321, 4283, 4691, 2660, 4117, 4127, - 4128, 694, 1790, 1790, 4129, 4131, 4132, 772, 4143, 703, - 4141, 4144, 4154, 4155, -2568, 4163, 4160, 4178, 4180, 4182, - 4090, 3358, 3359, 3360, 4185, 3361, 3362, 3363, 3364, 3365, - 3366, 4193, 4843, 4192, 4195, 1821, 4196, 4220, 772, 4199, - 4248, 1827, 4209, 3532, 4714, 4223, 4232, 4252, 4253, 3944, - 4246, 4238, 4265, 2554, 1285, 4256, 4258, 4259, 4280, 2347, - 3543, 4275, 4296, 4281, 4293, 4297, 4298, 4312, 4294, 4709, - 4301, 4306, 4299, 1872, 4302, 4316, 4318, 4324, 4329, 4334, - 4344, 4338, 4345, 4346, 1285, 5277, 4339, 4343, 4347, 5168, - 4351, -2568, -2074, 4386, 4387, 4379, -2568, 4366, 3358, 3359, - 3360, 4394, 3361, 3362, 3363, 3364, 3365, 3366, 4382, 4384, - -2568, 5215, 1285, 1285, 1285, 4395, 1285, 1901, 1902, 1903, - 1904, 1905, 1906, 4399, 4400, 4402, 4403, 4413, 4409, 4422, - 4411, 3287, -2568, 4405, 5277, 4425, 1285, 4406, 4407, 4427, - 4429, 4435, 4434, 4443, 4461, 4462, 4465, 4472, 4471, 5277, - 4858, 4484, 4473, 4491, 3624, 4487, 3626, 4493, 4428, 4934, - 4504, 4858, 4512, 3358, 3359, 3360, 4525, 3361, 3362, 3363, - 3364, 3365, 3366, 4496, 772, 4497, 4526, 1285, 4531, 1894, - 4517, 4532, 4540, 4541, 4546, 4547, 4550, 4554, 4535, 4556, - 4548, 4564, 4567, 2660, 2660, 4571, 4576, 5070, 4578, 4586, - 4588, 5083, 4589, 4590, 4599, 1285, 4591, 4610, 4611, 1285, - 1285, 4604, 4617, 4618, 4620, 4625, 4627, 4628, 4415, 4417, - 772, 772, 2087, 4629, 1285, 4466, 4630, 4636, 4642, 3440, - 4645, 4652, 4672, 4679, 4656, 4682, 4685, 3673, 4696, 4705, - 4926, 4700, 694, 4706, 4711, 4735, 694, 736, 4502, 4676, - 4754, 4699, 4756, 4717, 4219, 4762, 4718, 5013, 179, 4722, - 4727, 4728, 4764, 4506, 4766, 3687, -2568, 4772, 4767, 4769, - 4773, 4481, 4482, 4770, 5029, 4789, 4485, 4486, 4790, 5031, - 4797, 5033, 2189, 4799, 4802, 4806, 4808, 736, 4815, 4816, - 4829, 4827, 4830, 1023, 4831, 4844, 4847, 4851, 4857, 4861, - 4873, 772, 2215, 4864, 4878, 4898, 4869, 4507, 4508, 4868, - 772, 4871, 4899, 835, 4877, 4889, 4905, 3102, 4949, 3102, - 3102, 829, 4956, 3102, 4896, 4911, 4951, 846, 4960, 4961, - 4963, 4970, 4975, 4982, 4981, 4989, 4993, 4994, 882, 4995, - 772, 5002, 5003, 5004, 5011, 5005, 5019, 5032, 5035, 4570, - 5036, 5012, 5041, 772, 5043, 5040, 772, 5053, 5057, 5075, - 5048, 5081, -2568, 5082, 5091, 2932, 5028, 5086, 5088, 1901, - 1902, 1903, 1904, 1905, 1906, 5095, 5098, 5099, 5125, 1878, - 5105, 5117, 1879, 4566, 5118, 5119, 1880, 1881, 1882, 5126, - 5136, 772, 5134, 3949, 5162, 4478, 3825, 5160, 5169, 5084, - 5153, 5085, 835, 835, 835, 835, 772, 4488, 5155, 5177, - 880, 1885, 5178, 5179, 5209, 5217, 5224, 4592, 1886, 5237, - 772, 5258, 5259, 4715, 5234, 5243, 5260, 5264, 5266, 5270, - 5284, 2362, 5285, 772, 5287, 4713, 3440, 5290, 5304, 5305, - 3440, 5297, 1887, 5298, 5308, 835, 835, 3474, 4321, 5307, - 5309, 5045, 1339, 3170, 3049, 2349, 3467, 2981, 880, 1439, - 3577, 4105, 4098, 1947, 4569, 5269, 835, 5163, 3087, 3701, - 4202, 3450, 4943, 5069, 5235, 4234, 4807, 4755, 4530, 4782, - 3516, 179, 179, 3276, 1023, 772, 5156, 4689, 5231, 5089, - 1878, 5087, 3875, 1879, 5248, 3521, 4284, 1880, 1881, 1882, - 5176, 835, 835, 835, 835, 4264, 5051, 4227, 3144, 3145, - 3596, 4103, 3764, 3884, 772, 1517, 4251, 4788, 4692, 4693, - 4693, 772, 1885, 3450, 2362, 3772, 5310, 3135, 4793, 1886, - 4552, 5236, 5302, 3714, 830, 4768, 3719, 830, 3907, 5181, - 4716, 4907, 838, 5059, 4719, 710, 4313, 1285, 1807, 2411, - 4884, 1888, 2827, 1887, 4290, 1817, 1889, 3507, 1602, 5000, - 2522, 1097, 2591, 1024, 2485, 2592, 3677, 4133, 4677, 2593, - 3768, 4153, 1813, 5200, 5296, 1313, 2776, 1890, 1891, 2124, - 2777, 2545, 847, 847, 4269, 4678, 4418, 5150, 4027, 1920, - 3472, 2802, 1892, 882, 882, 3711, 2074, 3481, 3287, 4005, - 3479, 5146, 5034, 4410, 2801, 4377, 2046, 3969, 4392, 4863, - 3963, 5018, 5017, 835, 835, 3964, 4028, 5299, 5216, 5265, - 835, 5137, 772, 4842, 694, 1893, 3918, 4675, 2496, 5148, - 5133, 5149, 3417, 2741, 3469, 3328, 3102, 3415, 0, 1894, - 0, 2073, 2750, 0, 0, 0, 0, 1790, 0, 2078, - 0, 0, 0, 0, 835, 2083, 847, 0, 0, 0, - 772, 772, 1888, 835, 0, 0, 0, 1889, 0, 0, - 772, 0, 4821, 0, 0, 0, 0, 772, 0, 0, - 0, 0, 703, 703, 0, 0, 2600, 0, -2568, -2568, - 1285, 0, 1285, 0, 0, 0, 0, 1285, 1285, 0, - 0, 0, 0, 1892, 1285, 1285, 1285, 3287, 0, 3287, - 1285, 882, 1285, 1285, 1285, 1285, 1285, 1285, 0, 1285, - 1023, 1285, 1285, 0, 0, 1285, 1896, 179, 0, 0, - 0, 0, 0, 0, 0, 0, -2568, 0, 0, 0, - 1285, 1285, 1285, 1285, 0, 0, 0, 835, 1285, 4787, - 1894, 0, 1285, 0, 0, 1285, 0, 0, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 786, 1285, 0, - 0, 0, 0, 0, 772, 1285, 0, 1285, 1497, 0, - 0, 0, 0, 0, 772, 0, 0, 4820, 0, 0, - 0, 0, 0, 0, 0, 0, 1878, 1498, 0, 1879, - 0, 0, 0, 0, 1414, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4923, 0, 4925, 0, 0, - 0, 0, 1897, 0, 0, 1898, 1899, 1900, 1885, 1901, - 1902, 1903, 1904, 1905, 1906, -2568, 0, 1896, 1415, 0, - 0, 0, 0, 0, 0, 0, 1499, 4090, 3440, 0, - 0, 4919, 4919, 3440, 2147, 0, 3440, 0, 0, 1887, - 0, 0, 0, 0, 1022, 880, 0, 0, 4936, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4944, 0, - 694, 694, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 694, 0, 0, 0, 1417, 0, 0, - 0, 772, 0, 772, 0, 1285, 0, 0, 0, 4091, - 0, 0, 0, 0, 0, 0, 4237, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4364, 0, 0, 0, - 1500, 1418, 0, 1897, 0, 0, 1898, 1899, 1900, 772, - 1901, 1902, 1903, 1904, 1905, 1906, 2811, 0, 2816, 0, - 0, 0, 0, 0, 2601, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1419, 0, -2568, 0, - 4693, 0, 0, -2568, 0, 0, 0, 0, 1501, 838, - 0, 1502, 0, 0, 0, 0, 0, 0, 703, 0, - 703, 0, 2301, 0, 4092, 0, 0, 0, 0, 0, - 1420, 4984, 2602, 0, 0, 0, 0, 1285, 5159, -2568, - 0, 0, 179, 0, 0, 0, 0, 0, 0, 830, - 0, 835, 835, 1504, 0, 0, 847, 0, 882, 0, - 835, 1422, 835, 0, 2603, 0, 835, 1385, 0, 772, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 179, 0, 0, 5097, 0, 1022, 1894, 2604, 0, 5073, - 736, 5074, 0, 0, 0, 5079, 5080, 1506, 2605, 0, - 2215, 0, 35, 0, 2199, 0, 1424, 5037, 2934, 5206, - 5207, 0, 0, 1425, 0, 2945, 0, 1507, 2606, 0, - 0, 1426, 0, 2607, 772, 0, 0, 0, 1813, 2200, - 0, 0, 0, 0, 0, 0, 0, 1509, 0, 4093, - 0, 1428, 4094, 0, 3440, 772, 0, 0, 0, 1429, - 2990, 2990, 0, 0, 0, 1870, 0, 0, 0, 0, - 772, 772, 0, 0, 772, 0, 838, 736, 0, 0, - 0, 0, 2608, -2568, 0, 0, 0, 0, 0, 0, - 0, 5165, 0, 0, 0, 835, 3450, 0, 835, 3450, - 0, 0, 0, 2609, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1430, 0, 0, 0, 0, 772, - 772, 0, 0, 0, 0, 0, 0, 0, 0, 4919, - 0, 4919, 0, 0, 3075, 0, 3078, 3080, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2241, 0, 0, 0, 0, 0, 0, 0, 694, 0, - 694, 0, 0, 4447, 0, 0, 835, 0, 0, 0, - 205, 0, 0, 2610, 835, 835, 0, 0, 3450, -2568, - 0, 835, 0, 5233, 0, 0, 1901, 1902, 1903, 1904, - 1905, 1906, 0, 1285, 3440, 835, 0, 0, 0, 2611, - 0, 4468, 5311, 5312, 179, 183, 2612, 5202, 0, 2215, - 5203, 5204, 2990, 2613, 772, 4693, 4693, 772, 0, 0, - 0, 3171, 4483, 0, 703, 0, 0, 0, 0, 0, - 0, 1022, 0, 0, 0, 0, 835, 1285, 5182, 0, - 0, 2614, 5257, 0, 0, 0, 2615, 0, 0, 2616, - 0, 0, 0, 0, 3075, 0, 0, 0, 0, 0, - 0, 3287, 0, 5205, 835, 0, 3203, 2617, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 179, 5202, 0, 0, 5203, 5204, 0, 4509, 0, 1285, - 1878, 0, 2618, 1879, 0, 0, 0, 0, 4919, 0, - 0, 0, 0, 4693, 0, 0, 0, 5276, 0, 0, - 0, 0, 0, 0, 0, 0, 835, 0, 835, 2990, - 835, 2990, 1885, 1878, 0, 0, 1879, 694, 0, -2568, - 1880, 1881, 1882, 0, 0, 0, 5275, 5205, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1883, 0, 0, - 0, 0, 0, 1887, 1790, 1885, 5276, 0, 0, 0, - 0, 0, 1886, 0, 183, 0, 5202, 0, 0, 5203, - 5204, 5276, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5275, 1887, 0, 0, 0, - 0, 772, 0, 0, 0, 0, 0, 0, 4598, 0, - 5275, 830, 0, 0, 0, 0, 0, 847, 1188, 0, - 0, 3351, 0, 0, 0, 3352, 3353, 3354, 0, 0, - 835, 0, 5205, 0, 0, 0, 0, 3450, 1285, 0, - 0, 0, 4360, 1285, 0, 0, 0, 0, 0, 0, - 1813, 0, 1188, 0, 0, 3351, 0, 0, 0, 3352, - 3353, 3354, 0, 0, 0, 0, 1285, 1285, 1285, 0, - 0, 1285, -2568, 0, 0, 0, 4361, -2568, 0, 1285, - 1285, 1285, 1285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1285, 0, 0, 1285, 0, 1285, 0, 0, - 0, 0, 0, 0, 0, 1888, 0, 0, 1285, 1285, - 1889, 179, 1285, -2568, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 882, 0, 1285, 0, 1285, 0, - 1285, 1890, 1891, 0, 1188, 0, 179, 3351, 0, 0, - 0, 3352, 3353, 3354, 0, 0, 1892, 0, 0, 0, - 1285, 0, 0, 0, 772, 0, 0, 0, 0, 0, - 1894, 3451, 0, 1285, 1285, 1285, 0, 0, 0, 0, - 0, 0, 0, 1679, 0, 0, 0, 0, 0, 1893, - 0, 1285, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1878, 1285, 1894, 1879, 0, 1895, 1285, 1880, 1881, - 1882, 1706, 0, 1285, 0, 0, 0, 0, 0, 0, - 5256, 0, 0, 3451, 0, 1883, 3356, 3492, 0, 0, - 3495, 1724, 2816, 1885, 0, 0, 0, 0, 0, 0, - 1886, 1735, 0, 0, 0, 0, 0, 1739, 0, 0, - 0, 0, 0, 1747, 3450, 0, 0, -2568, 3450, 1755, - 3356, 0, 1758, 0, 1887, 0, 0, 0, 0, 0, - 0, 0, 0, 1285, 0, 2990, 0, 0, 0, 0, - 1790, 0, 0, 0, 0, 0, 1877, 0, 3357, 0, - 1896, 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, - 1882, 0, 0, 0, 0, 179, 0, 835, 0, 835, - 835, 835, 0, 0, 0, 1883, 0, 0, 1884, 0, - 0, 0, 3357, 1885, 0, 0, 0, 0, 0, 0, - 1886, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1813, 0, -2568, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2568, 1887, 0, 0, 0, 0, 0, - 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, - 0, 0, 0, 1888, 0, 0, 0, 0, 1889, 0, - 3673, 0, 0, 0, 0, 0, 1897, 0, 0, 1898, - 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1890, - 1891, 0, 0, 0, 3357, 0, 3342, 0, 0, 0, - 0, 0, 0, 0, 1892, 0, 0, 0, 0, 0, - 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1813, 0, 0, 0, 0, 1813, - 1813, 0, 0, 0, 0, 0, 0, 1893, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1894, 0, 1888, 1895, 0, 0, 0, 1889, 0, - 0, 0, 0, 0, 3358, 3359, 3360, 0, 3361, 3362, - 3363, 3364, 3365, 3366, 0, 0, 0, 0, 0, 1890, - 1891, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4537, 1892, 0, 0, 0, 3358, 3359, - 3360, 0, 3361, 3362, 3363, 3364, 3365, 3366, 0, 0, - 0, 0, 0, 0, 835, 0, 0, 0, 0, 2990, - 2990, 0, 0, 0, 0, 0, 0, 1893, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1896, 5001, - 0, 1894, 0, 0, 1895, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 772, 772, 772, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 772, 0, 0, 0, 0, 0, 0, - 3358, 3359, 3360, 0, 3361, 3362, 3363, 3364, 3365, 3366, - 0, 0, 0, 0, 0, 1790, 772, 0, 0, 0, - 0, 0, 0, 0, 0, 1790, 772, 772, 0, 0, - 0, 772, 3219, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 772, 0, 0, 0, 1896, 0, - 0, 0, 1414, 0, 1897, 0, 0, 1898, 1899, 1900, - 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 3450, - 0, 0, 0, 0, 3392, 0, 3450, 0, 0, 0, - 0, 3450, 0, 0, 3450, 4654, 1415, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, - 3450, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 772, 0, 3450, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 772, 0, 0, - 0, 0, 0, 0, 1897, 1417, 0, 1898, 1899, 1900, - 0, 1901, 1902, 1903, 1904, 1905, 1906, 1285, 5142, 0, - 0, 0, 0, 0, 2158, 0, 1285, 0, 0, 2159, - 0, 846, 1285, 0, 1285, 0, 0, 1285, 0, 1418, - 0, 0, 1285, 1285, 1285, 1285, 0, 0, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 0, 0, - 0, 1285, 1285, 2160, 0, 0, 0, 0, 0, 3220, - 0, 1285, 0, 846, 1419, 1285, 2161, 0, 0, 1285, - 0, 0, 0, 0, 0, 0, 0, 1285, 0, 0, - 1285, 2162, 1285, 0, 0, 0, 0, 0, 0, 0, - 0, 1285, 0, 0, 1285, 1285, 0, 0, 1420, 1285, - 1285, 0, 0, 0, 3951, 0, 1285, 0, 0, 0, - 0, 0, 0, 772, 772, 772, 830, 0, 0, 3451, - 3973, 0, 2163, 0, 3973, 3987, 3973, 0, 0, 1422, - 0, 3450, 1285, 2164, 0, 1385, 0, 0, 1285, 1285, - 1285, 0, 2517, 0, 0, 0, 0, 0, 0, 0, - 2524, 0, 0, 2165, 0, 0, 0, 0, 2166, 0, - 0, 0, 0, 0, 1285, 0, 2534, 1442, 0, 0, - 35, 0, 0, 1443, 1424, 0, 0, 0, 2816, 0, - 1285, 1425, 0, 0, 0, 0, 0, 0, 0, 1426, - 0, 0, 3450, 0, 0, 0, 0, 2200, 4048, 1790, - 1790, 0, 2362, 0, 0, 0, 0, 0, 0, 1428, - 0, 0, 0, 0, 1444, 0, 0, 1429, 0, 835, - 835, 835, 835, 0, 0, 0, 0, 0, 2167, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3222, 0, - 0, 0, 0, 0, 0, 0, 0, 559, 2215, 0, - 0, 0, 0, 611, 559, 0, 0, 0, 0, 662, - 0, 559, 2168, 0, 1445, 0, 4101, 559, 1446, 0, - 716, 0, 1430, 0, 0, 1447, 3223, 2418, 1448, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 783, - 783, 0, 0, 1414, 0, 205, 0, 0, 0, 0, - 0, 0, 0, 1449, 0, 0, 0, 0, 0, 4962, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1415, 0, 0, - 0, 2169, 3450, 0, 0, 1450, 1878, 0, 2170, 1879, - 0, 2171, 0, 1880, 1881, 1882, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1878, 1416, 4186, 1879, - 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, 0, - 0, 2172, 0, 0, 0, 1886, 0, 0, 2173, 0, - 1883, 0, 0, 0, 0, 2174, 1417, 0, 1885, 0, - 3450, 0, 2175, 0, 1451, 1886, 1452, 835, 0, 1887, - 0, 772, 0, 835, 0, 1285, 1453, 0, 0, 0, - 0, 0, 772, 0, 0, 1454, 0, 2176, 4226, 1887, - 1418, 3450, 0, 0, 0, 0, 1455, 0, 2215, 0, - 0, 0, 0, 0, 0, 0, 842, 0, 0, 0, - 0, 0, 0, 772, 884, 0, 885, 3451, 889, 890, - 0, 893, 0, 895, 2774, 1419, 901, 3075, 903, 0, - 0, 0, 0, 0, 1456, 0, 4274, 1457, 1458, 0, - 0, 0, 0, 0, 0, 0, 0, 772, 0, 0, - 0, 2362, 0, 0, 0, 1285, 1285, 0, 0, 1420, - 0, 0, 0, 0, 0, 1459, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1888, 0, - 0, 0, 0, 1889, 2990, 0, 2990, 0, 0, 1421, - 1422, 0, 0, 772, 0, 0, 1385, 0, 1888, 3450, - 0, 0, 0, 1889, 1890, 1891, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1892, - 0, 0, 1285, 0, 1890, 1891, 0, 1423, 0, 1460, - 0, 35, 0, 1285, 0, 1424, 0, 0, 0, 1892, - 0, 0, 1425, 0, 0, 0, 0, 0, 3219, 0, - 1426, 0, 1893, 0, 0, 0, 0, 0, 1427, 0, - 0, 0, 0, 1285, 846, 0, 1894, 0, 1414, 1895, - 1428, 0, 1893, 1285, 1285, 0, 0, 0, 1429, 0, - 1285, 1285, 0, 0, 0, 1285, 1894, 0, 0, 1895, - 1285, 0, 0, 1285, 1285, 0, 0, 0, 1285, 4369, - 0, 0, 1415, 0, 1285, 772, 772, 772, 772, 0, - 0, 0, 3973, 3987, 3973, 5185, 1285, 3973, 0, 0, - 4383, 0, 0, 0, 3451, 0, 0, 0, 3451, 3450, - 0, 0, 0, 1430, 4398, 846, 846, 0, 0, 0, - 0, 1285, 0, 0, 0, 0, 1285, 0, 0, 0, - 0, 0, 1285, 1896, 0, 1878, 0, 0, 1879, 882, - 0, 1417, 1880, 1881, 1882, 0, 0, 1285, 0, 0, - 0, 3492, 0, 1896, 0, 0, 2816, 0, 0, 1883, - 0, 0, 0, 0, 0, 0, 0, 1885, 0, 0, - 703, 0, 0, 1285, 1886, 1418, 0, 0, 0, 0, - 0, 3450, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2990, 2990, 0, 0, 0, 1887, 0, - 0, 0, 0, 0, 0, 3220, 0, 0, 0, 0, - 1419, 2215, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4467, 0, 0, 0, 0, 1897, - 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, - 1905, 1906, 0, 0, 1420, 0, 2686, 0, 0, 1897, - 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, - 1905, 1906, 0, 967, 0, 0, 3715, 0, 0, 0, - 0, 976, 0, 1285, 0, 1422, 0, 0, 989, 990, - 5301, 1385, 996, 0, 999, 1000, 0, 0, 0, 1002, - 0, 0, 0, 0, 0, 835, 0, 0, 846, 846, - 1019, 0, 0, 0, 0, 0, 0, 1888, 0, 0, - 835, 0, 1889, 0, 0, 1029, 35, 0, 0, 0, - 3221, 0, 0, 0, 0, 0, 0, 1425, 0, 0, - 0, 0, 0, 1890, 1891, 1426, 0, 0, 1093, 1285, - 1095, 0, 0, 2200, 0, 0, 0, 0, 1892, 3233, - 1111, 0, 0, 830, 0, 1428, 3238, 0, 0, 2215, - 0, 0, 0, 1429, 0, 0, 0, 0, 1790, 0, - 0, 0, 0, 0, 0, 0, 3257, 0, 0, 0, - 0, 1893, 559, 1285, 3222, 0, 3263, 0, 0, 0, - 3264, 0, 0, 3266, 0, 1894, 835, 0, 3203, 3270, - 0, 3271, 0, 0, 3273, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1170, 0, 1430, 0, - 0, 0, 3223, 1878, 0, 0, 1879, 0, 772, 0, - 1880, 1881, 1882, 1070, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1883, 1442, 0, - 0, 0, 0, 0, 1443, 1885, 0, 1070, 0, 0, - 0, 0, 1886, 3310, 1285, 0, 0, 1532, 0, 0, - 783, 0, 0, 1285, 0, 0, 0, 0, 0, 0, - 0, 0, 1896, 0, 0, 0, 1887, 0, 0, 0, - 1285, 1285, 0, 0, 1285, 1444, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, - 0, 0, 3973, 0, 0, 0, 3451, 0, 0, 0, - 0, 3451, 0, 0, 3451, 830, 0, 3075, 0, 4658, - 0, 1405, 1285, 1285, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1533, 0, 1446, - 4048, 0, 1285, 0, 0, 0, 1447, 0, 0, 1448, - 0, 0, 0, 4048, 882, 835, 835, 835, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1897, 0, - 0, 1898, 1899, 1900, 1449, 1901, 1902, 1903, 1904, 1905, - 1906, 0, 0, 0, 0, 1888, 0, 0, 0, 0, - 1889, 1564, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 847, 882, 0, 0, 0, 1450, 1577, 0, 0, - 0, 1890, 1891, 0, 0, 0, 0, 0, 0, 1588, - 0, 0, 1589, 0, 0, 0, 1892, 0, 0, 0, - 0, 0, 1592, 0, 0, 0, 0, 1596, 0, 0, - 0, 0, 0, 847, 0, 1599, 772, 0, 0, 0, - 0, 1609, 0, 0, 1613, 0, 0, 0, 4226, 1893, - 0, 772, 0, 0, 0, 1451, 772, 1452, 2990, 0, - 0, 0, 0, 1894, 0, 2215, 1895, 1453, 0, 0, - 0, 0, 0, 0, 0, 0, 1454, 0, 0, 0, - 0, 772, 0, 0, 1666, 4274, 0, 1455, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, - 772, 4048, 0, 0, 0, 0, 0, 3526, 0, 0, - 0, 0, 0, 1070, 0, 1878, 0, 0, 1879, 0, - 0, 0, 1880, 1881, 1882, 1534, 0, 1285, 1457, 1458, - 1285, 0, 1285, 0, 0, 0, 1070, 0, 0, 1883, - 0, 0, 0, 0, 0, 0, 0, 1885, 0, 0, - 1896, 1070, 1285, 0, 1886, 0, 1535, 0, 1285, 0, - 0, 0, 3451, 0, 0, 0, 4658, 0, 0, 0, - 0, 0, 0, 1285, 0, 0, 0, 0, 1887, 0, - 0, 0, 4876, 0, 0, 0, 0, 3585, 0, 3587, - 0, 0, 0, 0, 0, 559, 0, 559, 0, 559, - 0, 559, 0, 559, 559, 559, 772, 0, 0, 0, - 559, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1460, 1808, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1285, 0, 0, 1070, 0, 0, 0, 0, - 0, 835, 835, 835, 835, 0, 1897, 0, 0, 1898, - 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, - 0, 0, 0, 3876, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, - 0, 0, 0, 0, 0, 0, 0, 1888, 0, 0, - 0, 0, 1889, 0, 0, 0, 0, 0, 0, 772, - 0, 0, 3451, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 860, 1890, 1891, 0, 0, 0, 3672, 0, - 0, 0, 892, 0, 3679, 0, 0, 0, 1892, 0, - 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1070, 0, 1442, 0, 0, - 0, 0, 0, 1443, 0, 0, 0, 1285, 0, 0, - 830, 1893, 0, 1285, 0, 0, 1532, 5026, 0, 0, - 0, 0, 0, 0, 1285, 1894, 0, 0, 1895, 1285, - 0, 1285, 0, 1285, 0, 0, 0, 0, 0, 0, - 0, 4048, 0, 0, 1444, 0, 0, 835, 0, 882, - 0, 0, 0, 0, 783, 0, 0, 0, 0, 1285, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1878, 0, 0, 1879, 0, 0, 0, 1880, - 1881, 1882, 0, 0, 0, 0, 1533, 0, 1446, 1790, - 1790, 0, 0, 0, 0, 1447, 1883, 0, 1448, 0, - 0, 0, 1896, 0, 1885, 0, 0, 0, 0, 0, - 0, 1886, 0, 0, 0, 0, 0, 0, 0, 0, - 835, 2178, 0, 1449, 0, 0, 1934, 5103, 0, 0, - 0, 1285, 0, 0, 0, 1887, 0, 0, 0, 5114, - 0, 0, 3833, 0, 3835, 0, 3837, 0, 0, 0, - 0, 0, 0, 3841, 0, 1450, 0, 0, 0, 0, - 0, 0, 0, 0, 1285, 1285, 0, 0, 0, 3075, - 0, 0, 1285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1285, 0, 0, 4876, 0, 0, 0, 2268, - 2816, 1070, 3862, 0, 0, 0, 0, 0, 1897, 0, - 0, 1898, 1899, 1900, 847, 1901, 1902, 1903, 1904, 1905, - 1906, 0, 0, 0, 1451, 3927, 1452, 0, 835, 0, - 0, 0, 0, 0, 0, 1790, 1453, 0, 0, 0, - 0, 0, 0, 0, 0, 1454, 0, 0, 0, 0, - 0, 0, 0, 0, 1888, 0, 1455, 0, 0, 1889, - 2215, 0, 0, 1442, 0, 830, 0, 0, 1070, 1443, - 1285, 0, 0, 0, 0, 0, 0, 0, 0, 4048, - 1890, 1891, 0, 0, 0, 847, 847, 1285, 0, 0, - 0, 0, 0, 0, 3046, 1892, 1285, 1457, 1458, 0, - 5026, 0, 0, 0, 0, 0, 0, 1070, 0, 0, - 1444, 0, 0, 1285, 0, 0, 0, 0, 0, 0, - 835, 0, 0, 0, 0, 3047, 919, 0, 1893, 0, - 1070, 0, 964, 0, 0, 0, 2406, 0, 0, 0, - 0, 1878, 1894, 0, 1879, 1895, 0, 0, 1880, 1881, - 1882, 5114, 835, 835, 0, 0, 0, 0, 0, 0, - 2256, 0, 0, 0, 1446, 1883, 0, 0, 0, 0, - 0, 1447, 0, 1885, 1448, 0, 0, 0, 1285, 1285, - 1886, 0, 0, 0, 0, 0, 0, 0, 0, 1460, - 0, 0, 0, 0, 0, 0, 0, 0, 1878, 1449, - 0, 1879, 0, 0, 1887, 1880, 1881, 1882, 0, 1070, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1285, 0, 1883, 0, 1070, 0, 1285, 0, 0, 1896, - 1885, 1450, 0, 1070, 0, 0, 0, 1886, 0, 0, - 835, 0, 0, 0, 0, 1070, 0, 5026, 0, 0, - 830, 0, 0, 0, 0, 0, 0, 0, 2526, 0, - 2527, 1887, 0, 0, 0, 0, 0, 0, 847, 847, - 0, 0, 0, 0, 0, 0, 0, 2538, 0, 2539, - 0, 0, 0, 0, 0, 0, 0, 1169, 0, 0, - 1451, 0, 1452, 559, 0, 559, 0, 559, 0, 559, - 1070, 559, 1453, 0, 0, 559, 0, 0, 0, 0, - 0, 1454, 1292, 1888, 1070, 0, 0, 0, 1889, 0, - 0, 0, 1455, 0, 0, 1897, 1070, 0, 1898, 1899, - 1900, 1315, 1901, 1902, 1903, 1904, 1905, 1906, 1070, 1890, - 1891, 0, 4013, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1340, 0, 1892, 0, 0, 0, 0, 0, - 2257, 0, 0, 1457, 1458, 0, 0, 0, 0, 0, - 1888, 0, 0, 0, 0, 1889, 0, 0, 1070, 1070, - 0, 0, 0, 0, 0, 0, 0, 1893, 0, 0, - 0, 2258, 0, 0, 0, 0, 1890, 1891, 0, 0, - 0, 1894, 0, 0, 1895, 0, 0, 0, 0, 0, - 0, 1892, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1471, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1893, 0, 1442, 0, 0, 0, - 0, 0, 1443, 0, 0, 1460, 0, 0, 1894, 0, - 0, 1895, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1896, 0, - 0, 0, 0, 1444, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1070, 0, 0, 0, 0, 0, 0, 0, - 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, - 0, 0, 4305, 0, 0, 0, 4307, 0, 0, 0, - 1618, 0, 0, 0, 1883, 1896, 0, 1446, 0, 0, - 0, 0, 1885, 0, 1447, 0, 0, 1448, 0, 1886, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1656, - 1659, 1660, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1449, 1887, 1897, 0, 0, 1898, 1899, 1900, - 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, - 0, 4042, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2819, 2820, 0, 1450, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2835, 2836, 0, 0, 0, 2839, 2840, 0, 0, 0, - 2843, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, - 1903, 1904, 1905, 1906, 2854, 0, 0, 0, 4330, 0, - 0, 2863, 0, 0, 0, 2866, 2867, 0, 0, 2870, - 2871, 0, 0, 1451, 0, 1452, 2876, 0, 0, 0, - 0, 0, 0, 0, 0, 1453, 0, 0, 0, 2893, - 0, 2895, 1888, 0, 1454, 0, 0, 1889, 0, 0, - 0, 0, 0, 0, 0, 1455, 0, 0, 0, 1292, - 2919, 0, 0, 0, 0, 2921, 0, 0, 1890, 1891, - 0, 0, 0, 0, 0, 0, 0, 0, 2926, 0, - 1070, 0, 0, 1892, 1070, 1070, 0, 2933, 0, 2935, - 1292, 0, 2938, 2941, 2943, 0, 1457, 1458, 0, 2951, - 2954, 0, 0, 4446, 0, 0, 0, 0, 0, 2967, - 0, 0, 0, 0, 2976, 0, 1893, 0, 0, 2980, - 0, 0, 3219, 0, 1459, 0, 0, 0, 0, 0, - 1894, 0, 0, 1895, 0, 2996, 0, 0, 0, 0, - 0, 0, 1414, 3007, 4469, 4470, 1070, 0, 0, 0, - 0, 0, 0, 0, 3022, 0, 0, 0, 1070, 0, - 0, 0, 0, 0, 0, 0, 3029, 0, 0, 3032, - 0, 0, 0, 0, 3035, 0, 1415, 0, 0, 3037, - 3038, 0, 0, 0, 3041, 0, 0, 3045, 1460, 0, - 0, 3052, 3053, 3054, 3055, 0, 3057, 0, 1070, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3082, - 3083, 0, 3085, 0, 0, 0, 0, 1896, 0, 0, - 0, 0, 3093, 3094, 0, 0, 1949, 0, 0, 1878, - 4510, 4511, 1879, 0, 0, 1417, 1880, 1881, 1882, 0, - 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, - 1879, 0, 0, 1883, 1880, 1881, 1882, 0, 0, 0, - 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 1418, - 0, 1883, 0, 2085, 3138, 0, 0, 0, 0, 1885, - 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, - 0, 0, 1887, 0, 0, 0, 0, 0, 0, 3220, - 0, 0, 3175, 0, 1419, 0, 0, 0, 0, 0, - 1887, 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, - 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, - 4365, 0, 0, 0, 0, 0, 0, 0, 1420, 0, - 0, 0, 0, 0, 0, 4606, 0, 4607, 4608, 1878, - 0, 0, 1879, 2209, 0, 0, 1880, 1881, 1882, 0, - 0, 4612, 2232, 0, 0, 0, 0, 0, 0, 1422, - 0, 0, 0, 1883, 0, 1385, 0, 1070, 0, 0, - 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, - 0, 1878, 2269, 0, 1879, 0, 0, 0, 1880, 1881, - 1882, 1888, 0, 0, 0, 2282, 1889, 0, 2285, 0, - 35, 0, 1887, 0, 1424, 1883, 0, 0, 0, 1888, - 0, 1425, 0, 1885, 1889, 0, 0, 1890, 1891, 1426, - 1886, 0, 0, 0, 0, 0, 0, 2200, 0, 0, - 0, 0, 1892, 0, 0, 1890, 1891, 0, 0, 1428, - 0, 0, 0, 0, 1887, 0, 0, 1429, 2333, 1070, - 1892, 0, 3305, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2351, 0, 0, 1893, 0, 0, 3222, 0, - 0, 0, 0, 0, 0, 2363, 0, 0, 0, 1894, - 0, 3321, 1895, 1893, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, - 1895, 0, 1430, 0, 0, 0, 3223, 0, 0, 0, - 0, 1888, 0, 0, 0, 0, 1889, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1890, 1891, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1892, 1888, 0, 0, 2458, 0, 1889, 0, - 1070, 0, 0, 2471, 0, 0, 1896, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1070, 0, 1890, - 1891, 0, 0, 0, 1896, 1893, 0, 0, 0, 0, - 1070, 0, 0, 0, 1892, 0, 0, 0, 0, 1894, - 0, 0, 1895, 0, 0, 0, 0, 0, 0, 0, - 1442, 0, 0, 0, 0, 0, 1443, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1893, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1894, 0, 0, 1895, 0, 0, 4838, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1444, 0, 0, - 0, 0, 1897, 0, 2543, 1898, 1899, 1900, 0, 1901, - 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 4615, - 1897, 0, 0, 1898, 1899, 1900, 1896, 1901, 1902, 1903, - 1904, 1905, 1906, 0, 0, 0, 0, 4626, 0, 0, - 0, 0, 1292, 1292, 0, 0, 0, 0, 0, 0, - 0, 1446, 0, 0, 0, 0, 0, 0, 1447, 2590, - 4886, 1448, 0, 0, 0, 0, 0, 0, 1896, 0, - 0, 0, 0, 0, 0, 3529, 0, 0, 0, 3531, - 0, 0, 0, 0, 0, 3533, 1449, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3544, 3546, 0, 0, 0, 3546, 0, 0, 0, - 4927, 3557, 3558, 3559, 0, 3561, 0, 0, 1450, 0, - 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, - 1902, 1903, 1904, 1905, 1906, 1070, 3582, 0, 1070, 4635, - 1070, 0, 0, 0, 0, 1070, 3588, 3589, 3590, 3591, - 0, 0, 0, 0, 0, 0, 2749, 0, 0, 0, - 0, 0, 0, 0, 1897, 0, 2764, 1898, 1899, 1900, - 0, 1901, 1902, 1903, 1904, 1905, 1906, 1451, 0, 1452, - 0, 4638, 0, 3608, 0, 0, 3613, 3614, 3615, 1453, - 0, 0, 0, 0, 1070, 0, 0, 0, 1454, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1455, - 0, 1070, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1442, - 0, 0, 0, 0, 0, 1443, 1070, 0, 0, 0, - 0, 0, 1497, 0, 0, 0, 0, 1561, 0, 0, - 1457, 1458, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1498, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1444, 0, 1562, 0, - 0, 0, 0, 2775, 0, 2778, 0, 0, 3682, 0, - 0, 0, 1878, 0, 0, 1879, 3686, 0, 0, 1880, - 1881, 1882, 0, 0, 0, 1070, 0, 1070, 0, 0, - 1499, 0, 0, 0, 3695, 0, 1883, 0, 0, 0, - 2783, 1292, 0, 0, 1885, 0, 0, 0, 0, 0, - 1446, 1886, 0, 0, 0, 0, 0, 1447, 0, 0, - 1448, 3741, 1460, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1887, -128, 0, 0, 0, - 0, 0, 0, 0, 0, 1449, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 3, 4, 1070, 0, - 0, 0, 0, 3778, 1500, 0, 0, 1450, 3784, 0, - 0, 0, 5, 0, 2784, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1070, 0, 0, 0, - 0, 0, 6, 0, 7, 8, 0, 0, 3822, 0, - 0, 9, 0, 10, 0, 0, 0, 0, 0, 1070, - 0, 0, 1501, 0, 11, 1502, 12, 1070, 0, 0, - 0, 0, 0, 0, 0, 0, 1503, 0, 1452, 0, - 0, 0, 0, 13, 1888, 3838, 14, 3839, 1453, 1889, - 0, 0, 0, 0, 0, 0, 2957, 1454, 0, 0, - 15, 0, 16, 0, 0, 0, 17, 1504, 1455, 0, - 1890, 1891, 18, 0, 0, 0, 0, 2984, 0, 0, - 19, 0, 20, 0, 0, 1892, 0, 0, 21, 0, - 0, 0, 0, 0, 0, 0, 1070, 0, 0, 0, - 0, 0, 0, 0, 22, 5228, 1505, 0, 0, 1457, - 1458, 1506, 0, 0, 1070, 0, 0, 0, 1893, 0, - 23, 0, 0, 0, 0, 0, 0, 1070, 0, 0, - 0, 1507, 1894, 0, 0, 1895, 0, 1508, 0, 0, - 0, 3050, 3051, 0, 0, 0, 0, 0, 0, 0, - 0, 1509, 0, 0, 0, 0, 0, 0, 0, 24, - 25, 0, 0, 0, 0, 26, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, - 0, 1460, 0, 0, 0, 0, 832, 855, 0, 0, - 0, 0, 0, 0, 0, 855, 0, 0, 0, 1896, - 0, 0, 0, 1070, 29, 0, 0, 0, 855, 0, - 0, 0, 30, 0, 0, 0, 3164, 0, 0, 0, - 0, 0, 0, 0, 1070, 31, 0, 0, 0, 0, - 0, 32, 33, 0, 34, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 36, 0, 0, 37, 0, 1070, - 0, 0, 38, 0, 0, 2785, 0, 0, 39, 40, - 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, - 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 43, 0, 0, 1070, 0, 4059, 0, 4060, 0, 0, - 0, 0, 0, 44, 4062, 1897, 0, 0, 1898, 1899, - 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1878, 0, - 4072, 1879, 45, 0, 0, 1880, 1881, 1882, 0, 0, - 0, 0, 46, 0, 0, 0, 4080, 1878, 47, 0, - 1879, 0, 1883, 48, 1880, 1881, 1882, 1442, 0, 0, - 1885, 0, 0, 1443, 4100, 0, 49, 1886, 0, 0, - 0, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, - 0, 0, 4104, 0, 0, 0, 1886, 0, 0, 50, - 0, 1887, 4113, 0, 0, 0, 0, 0, 0, 1070, - 0, 0, 0, 51, 1444, 0, -128, 0, 0, 0, - 1887, 4142, 0, 3304, 0, 0, 0, 0, 0, 0, - 0, 0, 4150, 4151, 4152, 0, 0, 0, 0, 4156, - 4157, 4158, 4159, 0, 0, 4161, 4162, 0, 0, 0, - 0, 4169, 4170, 0, 4172, 4173, 4174, 4175, 4176, 4177, - 0, 4179, 0, 0, 0, 0, 0, 0, 1446, 0, - 4187, 0, 0, 4190, 4191, 1447, 0, 1878, 1448, 0, - 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 0, - 0, 0, 3546, 0, 0, 0, 0, 0, 0, 0, - 0, 1883, 0, 1449, 0, 0, 0, 0, 1070, 1885, - 1888, 0, 0, 0, 4211, 1889, 1886, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1888, - 0, 0, 1070, 0, 1889, 1450, 1890, 1891, 0, 0, - 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1892, 0, 0, 0, 1890, 1891, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1892, 0, 0, 0, 0, 0, 3432, 0, 0, 0, - 0, 0, 0, 0, 1893, 0, 0, 0, 0, 0, - 832, 0, 0, 0, 1451, 0, 1452, 0, 1894, 0, - 0, 1895, 855, 1893, 0, 0, 1453, 0, 855, 0, - 0, 0, 0, 3546, 0, 1454, 0, 1894, 0, 0, - 1895, 855, 0, 0, 0, 0, 1455, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, - 0, 0, 832, 0, 0, 4315, 0, 0, 1072, 1888, - 0, 0, 832, 855, 1889, 0, 0, 1070, 0, 0, - 855, 0, 0, 0, 2180, 0, 0, 1457, 1458, 0, - 0, 0, 1072, 855, 0, 1890, 1891, 0, 0, 0, - 0, 0, 0, 855, 0, 1896, 0, 0, 0, 0, - 1892, 0, 0, 0, 0, 2181, 0, 0, 0, 0, - 0, 0, 0, 0, 1896, 0, 0, 1070, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1893, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, - 1895, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1460, - 0, 0, 0, 0, 0, 832, 832, 0, 0, 0, - 0, 855, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, - 1903, 1904, 1905, 1906, 0, 0, 0, 832, 4687, 0, - 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, - 1904, 1905, 1906, 0, 0, 0, 0, 4721, 0, 0, - 0, 0, 0, 0, 1896, 0, 0, 0, 0, 1070, - 0, 0, 3630, 0, 0, 0, 0, 0, 0, 1070, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1878, - 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, 4450, - 0, 0, 0, 4451, 4452, 4453, 4454, 0, 0, 4456, - 0, 0, 0, 1883, 0, 0, 0, 0, 0, 0, - 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4474, 4475, 4476, 0, 4477, 0, 4479, 4480, 0, 0, - 0, 0, 1887, 0, 0, 0, 0, 0, 4489, 4490, - 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, - 1904, 1905, 1906, 0, 0, 0, 0, 4761, 0, 0, - 0, 832, 0, 0, 0, 4495, 0, 0, 1072, 0, - 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1070, 0, 0, 0, 4505, 0, - 0, 1072, 0, 0, 1878, 0, 0, 1879, 3744, 3745, - 3746, 1880, 1881, 1882, 0, 0, 1072, 0, 0, 0, - 0, 0, 0, 0, 0, 3755, 0, 0, 1883, 0, - 0, 0, 1070, 0, 0, 0, 1885, 0, 0, 0, - 0, 0, 0, 1886, 0, 0, 1442, 0, 3771, 0, - 0, 1888, 1443, 1070, 0, 0, 1889, 0, 3781, 3783, - 0, 832, 0, 3788, 0, 0, 0, 1887, 0, 0, - 0, 0, 4557, 0, 0, 0, 3802, 1890, 1891, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1892, 1444, 0, 0, 0, 0, 0, 0, - 1072, 4585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1070, 0, - 0, 0, 0, 0, 0, 1893, 4609, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 855, 0, 1894, - 0, 0, 1895, 0, 0, 0, 0, 1446, 0, 0, - 0, 855, 0, 0, 1447, 0, 0, 1448, 0, 0, - 832, 0, 0, 0, 0, 0, 0, 0, 855, 1292, - 0, 0, 0, 0, 0, 0, 1888, 0, 0, 0, - 0, 1889, 1449, 1878, 0, 0, 1879, 0, 0, 0, - 1880, 1881, 1882, 0, 0, 0, 855, 0, 0, 0, - 0, 0, 1890, 1891, 0, 0, 0, 1883, 0, 0, - 1072, 0, 855, 0, 1450, 1885, 0, 1892, 0, 0, - 0, 0, 1886, 0, 0, 0, 1896, 855, 0, 1070, - 855, 0, 0, 559, 0, 0, 0, 0, 0, 0, - 0, 0, 832, 0, 0, 0, 1887, 0, 0, 0, - 1893, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1894, 0, 0, 1895, 0, 0, - 0, 1070, 832, 1451, 0, 1452, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1453, 0, 0, 0, 0, - 0, 0, 0, 4710, 1454, 3959, 3960, 3961, 0, 0, - 832, 832, 832, 0, 832, 1455, 0, 0, 0, 0, - 0, 4720, 0, 0, 0, 0, 4725, 4726, 0, 0, - 0, 0, 1897, 0, 832, 1898, 1899, 1900, 0, 1901, - 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 5062, - 0, 0, 0, 2927, 0, 0, 1457, 1458, 855, 0, - 0, 1896, 0, 0, 0, 1888, 855, 855, 0, 0, - 1889, 0, 0, 0, 0, 832, 2033, 4784, 0, 0, - 0, 0, 0, 0, 1459, 0, 0, 0, 0, 0, - 0, 1890, 1891, 0, 0, 0, 0, 4801, 0, 0, - 0, 0, 0, 832, 0, 0, 1892, 832, 832, 0, - 0, 0, 0, 0, 1070, 0, 0, 0, 0, 0, - 1878, 0, 832, 1879, 0, 0, 1072, 1880, 1881, 1882, - 0, 0, 0, 2033, 3546, 0, 0, 0, 0, 1893, - 0, 4837, 0, 0, 1883, 0, 0, 0, 1460, 0, - 0, 0, 1885, 1894, 0, 0, 1895, 1897, 0, 1886, - 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, - 0, 0, 0, 0, 5184, 0, 0, 0, 0, 0, - 0, 0, 0, 1887, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1072, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4879, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4895, 0, 1072, 0, 0, 0, 1070, 0, 0, 1878, - 1896, 4903, 1879, 0, 0, 0, 1880, 1881, 1882, 0, - 0, 0, 0, 0, 0, 1072, 0, 0, 0, 0, - 0, 1070, 0, 1883, 0, 0, 0, 0, 0, 0, - 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1888, 4208, 0, 0, 0, 1889, 0, 0, - 0, 1070, 1887, 4967, 4221, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 855, 0, 0, 0, 1890, 1891, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1892, 1072, 4250, 1897, 0, 0, 1898, - 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1072, - 0, 0, 0, 5247, 0, 1070, 0, 0, 1072, 0, - 1070, 1070, 0, 0, 3546, 2033, 1893, 0, 0, 2471, - 1072, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1894, 0, 0, 1895, 0, 0, 0, 0, 0, 855, - 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 855, - 0, 1888, 0, 0, 0, 2543, 1889, 0, 0, 0, - 0, 0, 0, 0, 0, 1072, 5050, 0, 0, 0, - 0, 0, 832, 0, 0, 832, 0, 1890, 1891, 1072, - 0, 5063, 0, 0, 0, 832, 0, 0, 0, 0, - 0, 1072, 1892, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1072, 0, 0, 0, 1896, 0, 0, - 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 832, 832, 0, 855, 855, 1893, 0, 0, 0, 0, - 5090, 0, 0, 0, 0, 855, 0, 0, 0, 1894, - 0, 0, 1895, 1072, 1072, 5101, 855, 855, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 855, 0, 0, 0, 0, 4372, 4373, 4374, - 4375, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, - 0, 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, - 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, - 5267, 0, 0, 5158, 0, 0, 1896, 0, 832, 0, - 832, 0, 0, 0, 0, 832, 832, 0, 0, 0, - 0, 0, 832, 832, 832, 0, 0, 0, 832, 0, - 832, 832, 832, 832, 832, 832, 0, 832, 0, 832, - 832, 0, 0, 832, 0, 5180, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1072, 832, 832, - 832, 832, 2033, 0, 0, 0, 832, 0, 0, 0, - 832, 0, 0, 832, 0, 0, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 0, 832, 0, 0, 1070, - 0, 0, 0, 832, 0, 832, 0, 0, 0, 0, - 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, - 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 5300, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 5240, - 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, - 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, - 1879, 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, - 0, 0, 0, 0, 0, 0, 1886, 1878, 0, 0, - 1879, 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, - 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, - 1887, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, - 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, - 1887, 0, 0, 832, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, - 0, 0, 0, 0, 0, 0, 0, 0, 855, 1878, - 0, 0, 1879, 0, 1883, 1072, 1880, 1881, 1882, 1072, - 1072, 0, 1885, 0, 0, 0, 855, 0, 0, 1886, - 4600, 2033, 855, 1883, 0, 0, 855, 0, 0, 0, - 0, 1885, 0, 0, 855, 0, 3371, 0, 1886, 1888, - 0, 3372, 0, 1887, 1889, 0, 0, 1442, 0, 0, - 0, 0, 855, 1443, 0, 832, 0, 0, 0, 1888, - 0, 0, 1887, 0, 1889, 1890, 1891, 832, 0, 0, - 0, 1072, 0, 0, 832, 0, 0, 0, 0, 1888, - 1892, 0, 0, 1072, 1889, 1890, 1891, 0, 0, 0, - 0, 0, 0, 0, 1444, 0, 855, 0, 0, 0, - 1892, 0, 0, 0, 0, 1890, 1891, 0, 0, 0, - 0, 0, 0, 1893, 855, 855, 0, 0, 0, 0, - 1892, 0, 0, 1072, 0, 0, 0, 1894, 5212, 0, - 1895, 0, 0, 1893, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2033, 855, 1894, 1446, 2033, - 1895, 0, 1888, 1893, 0, 1447, 0, 1889, 1448, 0, - 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, - 1895, 1888, 855, 0, 2033, 0, 1889, 0, 1890, 1891, - 855, 0, 0, 1449, 0, 0, 0, 855, 0, 0, - 0, 855, 0, 1892, 3919, 0, 0, 1890, 1891, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 855, 1892, 0, 1896, 1450, 855, 0, 0, 0, - 855, 0, 0, 2033, 0, 0, 1893, 0, 0, 0, - 0, 0, 0, 855, 1896, 0, 0, 0, 0, 0, - 1894, 0, 0, 1895, 0, 1893, 855, 0, 4759, 0, - 0, 0, 0, 0, 1896, 0, 855, 0, 0, 1894, - 0, 0, 1895, 4771, 0, 5213, 0, 0, 1292, 0, - 3920, 0, 0, 0, 1451, 0, 1452, 0, 0, 0, - 3344, 0, 0, 0, 0, 0, 1453, 0, 0, 0, - 0, 0, 0, 4805, 0, 1454, 0, 0, 0, 0, - 0, 832, 1072, 0, 0, 0, 1455, 0, 0, 0, - 1897, 2033, 4822, 1898, 1899, 1900, 0, 1901, 1902, 1903, - 1904, 1905, 1906, 0, 0, 2770, 0, 1896, 0, 0, - 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, - 1904, 1905, 1906, 0, 3090, 832, 1896, 1457, 1458, 0, - 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, - 1904, 1905, 1906, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1878, 3091, 0, 1879, 0, 0, - 0, 1880, 1881, 1882, 1072, 0, 0, 0, 855, 0, - 0, 0, 0, 0, 0, 0, 0, 832, 1883, 0, - 0, 3330, 0, 0, 0, 0, 1885, 0, 0, 0, - 0, 0, 0, 1886, 0, 0, 1442, 0, 4892, 0, - 0, 0, 1443, 1897, 0, 0, 1898, 1899, 1900, 0, - 1901, 1902, 1903, 1904, 1905, 1906, 0, 1887, 0, 1460, - 0, 855, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, - 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 0, - 0, 0, 0, 1444, 0, 0, 0, 0, 0, 1878, - 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, 855, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1883, 0, 1072, 3376, 855, 0, 0, - 0, 1885, 0, 0, 0, 855, 0, 0, 1886, 832, - 0, 4974, 1072, 0, 0, 832, 0, 1446, 0, 0, - 0, 0, 0, 0, 1447, 1072, 0, 1448, 0, 0, - 0, 0, 1887, 0, 0, 0, 832, 0, 0, 0, - 0, 832, 0, 0, 0, 0, 1888, 0, 0, 0, - 0, 1889, 1449, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 832, 832, 832, 0, 0, 832, - 0, 0, 1890, 1891, 0, 0, 0, 832, 832, 832, - 832, 0, 0, 0, 1450, 2033, 0, 1892, 0, 0, - 832, 2033, 0, 832, 0, 832, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 832, 832, 0, 0, - 832, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1893, 0, 0, 0, 832, 0, 832, 0, 832, 0, - 0, 0, 0, 0, 1894, 0, 0, 1895, 0, 0, - 0, 1888, 0, 1451, 0, 1452, 1889, 0, 832, 0, - 0, 0, 0, 0, 0, 1453, 0, 0, 0, 832, - 0, 832, 832, 832, 1454, 0, 0, 1890, 1891, 0, - 0, 0, 0, 0, 0, 1455, 855, 0, 0, 832, - 0, 0, 1892, 0, 0, 0, 0, 0, 0, 0, - 832, 0, 0, 0, 0, 832, 0, 0, 0, 0, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 832, 0, 3554, 0, 1893, 1457, 1458, 0, 0, - 0, 1896, 0, 0, 0, 0, 0, 0, 0, 1894, - 1072, 0, 1895, 1072, 1878, 1072, 0, 1879, 0, 1442, - 1072, 1880, 1881, 1882, 3555, 1443, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 855, 855, 0, 1883, 0, - 0, 832, 0, 0, 0, 0, 1885, 0, 0, 0, - 0, 0, 1878, 1886, 0, 1879, 0, 0, 0, 1880, - 1881, 1882, 855, 0, 0, 855, 1444, 0, 0, 1072, - 0, 0, 0, 0, 0, 0, 1883, 1887, 0, 3387, - 0, 0, 0, 0, 1885, 0, 1072, 0, 1460, 0, - 0, 1886, 0, 0, 0, 0, 1896, 1897, 0, 0, - 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, - 0, 1072, 0, 0, 0, 1887, 0, 0, 0, 0, - 1446, 0, 0, 0, 0, 0, 0, 1447, 0, 0, - 1448, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2033, 2033, 2033, 0, - 0, 0, 0, 0, 0, 1449, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3381, 0, - 855, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1072, 0, 1072, 0, 0, 0, 1888, 1450, 0, 0, - 855, 1889, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, - 1902, 1903, 1904, 1905, 1906, 855, 0, 0, 0, 0, - 0, 0, 1890, 1891, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1888, 0, 0, 1892, 0, 1889, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1451, 0, 1452, 0, - 1890, 1891, 0, 0, 0, 0, 0, 0, 1453, 0, - 1893, 0, 0, 1072, 0, 1892, 0, 1454, 0, 0, - 0, 0, 0, 0, 1894, 0, 0, 1895, 1455, 0, - 0, 0, 0, 855, 0, 0, 0, 0, 0, 0, - 0, 1072, 0, 0, 0, 0, 0, 0, 1893, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1894, 0, 1072, 1895, 3609, 0, 0, 1457, - 1458, 2033, 1072, 0, 1878, 0, 0, 1879, 855, 0, - 855, 1880, 1881, 1882, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 855, 0, 855, 0, 3610, 1883, 0, - 0, 0, 0, 0, 0, 0, 1885, 0, 0, 0, - 0, 1896, 0, 1886, 0, 0, 0, 2033, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1887, 0, 0, - 0, 1072, 0, 0, 0, 0, 0, 0, 0, 1896, - 0, 0, 0, 0, 0, 0, 0, 0, 855, 1072, - 0, 1460, 0, 0, 0, 0, 0, 0, 0, 848, - 857, 0, 1072, 0, 0, 0, 0, 0, 857, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 857, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 855, 1897, 0, 0, - 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, - 0, 0, 855, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 855, 1897, 1888, 855, 1898, 1899, - 1900, 1889, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, - 0, 0, 0, 0, 0, 832, 0, 0, 1072, 0, - 189, 0, 1890, 1891, 832, 0, 0, 0, 0, 0, - 832, 0, 832, 0, 0, 832, 0, 1892, 0, 1072, - 832, 832, 832, 832, 0, 0, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 0, 0, 0, 832, - 832, 0, 0, 0, 1072, 0, 0, 190, 0, 832, - 1893, 0, 0, 832, 0, 2033, 0, 832, 0, 0, - 0, 0, 191, 0, 1894, 832, 0, 1895, 832, 0, - 832, 0, 0, 0, 0, 0, 0, 0, 1072, 832, - 192, 0, 832, 832, 0, 0, 193, 832, 832, 0, - 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, - 0, 0, 0, 194, 832, 0, 0, 832, 0, 0, - 0, 0, 0, 0, 195, 0, 1878, 0, 0, 1879, - 832, 0, 196, 1880, 1881, 1882, 832, 832, 832, 0, - 0, 0, 0, 0, 197, 0, 0, 0, 0, 198, - 1883, 0, 0, 3926, 0, 0, 199, 0, 1885, 0, - 0, 1896, 832, 0, 0, 1886, 0, 0, 0, 0, - 0, 0, 0, 200, 0, 0, 0, 0, 832, 0, - 856, 0, 0, 0, 1072, 0, 0, 0, 856, 1887, - 0, 3872, 0, 0, 0, 0, 832, 0, 201, 0, - 0, 856, 0, 0, 0, 0, 0, 1878, 0, 0, - 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 202, - 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, - 0, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, - 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, - 0, 0, 0, 203, 0, 0, 0, 1897, 0, 0, - 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, - 1887, 0, 0, 0, 0, 0, 204, 2033, 0, 0, - 0, 0, 2033, 1072, 2033, 0, 205, 0, 0, 206, - 0, 0, 0, 0, 0, 857, 0, 0, 1888, 0, - 0, 857, 0, 1889, 0, 0, 2033, 1072, 0, 0, - 0, 0, 0, 0, 857, 207, 0, 0, 0, 0, - 208, 0, 209, 2033, 1890, 1891, 0, 0, 0, 210, - 857, 0, 211, 0, 0, 0, 0, 0, 855, 1892, - 0, 855, 0, 0, 0, 848, 857, 0, 0, 0, - 0, 212, 0, 857, 0, 0, 0, 213, 0, 0, - 0, 214, 215, 0, 0, 216, 857, 0, 0, 217, - 0, 0, 1893, 0, 0, 0, 857, 0, 218, 1888, - 0, 0, 0, 219, 1889, 0, 1894, 0, 0, 1895, - 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, - 0, 0, 0, 832, 0, 1890, 1891, 0, 221, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1892, 0, 0, 0, 0, 0, 0, 0, 855, 855, - 0, 0, 1072, 0, 0, 0, 0, 0, 855, 0, - 0, 0, 0, 0, 0, 832, 0, 0, 0, 0, - 0, 0, 0, 1893, 0, 0, 0, 855, 0, 0, - 0, 0, 0, 0, 857, 0, 0, 1894, 0, 0, - 1895, 0, 0, 1896, 1442, 0, 0, 0, 0, 0, - 1443, 0, 1072, 832, 832, 0, 0, 1497, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1498, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1444, 0, 0, 0, 0, 0, 0, 0, 855, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 832, 0, 0, 0, 1896, 1499, 0, 0, 0, 0, - 0, 832, 0, 0, 0, 856, 0, 0, 0, 1897, - 0, 856, 1898, 1899, 1900, 1446, 1901, 1902, 1903, 1904, - 1905, 1906, 1447, 0, 856, 1448, 0, 0, 0, 0, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, - 856, 832, 832, 0, 1072, 0, 0, 0, 832, 832, - 1449, 0, 0, 832, 1072, 0, 856, 0, 832, 0, - 0, 832, 832, 856, 0, 0, 832, 0, 0, 0, - 0, 0, 832, 0, 0, 0, 856, 0, 0, 1500, - 0, 0, 1450, 0, 832, 848, 856, 0, 0, 0, - 1897, 0, 832, 1898, 1899, 1900, 832, 1901, 1902, 1903, - 1904, 1905, 1906, 0, 0, 0, 0, 0, 0, 832, - 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, - 832, 0, 0, 0, 0, 0, 0, 1501, 0, 0, - 1502, 0, 0, 0, 0, 832, 0, 0, 0, 0, - 0, 1503, 0, 1452, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1453, 0, 0, 0, 0, 0, 0, - 0, 832, 1454, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1504, 1455, 856, 0, 0, 0, 0, 1072, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 855, 0, 0, 0, - 0, 2033, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3023, 0, 0, 1457, 1458, 1506, 1072, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 855, 0, 0, 1507, 0, 1072, 0, - 857, 0, 3024, 0, 0, 855, 0, 0, 0, 0, - 0, 0, 0, 0, 857, 0, 1509, 0, 0, 0, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 857, 855, 0, 0, 0, 0, 0, 1061, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, - 0, 0, 1061, 1072, 0, 0, 1460, 0, 0, 0, - 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, - 857, 0, 0, 857, 0, 0, 0, 0, 0, 0, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 855, 0, 0, 0, 0, 0, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, - 0, 0, 1072, 0, 1072, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 855, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 857, 832, 0, 0, 0, 1072, 0, 0, 857, - 857, 832, 0, 0, 0, 0, 0, 0, 0, 2035, - 0, 0, 0, 0, 0, 0, 0, 0, 832, 832, - 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, - 0, 0, 0, 0, 832, 0, 0, 0, 0, 832, - 856, 0, 832, 832, 0, 0, 0, 0, 0, 0, - 832, 832, 0, 0, 856, 0, 2035, 0, 0, 571, - 0, 0, 0, 0, 572, 0, 0, 0, 832, 0, - 832, 856, 0, 0, 0, 855, 573, 855, 0, 0, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 574, 856, - 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, - 0, 575, 0, 0, 0, 856, 0, 0, 0, 1072, - 855, 0, 576, 0, 0, 0, -850, 0, 0, 832, - 856, 1061, 0, 856, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 577, 0, 1061, 0, 0, 0, - 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2033, 0, 579, 0, 0, - 0, 832, 0, 0, 0, 0, 0, 0, 580, 0, - 0, 0, 0, 0, 0, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 0, - 0, 0, 0, 0, 0, 0, 583, 0, 0, 0, - 584, 0, 0, 0, 0, 1071, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4811, -1070, 0, 0, - 1061, 0, 0, 0, 0, 0, 0, 857, 1071, 832, - 0, 1072, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 856, 0, 1071, 0, 0, 0, 0, 0, 856, - 856, 0, 0, 0, 585, 832, 1072, 0, 832, 2034, - 832, 0, 0, -572, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, - 832, 0, 0, 0, 0, 0, 832, 0, 0, 0, - 832, 0, 0, 0, 0, 0, 1072, 586, 0, 0, - 587, 832, 857, 0, 0, 0, 0, 0, 0, 0, - 857, 0, 0, 0, 0, 0, 2034, 0, 0, 0, - 588, 0, 857, 0, 0, 0, 0, 1071, 0, 0, - 1061, 0, 0, 589, 0, 0, 0, 0, 0, 0, - -449, 0, 2033, 0, 0, 0, 0, 0, 0, 0, - 1072, 0, 0, 0, 0, 1072, 1072, 0, 0, 590, - 832, 0, 0, 0, 0, 0, 591, 0, 0, 0, - 0, 0, 0, -449, 0, 0, 592, 0, 855, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 848, 848, 593, 857, 857, 0, 0, - 0, 594, 0, 0, 0, 0, -449, 832, 857, 595, - 596, 0, 597, 598, 0, 0, 0, 0, 0, 857, - 857, 0, 599, 0, 0, 0, 0, 600, 0, 0, - 832, 0, 0, 601, 0, 857, 602, 1071, 0, 603, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -449, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1072, 1072, 0, 848, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 832, 0, 0, 832, 0, - 0, 832, 0, 0, 0, 0, 0, 856, 0, 0, - 0, 0, 832, 0, 0, 0, 0, 832, 0, 832, - 0, 832, 0, 0, 0, 0, 0, 0, 0, 832, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 832, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2034, 0, - 0, 0, 0, 0, 0, 2035, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2033, 0, 855, - 0, 0, 856, 0, 0, 0, 0, 0, 0, 0, - 856, 0, 0, 0, 0, 0, 0, 0, 1268, 1268, - 0, 0, 856, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 832, - 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1061, 2107, 0, 0, 0, 0, 0, 0, - 0, 0, 832, 832, 0, 0, 0, 0, 0, 0, - 832, 2033, 0, 0, 1072, 1061, 856, 856, 0, 0, - 832, 0, 0, 0, 0, 0, 0, 0, 856, 855, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, - 856, 0, 832, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, - 2107, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 832, 1061, 0, 0, 0, 832, 1071, - 0, 0, 0, 0, 0, 0, 0, 832, 0, 1061, - 0, 857, 0, 832, 832, 832, 0, 0, 1061, 0, - 0, 0, 1071, 0, 832, 0, 0, 0, 0, 857, - 1061, 0, 0, 0, 2035, 857, 0, 0, 0, 857, - 0, 832, 0, 0, 0, 0, 0, 857, 0, 0, - 0, 0, 0, 0, 0, 855, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2034, 0, 0, 0, 832, - 0, 0, 0, 0, 0, 1061, 0, 848, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, - 0, 1071, 0, 0, 0, 0, 832, 832, 0, 857, - 0, 1061, 0, 0, 0, 0, 1071, 0, 0, 0, - 0, 0, 0, 1061, 0, 2107, 0, 857, 857, 0, - 0, 2033, 0, 0, 0, 0, 0, 1071, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, - 0, 0, 0, 0, 832, 0, 0, 0, 2035, 857, - 0, 0, 2035, 1061, 1061, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, - 2033, 0, 0, 0, 0, 857, 0, 2035, 0, 0, - 0, 0, 1071, 857, 0, 2033, 832, 832, 0, 0, - 857, 0, 0, 0, 857, 0, 1071, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, - 0, 0, 0, 0, 857, 0, 0, 0, 0, 857, - 1071, 0, 0, 857, 0, 0, 2035, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 857, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, - 1071, 1071, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 856, 0, 0, 0, 1835, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1061, 0, 856, - 0, 0, 0, 0, 2034, 856, 0, 0, 0, 856, - 0, 0, 0, 0, 0, 1849, 0, 856, 0, 0, - 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, - 0, 0, 0, 1867, 1868, 1869, 0, 1871, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 623, 0, 0, 0, 1913, 624, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, - 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 856, 856, 0, - 0, 857, 626, 0, 1071, 0, 0, 0, 1950, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2034, 856, - 628, 0, 2034, 0, 0, 0, 2054, 0, 0, 0, - 2066, 2069, 2762, 0, 0, 0, 0, 0, 629, 0, - 0, 0, 0, 0, 857, 856, 0, 2034, 0, 0, - 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, - 856, 630, 0, 0, 856, 0, 0, 0, 0, 0, - 0, 0, 631, 0, 0, 0, 0, 0, 0, 0, - 632, 0, 857, 0, 856, 0, 0, 0, 0, 856, - 0, 0, 633, 856, 0, 0, 2034, 634, 0, 0, - 857, 0, 0, 0, 635, 1061, 856, 0, 857, 1061, - 1061, 0, 0, 0, 0, 0, 0, 0, 848, 856, - 0, 636, 0, 0, 0, 0, 0, 0, 0, 856, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, - 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1061, 2034, 0, 0, 0, 2035, 0, - 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, - 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2823, 639, 0, 0, 2107, 2829, 0, 0, - 0, 0, 0, 1061, 640, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 205, 0, 0, 641, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 856, 0, 642, 0, 0, 0, 0, 643, 0, - 644, 0, 0, 0, 0, 0, 0, 645, 1071, 857, - 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1071, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 0, 0, 0, 648, 0, 0, 0, 0, - 649, 0, 0, 650, 856, 0, 0, 651, 0, 0, - 0, 0, 0, 0, 652, 0, 653, 0, 0, 0, - 1071, 654, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, - 0, 0, 856, 0, 0, 0, 656, 0, 857, 857, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 856, 0, 0, 0, 0, 0, 0, 0, 856, 0, - 0, 0, 0, 0, 0, 857, 0, 0, 857, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 922, 0, 1061, 0, 0, 923, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 925, 926, 0, 0, 0, 0, 2034, 0, - 0, 0, 0, 927, 2034, 0, 0, 928, 0, 2035, - 2035, 2035, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1061, 929, 0, 0, 0, 0, - 0, 0, 0, 857, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 930, 1071, - 0, 0, 0, 857, 0, 0, 0, 0, 2631, 931, - 0, 0, 0, 0, 0, 0, 0, 932, 857, 0, - 0, 2651, 0, 2653, 0, 0, 2665, 2668, 2673, 933, - 0, 0, 0, 2679, 934, 0, 2684, 0, 0, 856, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2691, 2692, 2693, 2694, 0, 0, 0, 935, 2701, - 0, 0, 0, 2713, 0, 0, 2715, 0, 0, 2722, - 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 0, 2731, - 0, 2107, 0, 936, 0, 1061, 1268, 0, 2759, 0, - 0, 0, 0, 0, 0, 0, 857, 0, 0, 0, - 0, 0, 1061, 0, 937, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1061, 0, 0, 856, 856, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2035, 0, 0, 0, 938, 0, - 0, 857, 0, 857, 0, 856, 0, 0, 856, 0, - 0, 0, 0, 0, 0, 0, 857, 0, 857, 0, - 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 205, 0, 0, 940, 0, 0, 0, 0, 0, - 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, - 941, 0, 0, 0, 0, 942, 0, 943, 0, 1071, - 0, 0, 0, 0, 944, 0, 2779, 945, 0, 0, - 0, 857, 1071, 0, 0, 1063, 0, 0, 0, 2034, - 2034, 2034, 0, 0, 0, 0, 946, 0, 0, 0, - 0, 0, 947, 0, 0, 0, 0, 948, 0, 1063, - 949, 0, 0, 856, 950, 0, 0, 0, 0, 0, - 0, 951, 0, 952, 0, 0, 0, 0, 953, 857, - 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 857, 0, 0, 856, 0, - 0, 0, 0, 954, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 857, 0, 0, - 857, 0, 0, 0, 0, 0, 0, 0, 2868, 0, - 1061, 0, 0, 1061, 0, 1061, 0, 0, 0, 0, - 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2762, 2762, - 2762, 0, 0, 0, 0, 0, 856, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 1061, - 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 1064, - 0, 0, 0, 0, 2034, 0, 0, 0, 0, 0, - 0, 856, 0, 856, 0, 0, 0, 0, 0, 0, - 0, 1061, 0, 0, 0, 0, 856, 2107, 856, 0, - 2829, 0, 2829, 0, 0, 0, 0, 2107, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, - 1061, 856, 1061, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1063, 0, 0, 2107, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, - 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, - 857, 0, 0, 0, 0, 856, 0, 0, 0, 0, - 0, 0, 0, 1063, 3129, 0, 0, 0, 0, 0, - 0, 0, 0, 1061, 0, 0, 0, 856, 0, 0, - 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1071, 0, 1071, - 2035, 1061, 0, 0, 0, 2035, 0, 2035, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1061, 0, 0, 0, 0, 2035, - 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2035, 1063, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2034, 0, - 0, 857, 0, 0, 857, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, - 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, - 0, 1061, 0, 0, 0, 0, 0, 0, 1071, 0, - 0, 0, 0, 1064, 0, 0, 0, 0, 0, 1061, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2829, 1061, 0, 0, 0, 0, 0, 0, 2829, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 857, 857, 0, 0, 0, 0, 1063, 0, 0, - 0, 857, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 857, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1064, 1066, 3326, - 0, 0, 0, 0, 3332, 0, 0, 0, 1071, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 856, 0, 1066, 0, 0, 0, 2829, 0, 1061, 1871, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, - 2673, 0, 2673, 2673, 0, 0, 0, 0, 0, 1061, - 0, 0, 857, 3390, 0, 0, 3393, 0, 3395, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2034, 0, 0, 0, 1061, 2034, 0, 2034, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3413, 0, 3416, - 0, 3418, 0, 0, 0, 0, 0, 0, 0, 2034, - 0, 0, 0, 0, 0, 0, 0, 1064, 1061, 0, - 0, 0, 0, 0, 0, 0, 2034, 0, 0, 0, - 0, 0, 0, 0, 2759, 2759, 2759, 0, 0, 0, - 0, 856, 0, 0, 856, 1071, 0, 0, 0, 0, - 0, 0, 3468, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2054, 0, 0, 1071, 0, 3478, 0, - 0, 0, 0, 1063, 2069, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, - 0, 856, 856, 0, 3515, 0, 0, 0, 0, 0, - 1063, 856, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2762, 0, 0, 0, 1063, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, - 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, - 0, 0, 1063, 0, 0, 0, 0, 0, 1066, 0, - 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, - 0, 2107, 0, 1064, 0, 0, 857, 0, 0, 0, - 0, 1066, 856, 0, 0, 0, 0, 1061, 857, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, - 1064, 0, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, - 2829, 0, 0, 0, 0, 0, 0, 0, 0, 1064, - 1066, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 2829, 0, 0, 0, 0, 0, - 0, 0, 1064, 0, 0, 0, 0, 857, 0, 1067, - 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1063, 0, 1061, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, - 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 1063, 1063, 0, 0, 0, 1064, 0, 0, 0, 856, - 0, 0, 0, 0, 2034, 0, 0, 1064, 0, 1071, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 856, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 856, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2107, - 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1061, 856, 1064, 0, 857, 0, - 857, 0, 0, 0, 1061, 0, 0, 0, 1064, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 857, 1063, 0, 0, 0, 0, 0, - 0, 0, 848, 0, 0, 0, 0, 0, 0, 0, - 1064, 1064, 0, 0, 0, 0, 0, 0, 3873, 0, - 0, 0, 0, 0, 0, 0, 0, 3877, 0, 0, - 0, 0, 0, 3878, 0, 3879, 0, 856, 2035, 0, - 0, 0, 0, 0, 848, 1067, 0, 0, 0, 0, - 0, 1071, 0, 0, 0, 0, 1066, 0, 0, 0, - 0, 1071, 3903, 3904, 0, 0, 0, 0, 1067, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, - 2679, 0, 0, 1067, 0, 0, 0, 0, 3929, 0, - 0, 3932, 0, 3934, 0, 0, 0, 0, 0, 0, - 0, 0, 3938, 0, 0, 0, 0, 0, 0, 856, - 3945, 3946, 0, 0, 0, 0, 2762, 1061, 0, 0, - 0, 2762, 0, 1066, 0, 0, 0, 2762, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, - 0, 0, 0, 3993, 1064, 0, 0, 0, 0, 4000, - 4001, 2759, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1066, 0, 0, 0, 0, 1067, 1069, 0, - 0, 0, 0, 0, 0, 4016, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 1071, 0, 0, 0, - 0, 4029, 1069, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, - 0, 0, 1063, 0, 0, 0, 1063, 1063, 856, 0, - 856, 0, 0, 0, 1071, 2035, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 857, 0, 856, 1066, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1067, 1063, 1066, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, - 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 0, 0, 0, 0, 0, 0, 0, 2034, 0, - 1071, 0, 0, 0, 1061, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 1061, 0, 0, 0, - 0, 0, 1064, 0, 0, 0, 1064, 1064, 0, 1066, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4596, - 0, 1071, 0, 0, 0, 0, 0, 0, 1064, 0, - 0, 0, 0, 1066, 1066, 0, 0, 0, 0, 0, - 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2035, 0, 857, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1071, 0, 0, 0, 0, 1069, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1064, 0, 0, 1067, 0, 0, 0, 0, 0, 1061, - 0, 1069, 0, 0, 0, 2034, 4291, 4292, 0, 0, - 0, 0, 0, 0, 0, 0, 1069, 0, 0, 1063, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 856, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, - 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 857, 4328, 0, 0, 0, 1066, 0, 0, - 0, 0, 0, 0, 4333, 848, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, - 1069, 1063, 0, 0, 0, 0, 2829, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1061, 1067, 0, 4348, 4350, 0, 0, 0, 0, - 0, 4354, 4355, 0, 0, 0, 4356, 0, 0, 0, - 0, 4359, 0, 0, 4362, 4363, 1061, 0, 0, 4367, - 0, 0, 0, 0, 0, 4371, 848, 848, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 2759, 0, 0, 0, 0, 2759, 857, 0, - 0, 1067, 0, 2759, 0, 0, 0, 0, 0, 0, - 1069, 0, 1063, 0, 0, 0, 1067, 0, 1268, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 2829, 1063, - 2034, 0, 856, 0, 0, 0, 0, 1067, 0, 0, - 1061, 0, 1063, 0, 4431, 1061, 1061, 0, 0, 0, - 0, 1064, 0, 1071, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1067, 1071, 0, 1066, 0, 0, 0, 1066, - 1066, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0, - 0, 0, 0, 2035, 2034, 0, 0, 0, 0, 0, - 1067, 0, 0, 0, 0, 0, 0, 0, 2035, 848, - 848, 0, 856, 0, 4492, 0, 0, 1071, 0, 0, - 0, 0, 1071, 1071, 0, 1061, 0, 0, 0, 0, - 0, 1066, 1064, 0, 0, 0, 0, 0, 0, 0, - 1067, 1067, 0, 1066, 0, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4528, 0, 0, 1066, 0, 0, 1069, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, - 1063, 0, 1063, 0, 0, 0, 0, 1063, 0, 0, - 0, 4596, 1071, 0, 0, 0, 0, 0, 856, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1067, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1069, 1063, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2034, 1069, 0, 0, 1063, 0, - 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, - 0, 4632, 4633, 0, 0, 4634, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1066, 2034, 0, 0, 0, 1064, 0, 0, - 1064, 0, 1064, 4670, 4671, 0, 0, 1064, 2034, 0, - 0, 0, 0, 0, 0, 0, 0, 1063, 0, 1063, - 0, 0, 0, 4683, 1069, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, - 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 1069, 1071, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1064, 1066, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, - 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, - 0, 0, 1067, 0, 0, 0, 1067, 1067, 1063, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1063, 0, 1069, 0, 0, 0, 0, 0, 1063, - 0, 0, 0, 0, 0, 0, 0, 1064, 0, 1064, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 1067, 0, - 0, 0, 0, 1069, 1069, 0, 0, 0, 0, 0, - 1067, 0, 1066, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, - 0, 2679, 0, 0, 0, 0, 0, 0, 1063, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1067, 0, 0, 0, 0, 0, 1063, 0, 0, 4860, - 1064, 0, 0, 0, 0, 0, 0, 0, 0, 1063, - 0, 0, 0, 0, 1871, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1064, 0, 0, 0, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4910, 0, 0, 0, 1069, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 1064, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, - 1066, 0, 0, 1066, 0, 1066, 0, 0, 0, 0, - 1066, 0, 0, 0, 0, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4670, 0, 0, 0, 0, 1066, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, - 5052, 1067, 0, 0, 0, 1064, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, - 0, 1066, 0, 0, 0, 0, 1064, 0, 0, 0, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1069, 0, 0, 0, 1069, - 1069, 1064, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1908, 0, 5104, 0, 0, 1064, 0, 0, 0, 0, - 1066, 0, 1066, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1069, 1067, 0, 0, 5130, 5130, 0, 0, 0, - 0, 0, 0, 1069, 0, 0, 0, 0, 0, 1067, - 1063, 0, 0, 4670, 0, 0, 0, 0, 0, 0, - 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, - 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, - 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 5189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1066, 0, 0, 0, 5130, 0, - 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5230, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, - 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1066, 0, 0, 1064, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, - 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1069, 0, 0, 0, 0, 1067, 0, 0, - 1067, 0, 1067, 0, 0, 0, 0, 1067, 0, 0, - 0, 5130, 0, 0, 0, 0, 0, 5288, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 1069, 0, 0, 0, 1066, 1064, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1067, 1066, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1066, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, - 0, 0, 0, 0, 0, 0, 0, 1067, 0, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1908, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, - 1067, 1064, 2661, 0, 1066, 0, 0, 0, 0, 0, - 0, 1064, 0, 0, 0, 0, 1908, 1908, 1908, 0, - 1908, 0, 0, 0, 1063, 0, 0, 0, 1067, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, - 0, 1067, 0, 0, 0, 0, 0, 0, 0, 1067, - 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, - 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, - 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1066, 1067, 0, - 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1069, 0, 0, 1069, 1064, 1069, 0, 0, 0, 0, - 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, - 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1908, 0, 0, 1908, 0, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, - 0, 0, 1066, 0, 0, 1067, 0, 0, 0, 0, - 1064, 0, 0, 1063, 0, 0, 0, 0, 0, 0, - 0, 1069, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1067, 1066, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 1069, 0, 1069, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1069, 1066, 0, 0, 0, 0, 0, - 0, 1067, 0, 0, 1066, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, - 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1063, 0, 0, 1064, 0, 0, 0, - 0, 1069, 0, 0, 1067, 0, 0, 0, 0, 1066, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1069, 1063, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, - 0, 0, 1063, 1063, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1069, 1067, - 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1064, 0, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1069, 0, 0, 0, 0, 1067, - 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1063, 0, 0, 0, 0, 0, 1069, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1908, 0, 0, 0, 0, 0, 0, 1064, 0, 0, - 0, 0, 1064, 1064, 1066, 0, 0, 0, 0, 0, - 1908, 0, 1908, 0, 0, 2661, 2661, 0, 3367, 0, - 2661, 0, 0, 0, 1908, 0, 0, 1908, 0, 0, - 0, 0, 1908, 0, 0, 0, 0, 0, 1908, 0, - 0, 0, 0, 1908, 0, 0, 1066, 0, 0, 0, - 1908, 1908, 1908, 1908, 0, 0, 0, 2661, 2661, 0, - 1908, 1067, 0, 0, 1069, 0, 0, 0, 0, 0, - 0, 1067, 1908, 0, 1908, 0, 0, 0, 0, 0, - 0, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, - 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1064, 0, 0, 0, 0, 0, 1908, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1063, 0, 1069, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, - 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1064, 1069, 0, 0, 0, 0, 0, 0, 0, - 1067, 0, 0, 0, 0, 0, 1066, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1069, 0, 0, 0, 1066, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 0, 0, 0, 0, 1066, 1066, 0, 0, 0, - 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1069, 0, 0, 0, 1908, 0, - 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, - 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, - 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3367, 3367, 0, - 0, 2661, 2661, 2661, 2661, 0, 0, 2661, 2661, 2661, - 2661, 2661, 2661, 2661, 2661, 2661, 2661, 3367, 1067, 0, - 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, - 0, 0, 0, 1069, 0, 0, 0, 0, 0, 1908, - 0, 0, 1908, 1067, 1908, 0, 0, 3367, 3367, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1908, 2661, 2661, 1908, 0, 1908, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0, - 0, 0, 1067, 1067, 1069, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2661, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1908, 0, 0, 0, 1908, 1908, 1908, 0, - 0, 0, 0, 0, 3367, 3367, 3367, 3367, 0, 0, - 0, 0, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, - 3367, 3367, 1908, 1908, 0, 0, 0, 0, 0, 0, - 1069, 0, 0, 0, 0, 1069, 1069, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, - 0, 1908, 0, 1908, 0, 0, 0, 1908, 0, 0, - 3367, 3367, 0, 0, 1908, 1908, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1908, 0, 0, 0, 0, 0, 0, 1908, - 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1069, 0, 0, 1908, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3367, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1908, 1908, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, - 0, 0, 1908, 2661, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1908, 0, 1908, - 0, 0, 0, 1908, 1908, 1908, 0, 0, 1908, 0, - 0, 1908, 1908, 0, 0, 0, 1908, 0, 0, 0, - 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3367, 2661, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1908, 1908, 1908, 0, 0, 0, 0, 0, 0, - 0, 2661, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, - 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3367, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2661, 0, 0, 3367, 0, 0, 0, 1908, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3367, - 0, 2661, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2661, 2661, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 3367, 3367, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 2753, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 1908, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 2754, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 2755, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 2756, 0, - 0, 0, 0, 0, 0, 1256, 2757, 804, 1185, 618, - 1186, 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, - 0, 0, 225, 226, 227, 228, 229, 230, 231, 232, - 0, 234, 235, 236, 0, 0, 0, 0, 1190, 0, - 0, 237, 238, 0, 239, 240, 241, 805, 242, 243, - 244, 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, - 252, 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, - 259, 260, 261, 262, 1198, 0, 1199, 0, 264, 265, - 266, 267, 268, 808, 269, 270, 271, 0, 272, 273, - 274, 275, 276, 277, 0, 809, 278, 279, 280, 1200, - 1201, 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, - 285, 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 0, - 0, 301, 302, 1042, 304, 305, 0, 306, 307, 308, - 0, 309, 310, 311, 0, 312, 313, 314, 315, 1210, - 317, 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, - 325, 0, 326, 0, 327, 811, 0, 812, 328, 329, - 330, 331, 0, 332, 1214, 0, 1215, 335, 0, 336, - 337, 338, 339, 340, 813, 341, 342, 343, 344, 0, - 345, 346, 347, 348, 349, 350, 0, 351, 814, 352, - 353, 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, - 815, 816, 361, 817, 362, 363, 364, 365, 366, 0, - 0, 367, 1219, 818, 369, 819, 0, 370, 371, 372, - 1220, 1221, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 1222, 820, - 1223, 391, 392, 393, 394, 1224, 395, 396, 821, 397, - 1225, 1226, 399, 1227, 401, 402, 403, 0, 404, 405, - 0, 0, 1228, 407, 408, 0, 0, 409, 410, 822, - 411, 823, 1229, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 0, 0, 422, 423, 1230, 425, 426, 427, - 428, 429, 0, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 1231, 440, 441, 442, 443, 0, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 0, 456, 457, 824, 458, 459, 460, 1232, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 40, 471, 472, - 473, 474, 475, 1233, 476, 477, 478, 479, 480, 825, - 481, 482, 1234, 484, 0, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 1235, 0, 498, - 499, 44, 500, 826, 501, 502, 503, 504, 505, 0, - 1236, 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, - 513, 514, 515, 516, 517, 518, 519, 0, 1241, 520, - 521, 522, 523, 524, 1242, 0, 525, 526, 527, 528, - 529, 1116, 1243, 0, 532, 827, 533, 534, 535, 536, - 0, 0, 537, 0, 49, 538, 539, 540, 541, 542, - 543, 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, - 1251, 554, 555, 556, 557, 1252, 0, 50, 0, 0, - 0, 0, 1253, 1254, 0, 0, 0, 0, 0, 0, - 0, 1256, 4872, 804, 1185, 618, 1186, 1187, 1188, 677, - 1189, 0, 0, 0, 0, 0, 0, 0, 225, 226, - 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, - 0, 0, 0, 0, 1190, 0, 0, 237, 238, 0, - 239, 240, 241, 805, 242, 243, 244, 245, 1191, 806, - 1192, 1193, 0, 249, 250, 251, 252, 253, 1194, 1195, - 254, 255, 1196, 1197, 258, 0, 259, 260, 261, 262, - 1198, 0, 1199, 0, 264, 265, 266, 267, 268, 808, - 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, - 0, 809, 278, 279, 280, 1200, 1201, 1202, 1203, 1204, - 1205, 1206, 281, 282, 283, 284, 285, 286, 1207, 1208, - 289, 1209, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 0, 0, 301, 302, 1042, - 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, - 0, 312, 313, 314, 315, 1210, 317, 318, 319, 1211, - 1212, 321, 0, 322, 323, 1213, 325, 0, 326, 0, - 327, 811, 0, 812, 328, 329, 330, 331, 0, 332, - 1214, 0, 1215, 335, 0, 336, 337, 338, 339, 340, - 813, 341, 342, 343, 344, 0, 345, 346, 347, 348, - 349, 350, 0, 351, 814, 352, 353, 354, 355, 356, - 1216, 1217, 0, 1218, 0, 360, 815, 816, 361, 817, - 362, 363, 364, 365, 366, 0, 0, 367, 1219, 818, - 369, 819, 0, 370, 371, 372, 1220, 1221, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 1222, 820, 1223, 391, 392, 393, - 394, 1224, 395, 396, 821, 397, 1225, 1226, 399, 1227, - 401, 402, 403, 0, 404, 405, 0, 0, 1228, 407, - 408, 0, 0, 409, 410, 822, 411, 823, 1229, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, - 422, 423, 1230, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 1231, 440, - 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 0, 456, 457, 824, - 458, 459, 460, 1232, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 1233, - 476, 477, 478, 479, 480, 825, 481, 482, 1234, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 1235, 0, 498, 499, 0, 500, 826, - 501, 502, 503, 504, 505, 0, 1236, 1237, 0, 0, - 508, 509, 1238, 511, 1239, 1240, 513, 514, 515, 516, - 517, 518, 519, 0, 1241, 520, 521, 522, 523, 524, - 1242, 0, 525, 526, 527, 528, 529, 530, 1243, 0, - 532, 827, 533, 534, 535, 536, 0, 0, 537, 0, - 0, 538, 539, 540, 541, 542, 543, 544, 1244, 1245, - 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, 555, 556, - 557, 1252, 0, 0, 0, 0, 0, 0, 1253, 1254, - 0, 0, 0, 0, 0, 0, 0, 1256, 2663, 804, - 1185, 618, 1186, 1187, 1188, 677, 1189, 0, 0, 0, - 0, 0, 0, 0, 225, 226, 227, 228, 229, 230, - 231, 232, 0, 234, 235, 236, 0, 0, 0, 0, - 1190, 0, 0, 237, 238, 0, 239, 240, 241, 805, - 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, 249, - 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, 1197, - 258, 0, 259, 260, 261, 262, 1198, 0, 1199, 0, - 264, 265, 266, 267, 268, 808, 269, 270, 271, 0, - 272, 273, 274, 275, 276, 277, 0, 809, 278, 279, - 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, 282, - 283, 284, 285, 286, 1207, 1208, 289, 1209, 290, 0, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 0, 0, 301, 302, 1042, 304, 305, 0, 306, - 307, 308, 0, 309, 310, 311, 0, 312, 313, 314, - 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, 322, - 323, 1213, 325, 0, 326, 0, 327, 811, 0, 812, - 328, 329, 330, 331, 0, 332, 1214, 0, 1215, 335, - 0, 336, 337, 338, 339, 340, 813, 341, 342, 343, - 344, 0, 345, 346, 347, 348, 349, 350, 0, 351, - 814, 352, 353, 354, 355, 356, 1216, 1217, 0, 1218, - 0, 360, 815, 816, 361, 817, 362, 363, 364, 365, - 366, 0, 0, 367, 1219, 818, 369, 819, 0, 370, - 371, 372, 1220, 1221, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 1222, 820, 1223, 391, 392, 393, 394, 1224, 395, 396, - 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, 0, - 404, 405, 0, 0, 1228, 407, 408, 0, 0, 409, - 410, 822, 411, 823, 1229, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 0, 0, 422, 423, 1230, 425, - 426, 427, 428, 429, 0, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 1231, 440, 441, 442, 443, 0, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 0, 456, 457, 824, 458, 459, 460, 1232, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 0, - 471, 472, 473, 474, 475, 1233, 476, 477, 478, 479, - 480, 825, 481, 482, 1234, 484, 0, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 1235, - 0, 498, 499, 0, 500, 826, 501, 502, 503, 504, - 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, 511, - 1239, 1240, 513, 514, 515, 516, 517, 518, 519, 0, - 1241, 520, 521, 522, 523, 524, 1242, 0, 525, 526, - 527, 528, 529, 530, 1243, 0, 532, 827, 533, 534, - 535, 536, 0, 0, 537, 0, 0, 538, 539, 540, - 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, 1248, - 1249, 1250, 1251, 554, 555, 556, 557, 1252, 0, 0, - 0, 0, 0, 0, 1253, 1254, 0, 0, 0, 0, - 0, 0, 0, 1256, 3881, 804, 1185, 618, 1186, 1187, - 1188, 677, 1189, 0, 0, 0, 0, 0, 0, 0, - 225, 226, 227, 228, 229, 230, 231, 232, 0, 234, - 235, 236, 0, 0, 0, 0, 1190, 0, 0, 237, - 238, 0, 239, 240, 241, 805, 242, 243, 244, 245, - 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, 253, - 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, 260, - 261, 262, 1198, 0, 1199, 0, 264, 265, 266, 267, - 268, 808, 269, 270, 271, 0, 272, 273, 274, 275, - 276, 277, 0, 809, 278, 279, 280, 1200, 1201, 1202, - 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, 286, - 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 0, 0, 301, - 302, 1042, 304, 305, 0, 306, 307, 308, 0, 309, - 310, 311, 0, 312, 313, 314, 315, 1210, 317, 318, - 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, 0, - 326, 0, 327, 811, 0, 812, 328, 329, 330, 331, - 0, 332, 1214, 0, 1215, 335, 0, 336, 337, 338, - 339, 340, 813, 341, 342, 343, 344, 0, 345, 346, - 347, 348, 349, 350, 0, 351, 814, 352, 353, 354, - 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, 816, - 361, 817, 362, 363, 364, 365, 366, 0, 0, 367, - 1219, 818, 369, 819, 0, 370, 371, 372, 1220, 1221, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 1222, 820, 1223, 391, - 392, 393, 394, 1224, 395, 396, 821, 397, 1225, 1226, - 399, 1227, 401, 402, 403, 0, 404, 405, 0, 0, - 1228, 407, 408, 0, 0, 409, 410, 822, 411, 823, - 1229, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 0, 0, 422, 423, 1230, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 1231, 440, 441, 442, 443, 0, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 0, 456, - 457, 824, 458, 459, 460, 1232, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 1233, 476, 477, 478, 479, 480, 825, 481, 482, - 1234, 484, 0, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 1235, 0, 498, 499, 0, - 500, 826, 501, 502, 503, 504, 505, 0, 1236, 1237, - 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, 514, - 515, 516, 517, 518, 519, 0, 1241, 520, 521, 522, - 523, 524, 1242, 0, 525, 526, 527, 528, 529, 530, - 1243, 0, 532, 827, 533, 534, 535, 536, 0, 0, - 537, 0, 0, 538, 539, 540, 541, 542, 543, 544, - 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, - 555, 556, 557, 1252, 0, 0, 224, 0, 0, 0, - 1253, 1254, 0, 0, 0, 0, 0, 0, 0, 1256, - 3952, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 3970, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, -1726, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, -1726, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, -1726, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, -1726, 362, 363, 364, 365, 366, 0, 0, - 367, 368, -1726, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, -1726, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, -1726, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 0, 0, 0, 1034, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1337, 225, 226, 227, 228, 229, 230, 231, 232, - 0, 234, 235, 236, 0, 0, 0, 0, 0, 0, - 0, 237, 238, 0, 239, 240, 241, 805, 242, 243, - 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, - 252, 253, 0, 0, 254, 255, 1038, 1039, 258, 0, - 259, 260, 261, 262, 0, 0, 807, 0, 264, 265, - 266, 267, 268, 808, 269, 270, 271, 0, 272, 273, - 274, 275, 276, 277, 0, 809, 278, 279, 280, 0, - 0, 0, 810, 0, 0, 0, 281, 282, 283, 284, - 285, 286, 1040, 1041, 289, 0, 290, 0, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 0, - 0, 301, 302, 1042, 304, 305, 0, 306, 307, 308, - 0, 309, 310, 311, 0, 312, 313, 314, 315, 0, - 317, 318, 319, 0, 0, 321, 0, 322, 323, 1043, - 325, 0, 326, 0, 327, 811, 0, 812, 328, 329, - 330, 331, 0, 332, 0, 0, 0, 335, 0, 336, - 337, 338, 339, 340, 813, 341, 342, 343, 344, 2093, - 345, 346, 347, 348, 349, 350, 0, 351, 814, 2094, - 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, - 815, 816, 361, 817, 362, 363, 364, 365, 366, 0, - 0, 367, 0, 818, 369, 819, 0, 370, 371, 372, - 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 1048, 820, - 1049, 391, 392, 393, 0, 0, 395, 396, 821, 397, - 0, 0, 399, 1050, 401, 402, 403, 0, 404, 405, - 0, 0, 406, 407, 408, 0, 0, 409, 2096, 822, - 411, 823, 0, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 0, 0, 422, 423, 0, 425, 0, 427, - 428, 429, 0, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 1051, 440, 441, 442, 443, 0, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 0, 456, 457, 824, 458, 459, 460, 0, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 0, 476, 477, 2097, 479, 480, 825, - 481, 482, 1053, 484, 0, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 0, 498, - 499, 0, 500, 826, 501, 502, 503, 504, 505, 0, - 1054, 1055, 0, 0, 508, 509, 0, 511, 0, 0, - 513, 514, 515, 516, 517, 518, 519, 0, 0, 520, - 521, 522, 523, 524, 0, 0, 525, 526, 527, 528, - 529, 0, 1056, 2098, 532, 827, 533, 534, 535, 536, - 0, 0, 537, 0, 0, 538, 539, 540, 541, 542, - 543, 1034, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 555, 556, 557, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 2203, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, - 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, - 1038, 1039, 258, 0, 259, 260, 261, 262, 0, 0, - 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, - 281, 282, 283, 284, 285, 286, 1040, 1041, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 0, 317, 318, 319, 0, 0, 321, - 0, 322, 323, 1043, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 0, 0, - 0, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 2093, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 2094, 353, 354, 355, 356, 1045, 1046, - 0, 1047, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 0, 818, 369, 819, - 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1048, 820, 1049, 391, 392, 393, 0, 0, - 395, 396, 821, 397, 0, 0, 399, 1050, 401, 402, - 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, - 0, 409, 2096, 822, 411, 823, 0, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 0, 425, 0, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1051, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 0, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, - 2097, 479, 480, 825, 481, 482, 1053, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1054, 1055, 0, 0, 508, 509, - 0, 511, 0, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, - 525, 526, 527, 528, 529, 0, 1056, 2098, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 0, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 555, 556, 557, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 3215, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 40, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 44, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 1116, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 49, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 1252, 0, 50, 0, 0, 0, - 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, - 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 2669, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 2670, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 2671, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 2672, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, - 0, 1253, 1254, 0, 0, 0, 0, 0, 1832, 2624, - 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 1255, 0, - 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 2064, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, - 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, - 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 2670, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 4002, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, - 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, - 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 4015, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, - 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, - 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 4340, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 4349, 394, 1224, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, - 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, - 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 4660, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 4661, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 4662, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 4663, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 5127, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 5128, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 5129, 518, 519, 0, 1241, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, - 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, - 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 5128, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 5129, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 4853, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 0, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 2655, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 0, 0, 0, 0, 0, 0, - 0, 2656, 2657, 0, 0, 0, 0, 0, 0, 0, - 2658, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, -2568, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 5128, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, -2568, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 0, 0, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, -2568, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, - 395, 396, 0, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, -2568, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 5129, 518, - 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, -2568, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, - 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, - 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, - 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, - 286, 1207, 1208, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, - 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, - 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, - 391, 392, 393, 394, 0, 395, 396, 821, 397, 1225, - 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, - 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 2655, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, - 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, - 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, - 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, - 554, 555, 556, 557, 0, 0, 0, 0, 0, 0, - 0, 2656, 2657, 0, 0, 0, 0, 0, 0, 0, - 2658, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, - 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, - 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, - 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, - 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, - 0, 1218, 0, 360, 0, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 0, - 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, - 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 2655, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, - 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, - 0, 0, 0, 0, 0, 0, 2656, 2657, 0, 0, - 804, 1185, 618, 1186, 1187, 2658, 677, 1189, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, - 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, - 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, - 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, - 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, - 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, - 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, - 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, - 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, - 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, - 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, - 804, 1185, 618, 1186, 1187, 0, 677, 1189, 0, 0, - 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, - 3914, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, - 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, - 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, - 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, - 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, - 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, - 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, - 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, - 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, - 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, - 804, 1185, 618, 1186, 1187, 0, 677, 1189, 0, 0, - 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, - 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, - 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, - 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, - 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, - 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, - 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, - 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, - 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, - 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 4380, - 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, - 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, 0, - 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 0, 1191, 806, 1192, 1193, 0, - 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, - 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, - 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, - 306, 307, 308, 0, 309, 0, 311, 0, 312, 313, - 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, - 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, - 1218, 0, 360, 0, 0, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 1219, 818, 369, 0, 0, - 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, 395, - 396, 0, 397, 1225, 1226, 399, 1227, 401, 402, 403, - 0, 404, 405, 0, 0, 1228, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 1232, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, - 479, 480, 0, 481, 482, 1234, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, - 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, - 0, 1241, 520, 521, 522, 523, 524, 1242, 0, 525, - 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, - 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, - 804, 0, 0, 0, 0, 1253, 1254, 0, 0, 0, - 0, 0, 0, 0, 1256, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 1195, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 1211, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 1214, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 3436, 0, 367, 1219, 818, 369, 819, 0, - 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 0, 1226, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 769, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 461, 3437, 463, 464, 465, 466, 467, 468, 469, 470, - 40, 471, 472, 473, 474, 475, 1233, 476, 477, 478, - 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1235, 0, 498, 499, 44, 500, 826, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 1238, - 511, 1239, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, - 526, 527, 528, 529, 1116, 531, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 49, 538, 539, - 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, - 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, 0, - 50, 804, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3439, 0, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, - 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, - 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, - 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, - 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 3436, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, - 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 769, 406, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 461, 3437, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, - 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, - 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3439, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, - 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, - 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, - 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, - 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, - 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 461, 3437, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, - 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, - 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, - 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, - 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, - 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, - 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, - 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, - 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, - 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4043, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, - 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, - 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, - 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, - 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, - 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, - 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, - 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, - 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, - 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, - 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, - 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, - 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, - 0, 849, 1464, 618, 0, 0, 0, 677, 0, 0, - 0, 0, 0, 0, 0, 5110, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, - 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, - 256, 257, 258, 0, 259, 260, 261, 262, 263, 0, - 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 1765, 321, - 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 333, 0, - 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, - 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 368, 818, 369, 819, - 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, - 395, 396, 821, 397, 0, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 1766, 0, 406, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, - 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 0, 498, 499, 0, 500, 826, 501, 502, - 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, - 510, 511, 512, 1767, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, - 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, - 0, 849, 0, 0, 0, 0, 1465, 1466, 4930, 0, - 0, 0, 0, 0, 0, 4931, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 3, 4, - 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, - 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, - 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, - 256, 257, 258, 0, 259, 260, 261, 262, 263, 0, - 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, - 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 0, 321, - 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, - 0, 812, 328, 329, 330, 331, 0, 332, 333, 0, - 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, - 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, - 364, 365, 366, 0, 0, 367, 368, 818, 369, 819, - 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, - 395, 396, 821, 397, 0, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, - 0, 409, 410, 822, 411, 823, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 40, 471, 472, 473, 474, 475, 0, 476, 477, - 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 0, 498, 499, 44, 500, 826, 501, 502, - 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, - 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, - 525, 526, 527, 528, 529, 1116, 531, 0, 532, 827, - 533, 534, 535, 536, 0, 0, 537, 0, 49, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, - 0, 50, 804, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, - 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4712, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 40, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 44, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 1116, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 49, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 0, 0, 50, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 0, 225, 226, - 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, - 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, - 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, - 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, - 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, - 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, - 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, - 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, - 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, - 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, - 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, - 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, - 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, - 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, - 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, - 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, - 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, - 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, - 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, - 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, - 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, - 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, - 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, - 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1314, 225, 226, - 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, - 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, - 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, - 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, - 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, - 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, - 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, - 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, - 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, - 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, - 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, - 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, - 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, - 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, - 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, - 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, - 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, - 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, - 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, - 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, - 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, - 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, - 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, - 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2812, 225, 226, - 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, - 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, - 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, - 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, - 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, - 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, - 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, - 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, - 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, - 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, - 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, - 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, - 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, - 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, - 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, - 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, - 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, - 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, - 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, - 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, - 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, - 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, - 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, - 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3949, 225, 226, - 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, - 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, - 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, - 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, - 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, - 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, - 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, - 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, - 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, - 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, - 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, - 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, - 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, - 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, - 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, - 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, - 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, - 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, - 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, - 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, - 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, - 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, - 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, - 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 0, 0, 0, 0, 0, 1034, 1464, 618, 0, - 0, 863, 677, 0, 0, 0, 0, 4397, 864, 865, - 866, 225, 226, 227, 228, 229, 230, 231, 232, 1953, - 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, 1960, - 237, 238, 1961, 239, 240, 241, 805, 242, 243, 244, - 0, 1035, 806, 1036, 1037, 1962, 249, 250, 251, 252, - 253, 1963, 1964, 254, 255, 1038, 1039, 258, 1965, 259, - 260, 261, 262, 0, 1966, 807, 1967, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 1968, 272, 273, 274, - 275, 276, 277, 1969, 809, 278, 279, 280, 1970, 1971, - 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, 285, - 286, 1040, 1041, 289, 1976, 290, 1977, 291, 292, 293, - 294, 295, 296, 1978, 297, 298, 299, 300, 1979, 1980, - 301, 302, 1042, 304, 305, 1981, 306, 307, 308, 1982, - 309, 310, 311, 1983, 312, 313, 314, 315, 0, 317, - 318, 319, 0, 1984, 321, 1985, 322, 323, 1043, 325, - 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, 330, - 331, 1989, 332, 0, 1990, 0, 335, 1991, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 1992, 345, - 346, 347, 348, 349, 350, 1993, 351, 814, 0, 353, - 354, 355, 356, 1045, 1046, 1994, 1047, 1995, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 1996, 1997, - 367, 0, 818, 369, 819, 1998, 370, 371, 372, 1999, - 2000, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, - 391, 392, 393, 3703, 2001, 395, 396, 821, 397, 2002, - 0, 399, 1050, 401, 402, 403, 2003, 404, 405, 2004, - 2005, 3704, 407, 408, 2006, 2007, 409, 0, 822, 411, - 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 2008, 422, 423, 0, 425, 0, 427, 428, - 429, 2009, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1051, 440, 441, 442, 443, 2010, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 2011, - 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 2012, 471, 472, 473, - 474, 475, 2013, 476, 477, 2097, 479, 480, 825, 481, - 482, 1053, 484, 2014, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 2015, 498, 499, - 2016, 500, 826, 501, 502, 503, 504, 505, 2017, 1054, - 1055, 2018, 2019, 508, 509, 0, 511, 0, 2020, 513, - 514, 515, 516, 517, 518, 519, 2021, 2022, 520, 521, - 522, 523, 524, 2023, 2024, 525, 526, 527, 528, 529, - 0, 1056, 2025, 532, 827, 533, 534, 535, 536, 2026, - 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, 543, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 555, 556, 557, 0, 0, 0, 869, 870, 871, - 0, 3705, 3706, 874, 875, 876, 877, 1034, 1464, 618, - 0, 0, 863, 677, 0, 0, 0, 0, 0, 864, - 865, 866, 225, 226, 227, 228, 229, 230, 231, 232, - 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, - 1960, 237, 238, 1961, 239, 240, 241, 805, 242, 243, - 244, 0, 1035, 806, 1036, 1037, 1962, 249, 250, 251, - 252, 253, 1963, 1964, 254, 255, 1038, 1039, 258, 1965, - 259, 260, 261, 262, 0, 1966, 807, 1967, 264, 265, - 266, 267, 268, 808, 269, 270, 271, 1968, 272, 273, - 274, 275, 276, 277, 1969, 809, 278, 279, 280, 1970, - 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, - 285, 286, 1040, 1041, 289, 1976, 290, 1977, 291, 292, - 293, 294, 295, 296, 1978, 297, 298, 299, 300, 1979, - 1980, 301, 302, 1042, 304, 305, 1981, 306, 307, 308, - 1982, 309, 310, 311, 1983, 312, 313, 314, 315, 0, - 317, 318, 319, 0, 1984, 321, 1985, 322, 323, 1043, - 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, - 330, 331, 1989, 332, 0, 1990, 0, 335, 1991, 336, - 337, 338, 339, 340, 813, 341, 342, 343, 344, 1992, - 345, 346, 347, 348, 349, 350, 1993, 351, 814, 0, - 353, 354, 355, 356, 1045, 1046, 1994, 1047, 1995, 360, - 815, 816, 361, 817, 362, 363, 364, 365, 366, 1996, - 1997, 367, 0, 818, 369, 819, 1998, 370, 371, 372, - 1999, 2000, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 1048, 820, - 1049, 391, 392, 393, 4134, 2001, 395, 396, 821, 397, - 2002, 0, 399, 1050, 401, 402, 403, 2003, 404, 405, - 2004, 2005, 3704, 407, 408, 2006, 2007, 409, 0, 822, - 411, 823, 0, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 0, 2008, 422, 423, 0, 425, 0, 427, - 428, 429, 2009, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 1051, 440, 441, 442, 443, 2010, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 2011, 456, 457, 824, 458, 459, 460, 0, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 2012, 471, 472, - 473, 474, 475, 2013, 476, 477, 2097, 479, 480, 825, - 481, 482, 1053, 484, 2014, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 2015, 498, - 499, 2016, 500, 826, 501, 502, 503, 504, 505, 2017, - 1054, 1055, 2018, 2019, 508, 509, 0, 511, 0, 2020, - 513, 514, 515, 516, 517, 518, 519, 2021, 2022, 520, - 521, 522, 523, 524, 2023, 2024, 525, 526, 527, 528, - 529, 0, 1056, 2025, 532, 827, 533, 534, 535, 536, - 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, - 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 555, 556, 557, 0, 224, 0, 869, 870, - 871, 863, 3705, 3706, 874, 875, 876, 877, 864, 865, - 866, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 867, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 868, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 0, 224, 0, 869, 870, 871, - 863, 872, 873, 874, 875, 876, 877, 864, 865, 866, - 225, 226, 227, 228, 229, 230, 231, 232, 0, 234, - 235, 236, 0, 0, 0, 0, 0, 0, 0, 237, - 238, 0, 239, 240, 241, 0, 242, 243, 244, 245, - 246, 0, 247, 248, 0, 249, 250, 251, 252, 253, - 0, 0, 254, 255, 256, 257, 258, 0, 259, 985, - 261, 262, 263, 0, 0, 0, 264, 265, 266, 267, - 268, 0, 269, 270, 271, 0, 272, 273, 274, 275, - 276, 277, 0, 0, 278, 279, 280, 0, 0, 0, - 0, 0, 0, 0, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 0, 290, 0, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 0, 0, 301, - 302, 303, 304, 305, 0, 306, 307, 308, 0, 309, - 310, 311, 0, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 0, 986, 0, 322, 323, 324, 325, 0, - 326, 0, 327, 0, 0, 0, 328, 329, 330, 331, - 0, 332, 333, 0, 334, 335, 0, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 0, 345, 346, - 347, 348, 349, 350, 0, 351, 0, 352, 353, 354, - 355, 356, 357, 358, 0, 359, 0, 360, 0, 0, - 361, 0, 362, 363, 364, 365, 366, 0, 0, 367, - 368, 0, 369, 0, 0, 370, 371, 372, 0, 0, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 0, 390, 391, - 392, 393, 394, 0, 395, 396, 0, 397, 0, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 0, - 406, 407, 408, 0, 0, 409, 410, 0, 411, 0, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 0, 0, 422, 423, 424, 425, 426, 427, 428, 429, - 0, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 0, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 0, 456, - 457, 0, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 0, 476, 477, 478, 479, 480, 0, 481, 482, - 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 0, 498, 499, 0, - 500, 0, 501, 502, 503, 504, 505, 0, 506, 507, - 0, 0, 508, 509, 510, 511, 512, 0, 513, 514, - 515, 516, 517, 518, 519, 0, 0, 520, 521, 522, - 523, 524, 0, 0, 525, 526, 527, 528, 529, 530, - 531, 0, 532, 0, 533, 534, 535, 536, 0, 0, - 537, 0, 0, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 0, 224, 0, 869, 870, 871, 863, - 872, 873, 874, 875, 876, 877, 864, 865, 866, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 1084, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 1085, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 1086, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 0, 224, 0, 869, 870, 871, 863, 872, - 873, 874, 875, 876, 877, 864, 865, 866, 225, 226, - 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, - 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, - 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, - 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, - 254, 255, 256, 257, 258, 0, 259, 1585, 261, 262, - 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, - 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, - 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, - 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, - 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 0, 1586, 0, 322, 323, 324, 325, 0, 326, 0, - 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, - 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, - 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, - 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, - 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, - 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, - 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, - 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, - 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, - 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, - 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, - 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, - 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, - 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, - 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, - 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 0, 224, 0, 869, 870, 871, 863, 872, 873, - 874, 875, 876, 877, 864, 865, 866, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 0, 224, 0, 869, 870, 871, 863, 872, 873, 874, - 875, 876, 877, 864, 865, 866, 225, 226, 227, 228, - 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, - 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, - 241, 0, 242, 243, 244, 245, 246, 0, 247, 248, - 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, - 256, 257, 258, 0, 259, 2890, 261, 262, 263, 0, - 0, 0, 264, 265, 266, 267, 268, 0, 269, 270, - 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, - 278, 279, 280, 0, 0, 0, 0, 0, 0, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, - 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 0, 2891, - 0, 322, 323, 324, 325, 0, 326, 0, 327, 0, - 0, 0, 328, 329, 330, 331, 0, 332, 333, 0, - 334, 335, 0, 336, 337, 338, 339, 340, 0, 341, - 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, - 0, 351, 0, 352, 353, 354, 355, 356, 357, 358, - 0, 359, 0, 360, 0, 0, 361, 0, 362, 363, - 364, 365, 366, 0, 0, 367, 368, 0, 369, 0, - 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 0, 390, 391, 392, 393, 394, 0, - 395, 396, 0, 397, 0, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, - 0, 409, 410, 0, 411, 0, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, - 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 0, 456, 457, 0, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, - 478, 479, 480, 0, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 0, 498, 499, 0, 500, 0, 501, 502, - 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, - 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, - 525, 526, 527, 528, 529, 530, 531, 0, 532, 0, - 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, - 224, 0, 869, 870, 871, 863, 872, 873, 874, 875, - 876, 877, 864, 865, 866, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 4690, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 1952, 0, - 0, 869, 870, 871, 0, 872, 873, 874, 875, 876, - 877, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, - 1959, 1960, 237, 238, 1961, 239, 240, 241, 805, 242, - 243, 244, 245, 246, 806, 247, 248, 1962, 249, 250, - 251, 252, 253, 1963, 1964, 254, 255, 256, 257, 258, - 1965, 259, 260, 261, 262, 263, 1966, 807, 1967, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 1968, 272, - 273, 274, 275, 276, 277, 1969, 809, 278, 279, 280, - 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 1976, 290, 1977, 291, - 292, 293, 294, 295, 296, 1978, 297, 298, 299, 300, - 1979, 1980, 301, 302, 303, 304, 305, 1981, 306, 307, - 308, 1982, 309, 310, 311, 1983, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 1984, 321, 1985, 322, 323, - 324, 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, - 329, 330, 331, 1989, 332, 333, 1990, 334, 335, 1991, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 1992, 345, 346, 347, 348, 349, 350, 1993, 351, 814, - 352, 353, 354, 355, 356, 357, 358, 1994, 359, 1995, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 1996, 1997, 367, 368, 818, 369, 819, 1998, 370, 371, - 372, 1999, 2000, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 820, 390, 391, 392, 393, 394, 2001, 395, 396, 821, - 397, 2002, 398, 399, 400, 401, 402, 403, 2003, 404, - 405, 2004, 2005, 406, 407, 408, 2006, 2007, 409, 410, - 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 2008, 422, 423, 424, 425, 426, - 427, 428, 429, 2009, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 2010, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 2011, 456, 457, 824, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 2012, 471, - 472, 473, 474, 475, 2013, 476, 477, 478, 479, 480, - 825, 481, 482, 483, 484, 2014, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 2015, - 498, 499, 2016, 500, 826, 501, 502, 503, 504, 505, - 2017, 506, 507, 2018, 2019, 508, 509, 510, 511, 512, - 2020, 513, 514, 515, 516, 517, 518, 519, 2021, 2022, - 520, 521, 522, 523, 524, 2023, 2024, 525, 526, 527, - 528, 529, 530, 531, 2025, 532, 827, 533, 534, 535, - 536, 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 2030, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 774, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 1034, 0, 0, 0, 0, 0, 0, 0, - 0, 5077, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, - 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, - 321, 0, 322, 323, 1043, 325, 0, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, - 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, - 341, 342, 343, 344, 2093, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 2094, 353, 354, 355, 356, 1045, - 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, - 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 2095, 409, 2096, 822, 411, 823, 0, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 2097, 479, 480, 825, 481, 482, 1053, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, - 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 0, 1056, 2098, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 2389, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 2099, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 1038, 1039, 258, 0, 259, - 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, - 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 1040, 1041, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, - 318, 319, 0, 0, 321, 0, 322, 323, 1043, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 2093, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 2094, 353, - 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, - 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, - 0, 399, 1050, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 2095, 409, 2096, 822, 411, - 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1051, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 2097, 479, 480, 825, 481, - 482, 1053, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1054, - 1055, 0, 0, 508, 509, 0, 511, 0, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 0, 1056, 2098, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 849, 1464, 618, 0, 0, 0, 677, 0, 0, 0, - 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 2099, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 1941, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 1765, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 1766, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 1767, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 849, 1464, - 618, 0, 0, 0, 677, 1465, 1466, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, - 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, - 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 1946, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 1765, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 1766, 0, 406, 407, 408, 0, 0, 409, 410, - 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 1767, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 849, 1464, 618, 0, - 0, 0, 677, 1465, 1466, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, - 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 1765, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, - 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 1766, - 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 825, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 1767, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 849, 0, 618, 0, 0, 0, - 677, 1465, 1466, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, - 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, - 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 2844, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 1765, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, - 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, - 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 1766, 0, 406, - 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 825, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 1767, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 677, 689, - 690, 0, 0, 0, 0, 0, 0, 225, 678, 227, - 228, 229, 230, 231, 232, 679, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 680, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 681, 324, 325, 0, 326, 0, 682, - 0, 683, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 684, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 685, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 686, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 687, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 688, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 1952, 5272, 618, 0, 0, 0, 677, 689, 690, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 1953, 234, 235, 236, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 237, 238, 1961, 239, 240, 241, - 805, 242, 243, 244, 245, 246, 806, 247, 248, 1962, - 249, 250, 251, 252, 253, 1963, 1964, 254, 255, 256, - 257, 258, 1965, 259, 260, 261, 262, 263, 1966, 807, - 1967, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 1968, 272, 273, 274, 275, 276, 277, 1969, 809, 278, - 279, 280, 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 1976, 290, - 1977, 291, 292, 293, 294, 295, 296, 1978, 297, 298, - 299, 300, 1979, 1980, 301, 302, 303, 304, 305, 1981, - 306, 307, 308, 1982, 309, 310, 311, 1983, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 1984, 321, 1985, - 322, 323, 324, 325, 1986, 326, 1987, 327, 811, 1988, - 812, 328, 329, 330, 331, 1989, 332, 333, 1990, 334, - 335, 1991, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 1992, 345, 346, 347, 348, 349, 350, 1993, - 351, 814, 352, 353, 354, 355, 356, 357, 358, 1994, - 359, 1995, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 1996, 1997, 367, 368, 818, 369, 819, 1998, - 370, 371, 372, 1999, 2000, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 820, 390, 391, 392, 393, 394, 2001, 395, - 396, 821, 397, 2002, 398, 399, 400, 401, 402, 403, - 2003, 404, 405, 2004, 2005, 406, 407, 408, 2006, 2007, - 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 2008, 422, 423, 424, - 425, 426, 427, 428, 429, 2009, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 2010, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 2011, 456, 457, 824, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 2012, 471, 472, 473, 474, 475, 2013, 476, 477, 478, - 479, 480, 825, 481, 482, 483, 484, 2014, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 2015, 498, 499, 2016, 500, 826, 501, 502, 503, - 504, 505, 2017, 506, 507, 2018, 2019, 508, 509, 510, - 511, 512, 2020, 513, 514, 515, 516, 517, 518, 519, - 2021, 2022, 520, 521, 522, 523, 524, 2023, 2024, 525, - 526, 527, 528, 529, 530, 531, 2025, 532, 827, 533, - 534, 535, 536, 2026, 2027, 537, 2028, 2029, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 1952, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, - 1959, 1960, 237, 238, 1961, 239, 240, 241, 805, 242, - 243, 244, 245, 246, 806, 247, 248, 1962, 249, 250, - 251, 252, 253, 1963, 1964, 254, 255, 256, 257, 258, - 1965, 259, 260, 261, 262, 263, 1966, 807, 1967, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 1968, 272, - 273, 274, 275, 276, 277, 1969, 809, 278, 279, 280, - 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 1976, 290, 1977, 291, - 292, 293, 294, 295, 296, 1978, 297, 298, 299, 300, - 1979, 1980, 301, 302, 303, 304, 305, 1981, 306, 307, - 308, 1982, 309, 310, 311, 1983, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 1984, 321, 1985, 322, 323, - 324, 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, - 329, 330, 331, 1989, 332, 333, 1990, 334, 335, 1991, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 1992, 345, 346, 347, 348, 349, 350, 1993, 351, 814, - 352, 353, 354, 355, 356, 357, 358, 1994, 359, 1995, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 1996, 1997, 367, 368, 818, 369, 819, 1998, 370, 371, - 372, 1999, 2000, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 820, 390, 391, 392, 393, 394, 2001, 395, 396, 821, - 397, 2002, 398, 399, 400, 401, 402, 403, 2003, 404, - 405, 2004, 2005, 406, 407, 408, 2006, 2007, 409, 410, - 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 2008, 422, 423, 424, 425, 426, - 427, 428, 429, 2009, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 2010, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 2011, 456, 457, 824, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 2012, 471, - 472, 473, 474, 475, 2013, 476, 477, 478, 479, 480, - 825, 481, 482, 483, 484, 2014, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 2015, - 498, 499, 2016, 500, 826, 501, 502, 503, 504, 505, - 2017, 506, 507, 2018, 2019, 508, 509, 510, 511, 512, - 2020, 513, 514, 515, 516, 517, 518, 519, 2021, 2022, - 520, 521, 522, 523, 524, 2023, 2024, 525, 526, 527, - 528, 529, 530, 531, 2025, 532, 827, 533, 534, 535, - 536, 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 1952, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 2958, 230, 231, 232, 1953, - 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, 1960, - 237, 238, 1961, 239, 240, 241, 805, 242, 243, 244, - 245, 246, 806, 247, 248, 1962, 249, 250, 251, 252, - 253, 1963, 1964, 254, 255, 256, 257, 258, 1965, 259, - 260, 261, 262, 263, 1966, 807, 1967, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 1968, 272, 273, 274, - 275, 276, 277, 1969, 809, 278, 279, 280, 1970, 1971, - 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 1976, 290, 1977, 291, 292, 293, - 294, 295, 296, 1978, 297, 298, 299, 300, 1979, 1980, - 301, 302, 303, 2959, 305, 1981, 306, 307, 308, 1982, - 309, 310, 311, 1983, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 1984, 321, 1985, 322, 323, 324, 325, - 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, 330, - 331, 1989, 332, 333, 1990, 334, 335, 1991, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 1992, 345, - 346, 347, 348, 349, 350, 1993, 351, 814, 352, 353, - 354, 355, 356, 357, 358, 1994, 359, 1995, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 1996, 1997, - 367, 368, 818, 369, 819, 1998, 370, 371, 372, 1999, - 2000, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, - 391, 392, 393, 394, 2001, 395, 396, 821, 397, 2002, - 398, 399, 400, 401, 402, 403, 2003, 404, 405, 2004, - 2005, 406, 407, 408, 2006, 2007, 409, 410, 822, 411, - 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 2008, 422, 423, 424, 425, 426, 427, 428, - 429, 2009, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 2010, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 2011, - 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 2012, 471, 472, 473, - 474, 475, 2013, 2960, 477, 478, 479, 480, 825, 481, - 482, 483, 484, 2014, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 2015, 498, 499, - 2016, 500, 826, 501, 502, 503, 504, 505, 2017, 506, - 507, 2018, 2019, 508, 509, 510, 511, 512, 2020, 513, - 514, 515, 516, 517, 518, 519, 2021, 2022, 520, 521, - 522, 523, 524, 2023, 2024, 525, 526, 527, 528, 529, - 530, 531, 2025, 532, 827, 533, 534, 535, 536, 2026, - 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 804, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, - 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 1195, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 1198, 0, 1199, 0, 264, 265, 266, 267, 268, - 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 809, 278, 279, 280, 1200, 1201, 1202, 1203, - 1204, 1205, 1206, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 1211, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, - 332, 1214, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, - 817, 362, 363, 364, 365, 366, 0, 0, 367, 1219, - 818, 369, 819, 0, 370, 371, 372, 1220, 1221, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, - 393, 394, 0, 395, 396, 821, 397, 0, 1226, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 822, 411, 823, 1229, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 1230, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 1233, 476, 477, 478, 479, 480, 825, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 1235, 0, 498, 499, 0, 500, - 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 1238, 511, 1239, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 1242, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 1244, - 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, 555, - 556, 557, 849, 0, 618, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 1765, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, - 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 1766, 0, 406, 407, 408, - 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 1767, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 886, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 0, 0, 0, 810, 0, 0, 850, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 851, 476, 477, 478, - 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 905, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, - 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, - 0, 0, 0, 810, 0, 0, 850, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 906, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 851, 476, 477, 478, 479, 480, - 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 849, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, - 0, 810, 0, 0, 850, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, - 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 851, 476, 477, 478, 479, 480, 825, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 2345, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 849, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, - 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, - 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, - 0, 0, 850, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, - 332, 333, 3284, 334, 335, 0, 336, 337, 338, 339, - 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, - 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, - 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 851, 476, 477, 478, 479, 480, 825, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 849, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 850, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, - 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 851, 476, - 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 0, 0, 0, 810, 0, 0, 850, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 1004, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 851, 476, 477, 478, - 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, - 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, - 0, 0, 0, 810, 0, 0, 850, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 1079, 813, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 851, 476, 477, 478, 479, 480, - 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 849, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, - 0, 810, 0, 0, 850, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 1090, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, - 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 851, 476, 477, 478, 479, 480, 825, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 849, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, - 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, - 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, - 0, 0, 850, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 1100, 813, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, - 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 1101, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, - 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 851, 476, 477, 478, 479, 480, 825, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 849, 0, 618, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 1926, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, - 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 3, 4, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, - 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, - 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, - 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 849, 0, 618, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, - 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 1751, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, - 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, - 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 825, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 804, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, - 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, - 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, - 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, - 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 825, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 804, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 1026, 813, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, - 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 1076, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, - 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 2133, 259, 260, 261, 262, 263, 0, 0, 2210, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 2134, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 2211, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 2136, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 2212, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 2137, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 2138, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 2133, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 2134, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 2211, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 2136, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 3148, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 2137, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 2138, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 737, 231, 232, 696, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 697, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 738, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 698, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 699, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 696, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 697, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 2851, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 698, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 699, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 2133, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 2134, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 2211, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 2136, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 2137, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 2138, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 696, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 697, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 698, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 699, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 1792, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 1793, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 1794, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 1795, 327, 0, 0, 0, 1796, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 1797, 1798, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 1799, 466, 467, 468, 469, 470, 0, 1800, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 1801, 500, 0, 1802, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 1803, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 697, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 698, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 699, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 898, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 899, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 769, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 3, 4, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 2939, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 2940, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 2952, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 2953, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 609, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 610, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 729, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 730, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 731, 507, 0, 0, 732, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 763, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 764, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 765, 507, 0, 0, 766, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 769, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 858, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 859, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 1018, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 729, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 1159, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 1289, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 1300, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 749, 255, 256, 257, 1301, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 1293, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 756, 507, 0, - 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 1412, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 769, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 1469, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 1470, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 2742, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 2743, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 2744, 500, 0, 501, 2745, 503, 2746, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 2747, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 618, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 3970, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 3984, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 715, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 727, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 749, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 750, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 751, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 755, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 756, 507, 0, - 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 780, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 883, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 891, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 909, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 969, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 975, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 992, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 995, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 997, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 1032, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 1092, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 1094, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 1104, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 1107, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 1110, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, - 459, 460, 461, 462, 463, 464, 754, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 1293, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 756, 507, 0, 0, 757, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 1617, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 1655, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 1657, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 1727, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 1729, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 1731, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 1826, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 2086, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 0, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 749, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 1293, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 2120, 502, 503, 504, 505, 0, 756, 507, 0, - 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, - 459, 460, 461, 462, 463, 464, 2195, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 2196, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 756, 507, 0, 0, 2197, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 2469, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 2473, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 2542, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 2862, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, - 459, 460, 461, 462, 463, 464, 754, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 2196, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 756, 507, 0, 0, 2197, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 2929, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, - 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, - 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, - 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, - 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, - 336, 337, 338, 339, 2942, 0, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, - 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, - 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, - 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, - 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, - 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, - 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, - 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, - 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, - 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, - 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, - 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, - 338, 339, 2944, 0, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, - 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, - 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, - 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, - 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, - 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, - 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, - 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, - 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, - 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, - 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, - 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, - 3079, 0, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, - 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, - 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, - 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, - 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, - 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, - 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 3104, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, - 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, - 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, - 335, 0, 336, 337, 338, 339, 4249, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, - 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, - 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, - 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, - 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 1034, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, - 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, - 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, - 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, - 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, - 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 2093, 345, 346, 347, 348, 349, 350, 0, 351, 814, - 2094, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, - 820, 1049, 391, 392, 393, 0, 0, 395, 396, 821, - 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 2096, - 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 2097, 479, 480, - 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, - 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, - 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 0, 1056, 2098, 532, 827, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, - 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, - 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, - 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, - 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, - 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, - 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, - 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, - 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, - 415, 416, 417, 418, 0, 420, 421, 0, 0, 422, - 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 0, 438, 439, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, - 459, 460, 461, 0, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, - 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, - 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, - 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 1038, - 1039, 258, 0, 259, 260, 261, 262, 0, 0, 807, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 1040, 1041, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, - 322, 323, 1043, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 0, 0, 0, - 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 0, 353, 354, 355, 356, 1045, 1046, 0, - 1047, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 0, 818, 369, 819, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 1048, 820, 1049, 391, 392, 393, 0, 0, 395, - 396, 821, 397, 2191, 0, 399, 1050, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 0, 822, 411, 823, 0, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, - 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 1051, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 2097, - 479, 480, 825, 481, 482, 1053, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 0, 498, 499, 3810, 500, 826, 501, 502, 503, - 504, 505, 0, 1054, 1055, 0, 0, 508, 509, 0, - 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 0, 1056, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 1034, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 555, 556, 557, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 805, 242, 243, 244, 0, 1035, - 806, 1036, 1037, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 1038, 1039, 258, 0, 259, 260, 261, - 262, 0, 0, 807, 0, 264, 265, 266, 267, 268, - 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 1040, - 1041, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 1042, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 0, 317, 318, 319, - 0, 0, 321, 0, 322, 323, 1043, 325, 0, 326, - 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, - 332, 0, 0, 0, 335, 0, 336, 337, 338, 339, - 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 814, 0, 353, 354, 355, - 356, 1045, 1046, 0, 1047, 0, 360, 815, 816, 361, - 817, 362, 363, 364, 365, 366, 0, 0, 367, 0, - 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 1048, 820, 1049, 391, 392, - 393, 2262, 0, 395, 396, 821, 397, 0, 0, 399, - 1050, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 0, 822, 411, 823, 0, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 0, 425, 0, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 1051, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 824, 458, 459, 460, 0, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 1052, 479, 480, 825, 481, 482, 1053, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 0, 498, 499, 0, 500, - 826, 501, 502, 503, 504, 505, 0, 1054, 1055, 0, - 0, 508, 509, 0, 511, 0, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 0, 1056, - 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 1034, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, - 556, 557, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, - 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, - 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, - 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, - 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, - 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, - 0, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, - 820, 1049, 391, 392, 393, 3625, 0, 395, 396, 821, - 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 0, - 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 1052, 479, 480, - 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, - 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, - 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 0, 1056, 0, 532, 827, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 1034, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, - 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, - 321, 0, 322, 323, 1043, 325, 5141, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, - 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 0, 353, 354, 355, 356, 1045, - 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, - 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 0, 822, 411, 823, 0, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 1052, 479, 480, 825, 481, 482, 1053, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, - 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 0, 1056, 0, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 1034, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 1038, 1039, 258, 0, 259, - 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, - 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 1040, 1041, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, - 318, 319, 0, 0, 321, 0, 322, 323, 1043, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, - 338, 339, 1044, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 0, 353, - 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, - 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, - 0, 399, 1050, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 0, 822, 411, - 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 1051, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 1052, 479, 480, 825, 481, - 482, 1053, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 1054, - 1055, 0, 0, 508, 509, 0, 511, 0, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 0, 1056, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 1038, - 1039, 258, 0, 259, 260, 261, 262, 0, 0, 807, - 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, - 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 1040, 1041, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, - 322, 323, 1043, 325, 0, 326, 0, 327, 811, 0, - 812, 328, 329, 330, 331, 0, 332, 0, 0, 0, - 335, 0, 336, 337, 338, 339, 1098, 813, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 814, 0, 353, 354, 355, 356, 1045, 1046, 0, - 1047, 0, 360, 815, 816, 361, 817, 362, 363, 364, - 365, 366, 0, 0, 367, 0, 818, 369, 819, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 1048, 820, 1049, 391, 392, 393, 0, 0, 395, - 396, 821, 397, 0, 0, 399, 1050, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 0, 822, 411, 823, 0, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, - 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 1051, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, - 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 1052, - 479, 480, 825, 481, 482, 1053, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 0, 498, 499, 0, 500, 826, 501, 502, 503, - 504, 505, 0, 1054, 1055, 0, 0, 508, 509, 0, - 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 0, 1056, 0, 532, 827, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 1034, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 555, 556, 557, 0, 225, - 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, - 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, - 0, 239, 240, 241, 805, 242, 243, 244, 0, 1035, - 806, 1036, 1037, 0, 249, 250, 251, 252, 253, 0, - 0, 254, 255, 1038, 1039, 258, 0, 259, 260, 261, - 262, 0, 0, 807, 0, 264, 265, 266, 267, 268, - 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, - 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, - 0, 0, 0, 281, 282, 283, 284, 285, 286, 1040, - 1041, 289, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, - 1042, 304, 305, 0, 306, 307, 308, 0, 309, 310, - 311, 0, 312, 313, 314, 315, 0, 317, 318, 319, - 0, 0, 321, 0, 322, 323, 1043, 325, 0, 326, - 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, - 332, 0, 0, 0, 335, 0, 336, 337, 338, 339, - 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, - 348, 349, 350, 0, 351, 814, 0, 353, 354, 355, - 356, 1045, 1046, 0, 1047, 0, 360, 815, 816, 361, - 817, 362, 363, 364, 365, 366, 0, 0, 367, 0, - 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 1048, 820, 1049, 391, 392, - 393, 0, 0, 395, 396, 821, 397, 0, 0, 399, - 1050, 401, 402, 403, 0, 404, 405, 0, 0, 406, - 407, 408, 0, 0, 409, 0, 822, 411, 823, 0, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, - 0, 422, 423, 0, 425, 0, 427, 428, 429, 0, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 1051, - 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, - 824, 458, 459, 460, 0, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 0, 476, 477, 1052, 479, 480, 825, 481, 482, 1053, - 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 0, 498, 499, 0, 500, - 826, 501, 502, 503, 504, 505, 0, 1054, 1055, 0, - 0, 508, 509, 0, 511, 0, 0, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, - 524, 0, 0, 525, 526, 527, 528, 529, 0, 1056, - 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, - 0, 0, 538, 539, 540, 541, 542, 543, 1034, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, - 556, 557, 0, 225, 226, 227, 228, 229, 230, 231, - 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, - 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, - 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, - 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, - 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, - 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, - 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, - 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, - 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, - 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, - 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, - 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, - 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, - 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, - 0, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, - 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, - 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, - 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, - 820, 1049, 391, 392, 393, 0, 0, 395, 396, 821, - 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, - 405, 0, 0, 406, 407, 408, 0, 0, 409, 0, - 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, - 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, - 472, 473, 474, 475, 0, 476, 477, 2097, 479, 480, - 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, - 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, - 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, - 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, - 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, - 528, 529, 0, 1056, 0, 532, 827, 533, 534, 535, - 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, - 542, 543, 1034, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, - 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, - 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, - 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, - 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, - 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, - 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, - 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, - 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, - 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, - 321, 0, 322, 323, 1043, 325, 0, 326, 0, 327, - 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, - 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, - 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, - 350, 0, 351, 814, 0, 353, 354, 355, 356, 1045, - 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, - 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, - 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, - 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, - 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, - 0, 0, 409, 0, 822, 411, 823, 0, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, - 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, - 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, - 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, - 477, 0, 479, 480, 825, 481, 482, 1053, 484, 0, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, - 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, - 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, - 0, 525, 526, 527, 528, 529, 0, 1056, 0, 532, - 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, - 538, 539, 540, 541, 542, 543, 1034, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, - 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, - 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, - 0, 0, 806, 0, 0, 0, 249, 250, 251, 252, - 253, 0, 0, 254, 255, 0, 0, 258, 0, 259, - 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, - 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, - 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, - 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, - 286, 0, 0, 289, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, - 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, - 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, - 318, 319, 0, 0, 321, 0, 322, 323, 0, 325, - 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, - 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, - 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, - 346, 347, 348, 349, 350, 0, 351, 814, 0, 353, - 354, 355, 356, 0, 0, 0, 0, 0, 360, 815, - 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, - 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, - 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 820, 0, - 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, - 0, 399, 0, 401, 402, 403, 0, 404, 405, 0, - 0, 406, 407, 408, 0, 0, 409, 0, 822, 411, - 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, - 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 0, 440, 441, 442, 443, 0, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, - 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 0, 476, 477, 0, 479, 480, 825, 481, - 482, 0, 484, 0, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, - 0, 500, 826, 501, 502, 503, 504, 505, 0, 0, - 0, 0, 0, 508, 509, 0, 511, 0, 0, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, - 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, - 0, 0, 0, 532, 827, 533, 534, 535, 536, 0, - 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, - 4809, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, - 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, - 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, - 0, 242, 243, 244, 0, 0, 0, 0, 0, 0, - 249, 250, 251, 252, 253, 0, 0, 254, 255, 0, - 0, 258, 0, 259, 260, 261, 262, 0, 0, 0, - 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 0, 0, 289, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, - 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, - 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, - 322, 323, 0, 325, 0, 326, 0, 327, 0, 0, - 0, 328, 329, 330, 331, 0, 332, 0, 0, 0, - 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, - 351, 0, 0, 353, 354, 355, 356, 0, 0, 0, - 0, 0, 360, 0, 0, 361, 0, 362, 363, 364, - 365, 366, 0, 0, 367, 0, 0, 369, 0, 0, - 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 0, 0, 391, 392, 393, 0, 0, 395, - 396, 0, 397, 0, 0, 399, 0, 401, 402, 403, - 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, - 409, 0, 0, 411, 0, 0, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, - 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 0, 440, 441, 442, 443, - 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, - 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 0, 476, 477, 0, - 479, 480, 0, 481, 482, 0, 484, 0, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 0, 498, 499, 0, 500, 0, 501, 502, 503, - 504, 505, 0, 0, 0, 0, 0, 508, 509, 0, - 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, - 526, 527, 528, 529, 0, 0, 0, 532, 0, 533, - 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, - 540, 541, 542, 543, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 555, 556, 557 -}; - -static const yytype_int16 yycheck[] = -{ - 16, 0, 892, 0, 203, 798, 0, 0, 586, 25, - 1120, 750, 198, 21, 36, 51, 1142, 748, 181, 27, - 1318, 20, 7, 1511, 659, 697, 698, 699, 1052, 14, - 835, 703, 619, 893, 21, 1082, 1442, 1398, 772, 203, - 27, 2597, 2409, 2763, 773, 619, 908, 12, 1435, 779, - 1917, 1447, 2933, 917, 1178, 1040, 1041, 1571, 1055, 0, - 189, 998, 207, 1651, 757, 1050, 2803, 2906, 2422, 22, - 17, 20, 45, 1832, 1320, 220, 3224, 1375, 665, 3475, - 3518, 1442, 2958, 36, 2960, 3134, 3518, 3199, 2261, 2573, - 0, 3410, 2755, 44, 3126, 3180, 3570, 2101, 2102, 642, - 2313, 2334, 3134, 2753, 2754, 577, 1458, 4048, 3514, 2812, - 972, 3145, 655, 847, 976, 3799, 3439, 654, 168, 981, - 664, 3802, 1815, 3811, 1370, 3745, 3211, 3445, 1920, 991, - 1853, 892, 4276, 190, 191, 3789, 2785, 194, 1534, 900, - 861, 183, 1876, 1005, 4381, 2686, 4437, 35, 1427, 910, - 1664, 0, 4279, 0, 42, 212, 0, 629, 0, 0, - 0, 1749, 219, 0, 183, 1375, 753, 0, 3788, 0, - 0, 0, 0, 3197, 50, 41, 4230, 845, 795, 753, - 2822, 4456, 1038, 1039, 4397, 1350, 4399, 921, 1540, 1541, - 4579, 1437, 795, 1049, 3494, 4591, 2751, 5, 5, 3444, - 9, 3446, 3373, 42, 5, 4787, 0, 9, 0, 0, - 35, 56, 71, 0, 49, 0, 86, 987, 9, 5, - 4495, 113, 1207, 1208, 4278, 5, 29, 13, 14, 22, - 5, 157, 11, 1003, 2101, 26, 5, 42, 56, 2412, - 1237, 56, 1227, 56, 4694, 4695, 5, 73, 2803, 5, - 5, 73, 4728, 73, 13, 14, 22, 13, 14, 137, - 162, 83, 162, 5, 215, 169, 1071, 5, 11, 5, - 5, 162, 26, 5, 185, 2816, 162, 111, 162, 39, - 143, 2751, 144, 4440, 5, 56, 165, 5, 2367, 2908, - 2369, 204, 964, 0, 2373, 3865, 3866, 40, 3868, 3869, - 3870, 162, 9, 2382, 2383, 2384, 162, 26, 78, 1607, - 4, 9, 231, 132, 5, 9, 208, 1390, 266, 26, - 4501, 4502, 0, 5, 123, 56, 285, 29, 71, 4525, - 713, 264, 116, 2803, 133, 3, 300, 130, 83, 199, - 1196, 1197, 20, 5, 56, 162, 2519, 207, 2521, 162, - 156, 104, 3, 4, 5, 261, 272, 285, 9, 251, - 220, 712, 30, 31, 130, 388, 333, 1223, 162, 111, - 162, 162, 56, 51, 73, 162, 4533, 162, 249, 285, - 350, 350, 1112, 171, 83, 32, 22, 237, 164, 154, - 114, 185, 28, 185, 185, 11, 351, 116, 185, 1120, - 185, 36, 4984, 1340, 4, 11, 152, 319, 333, 9, - 324, 4, 5, 335, 39, 307, 9, 307, 337, 43, - 162, 11, 586, 73, 104, 4814, 11, 465, 306, 467, - 320, 469, 104, 83, 40, 4710, 350, 4581, 350, 584, - 64, 1305, 26, 4656, 26, 590, 11, 73, 471, 33, - 40, 33, 26, 4580, 324, 162, 346, 181, 603, 33, - 111, 380, 680, 681, 682, 71, 345, 685, 686, 687, - 20, 393, 113, 1497, 638, 40, 222, 695, 185, 198, - 325, 71, 281, 248, 409, 120, 73, 293, 407, 163, - 353, 341, 268, 161, 130, 163, 249, 144, 56, 378, - 467, 471, 471, 467, 56, 183, 71, 325, 467, 118, - 325, 430, 467, 432, 897, 281, 1103, 465, 575, 322, - 319, 469, 579, 1257, 337, 3144, 1256, 388, 5, 1103, - 333, 4688, 335, 1120, 467, 256, 593, 1610, 256, 467, - 4697, 467, 330, 600, 415, 896, 1089, 104, 467, 388, - 566, 1285, 203, 319, 325, 471, 3605, 350, 471, 4755, - 471, 467, 388, 104, 426, 256, 388, 471, 388, 471, - 569, 471, 569, 3605, 225, 569, 569, 416, 1122, 471, - 471, 467, 1303, 467, 350, 1831, 1884, 1308, 1309, 467, - 393, 5067, 5042, 143, 325, 1182, 4887, 3629, 367, 368, - 5182, 471, 4991, 619, 620, 1148, 465, 426, 1182, 422, - 469, 416, 420, 325, 374, 471, 409, 3936, 565, 669, - 322, 1164, 456, 377, 343, 409, 471, 1873, 569, 665, - 8, 401, 467, 11, 1364, 798, 1179, 15, 16, 17, - 3521, 325, 467, 388, 1506, 3963, 388, 1509, 414, 458, - 459, 3974, 1413, 471, 471, 3978, 471, 1517, 465, 467, - 467, 1787, 469, 256, 466, 664, 467, 458, 459, 4813, - 678, 3756, 680, 1919, 682, 347, 470, 4804, 470, 470, - 688, 467, 2855, 470, 463, 470, 3798, 467, 1853, 388, - 409, 678, 467, 680, 1415, 682, 1861, 377, 663, 715, - 1335, 688, 689, 690, 1425, 1569, 1753, 692, 467, 3880, - 1471, 467, 467, 1300, 456, 1485, 665, 3962, 5107, 3964, - 463, 1308, 1309, 5119, 584, 741, 1300, 469, 4028, 467, - 590, 467, 467, 749, 1719, 467, 752, 753, 754, 938, - 471, 1358, 4923, 603, 3778, 787, 4687, 1794, 934, 374, - 432, 458, 459, 421, 4324, 1358, 1803, 1527, 709, 471, - 458, 459, 388, 470, 458, 459, 1434, 325, 787, 467, - 432, 453, 413, 325, 938, 5050, 360, 1498, 360, 256, - 1501, 1502, 104, 333, 2180, 467, 360, 471, 5063, 80, - 789, 453, 789, 467, 923, 789, 789, 3460, 22, 5188, - 4274, 388, 411, 353, 2210, 467, 5019, 458, 459, 173, - 867, 868, 162, 4, 5, 2113, 173, 3171, 9, 3843, - 377, 2825, 773, 2827, 712, 713, 714, 116, 777, 3042, - 430, 122, 1602, 5, 3715, 143, 377, 119, 1694, 1695, - 69, 4985, 458, 459, 460, 461, 462, 463, 789, 266, - 157, 802, 47, 453, 104, 421, 5245, 272, 458, 459, - 4987, 2257, 1583, 3702, 3506, 458, 459, 3, 458, 459, - 460, 461, 462, 463, 861, 460, 461, 462, 463, 789, - 272, 3436, 350, 5158, 3439, 751, 2753, 2754, 2755, 755, - 268, 569, 249, 844, 152, 460, 461, 462, 463, 956, - 1478, 5192, 5193, 2113, 780, 1123, 130, 114, 1126, 198, - 1128, 4965, 1130, 471, 1132, 8, 337, 115, 1136, 471, - 266, 2200, 15, 16, 17, 111, 26, 837, 985, 986, - 65, 22, 4986, 2656, 2657, 304, 3109, 3110, 2661, 1722, - 789, 4379, 789, 2241, 267, 789, 82, 789, 789, 789, - 4570, 3492, 789, 5127, 1011, 34, 789, 1687, 789, 789, - 789, 789, 162, 3518, 222, 5109, 3436, 22, 2266, 3439, - 3, 82, 56, 2461, 181, 2698, 2699, 163, 5215, 377, - 3629, 5108, 4420, 80, 3823, 180, 664, 665, 1660, 5280, - 185, 105, 283, 430, 80, 4433, 261, 252, 134, 27, - 3, 4433, 5, 471, 159, 263, 141, 205, 896, 897, - 80, 3224, 123, 1796, 321, 249, 2126, 2315, 165, 4338, - 285, 2813, 133, 3, 159, 122, 221, 1084, 1085, 3108, - 3767, 272, 111, 2767, 471, 264, 122, 319, 388, 130, - 212, 65, 38, 5187, 235, 353, 467, 238, 3518, 82, - 467, 415, 122, 468, 80, 377, 471, 281, 415, 83, - 3, 1800, 1801, 4386, 4382, 256, 252, 65, 4391, 467, - 1017, 4394, 106, 2097, 188, 130, 454, 455, 456, 471, - 458, 459, 460, 461, 462, 463, 5260, 1103, 2781, 2476, - 3, 382, 228, 22, 116, 319, 122, 140, 467, 340, - 1830, 134, 1832, 106, 1120, 2403, 456, 396, 1838, 787, - 23, 789, 435, 111, 1844, 1845, 1846, 141, 4772, 469, - 409, 1756, 3126, 1122, 1854, 1855, 350, 377, 4812, 1859, - 3134, 111, 116, 1120, 5, 159, 1870, 4825, 1154, 82, - 1125, 4822, 1127, 177, 1129, 281, 1131, 4295, 1133, 1134, - 1135, 4771, 4806, 4591, 409, 1140, 1693, 4269, 1793, 202, - 355, 4042, 1797, 298, 1799, 249, 1182, 1802, 166, 82, - 281, 199, 5113, 5114, 177, 268, 198, 1764, 4263, 270, - 330, 111, 1725, 49, 111, 4805, 283, 183, 388, 163, - 290, 338, 135, 272, 1737, 228, 154, 283, 345, 164, - 390, 130, 467, 237, 315, 1748, 240, 4083, 319, 1746, - 1682, 106, 3767, 283, 198, 449, 185, 3221, 255, 1763, - 1256, 35, 135, 337, 22, 411, 281, 376, 24, 272, - 28, 378, 323, 324, 237, 377, 102, 240, 111, 350, - 54, 325, 1258, 433, 380, 345, 382, 190, 281, 45, - 465, 1267, 399, 251, 469, 288, 214, 283, 256, 350, - 410, 410, 376, 377, 319, 1281, 350, 458, 459, 404, - 261, 251, 185, 1851, 298, 173, 256, 190, 26, 4685, - 1330, 381, 177, 383, 1300, 382, 319, 1303, 1304, 103, - 323, 113, 1308, 1309, 285, 350, 382, 3767, 311, 4618, - 298, 1343, 1344, 268, 1346, 22, 5247, 341, 4992, 140, - 284, 28, 382, 113, 1478, 313, 1303, 350, 297, 288, - 357, 1308, 1309, 4026, 1343, 1344, 256, 1346, 76, 4652, - 115, 197, 130, 3996, 4808, 105, 84, 113, 341, 4002, - 2079, 3991, 237, 116, 287, 240, 125, 380, 127, 382, - 319, 249, 279, 467, 323, 210, 382, 130, 281, 343, - 403, 454, 455, 456, 112, 458, 459, 460, 461, 462, - 463, 150, 270, 187, 287, 26, 3860, 456, 251, 2677, - 404, 350, 356, 249, 319, 2683, 465, 409, 467, 468, - 469, 222, 471, 4712, 249, 2285, 1453, 430, 4717, 4718, - 4, 280, 261, 199, 369, 9, 404, 57, 208, 1360, - 423, 390, 4850, 130, 448, 65, 343, 330, 188, 3974, - 205, 235, 4471, 3978, 238, 409, 285, 350, 1415, 144, - 178, 5115, 208, 467, 256, 249, 5120, 83, 1425, 4471, - 430, 189, 164, 4881, 1122, 448, 341, 26, 2209, 4881, - 377, 251, 307, 388, 433, 91, 177, 4569, 211, 402, - 270, 430, 375, 1410, 337, 111, 280, 410, 103, 2516, - 413, 281, 251, 339, 125, 251, 467, 256, 1465, 1466, - 210, 471, 261, 281, 453, 1542, 1543, 1544, 1545, 402, - 417, 2656, 2657, 90, 4890, 4891, 2661, 410, 353, 1515, - 413, 85, 5186, 430, 3974, 1521, 234, 307, 3978, 319, - 324, 1498, 1190, 110, 1501, 1502, 237, 415, 231, 249, - 3733, 319, 295, 4557, 2285, 280, 453, 163, 1585, 1586, - 344, 307, 1210, 2698, 2699, 1734, 2923, 1723, 3026, 2126, - 467, 2270, 2271, 127, 3777, 2274, 125, 144, 1677, 1606, - 364, 4989, 350, 448, 409, 3768, 90, 2318, 194, 359, - 2330, 157, 5246, 1241, 281, 4085, 3325, 337, 2289, 1733, - 1734, 4091, 168, 209, 390, 225, 2297, 1487, 1256, 2300, - 1531, 173, 1492, 219, 1641, 1642, 1643, 1644, 319, 185, - 2351, 2280, 114, 3460, 5278, 350, 1583, 5281, 30, 31, - 235, 3605, 319, 238, 467, 251, 376, 377, 467, 245, - 3689, 471, 422, 335, 3693, 3694, 395, 3696, 1634, 350, - 341, 369, 1638, 353, 337, 3629, 405, 388, 343, 3352, - 3353, 3354, 3355, 350, 168, 3358, 3359, 3360, 3361, 3362, - 3363, 3364, 3365, 3366, 3367, 1555, 4527, 2119, 2418, 1559, - 3046, 113, 630, 11, 468, 280, 280, 249, 90, 181, - 2349, 3834, 377, 3836, 2207, 1343, 1344, 380, 1346, 391, - 167, 2441, 2442, 2443, 2444, 397, 654, 388, 110, 409, - 3268, 5119, 167, 2453, 323, 288, 281, 1851, 2417, 281, - 430, 3414, 3415, 329, 407, 157, 1556, 1754, 125, 0, - 127, 4786, 417, 1760, 1691, 111, 281, 2437, 4820, 158, - 471, 350, 144, 71, 1701, 430, 1703, 430, 315, 432, - 323, 411, 1709, 150, 319, 350, 350, 319, 225, 1716, - 192, 471, 328, 4468, 2860, 164, 29, 1487, 453, 297, - 225, 190, 1492, 231, 319, 456, 343, 350, 323, 234, - 4784, 35, 467, 5191, 467, 350, 5152, 281, 469, 2489, - 53, 125, 4318, 127, 1763, 4604, 195, 4801, 281, 189, - 54, 1631, 178, 281, 4509, 350, 343, 467, 198, 1639, - 377, 142, 470, 167, 125, 140, 127, 249, 1773, 251, - 1775, 1651, 1777, 321, 1779, 319, 1781, 152, 113, 2471, - 1785, 1823, 157, 4837, 2276, 1555, 319, 315, 4, 1559, - 377, 319, 393, 9, 311, 1764, 1815, 4698, 1815, 103, - 417, 1815, 1815, 415, 4379, 186, 350, 1843, 4704, 256, - 1887, 4386, 390, 430, 261, 3133, 4391, 350, 2775, 4394, - 4053, 225, 350, 231, 2565, 251, 311, 202, 2833, 337, - 417, 4999, 3204, 1840, 1841, 3207, 453, 335, 411, 1810, - 1847, 1848, 4229, 333, 300, 4420, 1726, 222, 103, 1822, - 467, 4427, 467, 4429, 1815, 433, 3345, 192, 4433, 344, - 4600, 3179, 1829, 315, 381, 411, 383, 251, 1875, 1749, - 4063, 4064, 380, 2480, 4248, 427, 381, 261, 383, 281, - 467, 4268, 430, 187, 423, 3374, 2480, 377, 263, 4379, - 407, 343, 377, 4998, 467, 393, 4386, 272, 1934, 407, - 261, 4391, 407, 158, 4394, 453, 423, 2562, 2658, 306, - 251, 260, 281, 4967, 249, 256, 251, 319, 247, 471, - 2670, 467, 430, 471, 432, 377, 2533, 340, 91, 337, - 4420, 235, 930, 83, 238, 190, 265, 334, 423, 2533, - 163, 311, 1629, 4433, 140, 249, 212, 2760, 395, 2168, - 319, 140, 2702, 281, 236, 953, 152, 333, 405, 467, - 2166, 157, 162, 152, 305, 417, 1653, 281, 157, 421, - 968, 194, 380, 432, 344, 4834, 280, 381, 430, 383, - 235, 350, 3725, 238, 2168, 185, 209, 4220, 3522, 365, - 2740, 319, 4893, 467, 453, 333, 219, 335, 2823, 407, - 163, 453, 430, 407, 393, 319, 202, 377, 467, 152, - 2159, 162, 21, 202, 157, 467, 4591, 167, 27, 456, - 324, 393, 430, 432, 432, 453, 222, 2768, 403, 2909, - 2058, 194, 469, 222, 185, 4792, 350, 152, 188, 3185, - 344, 2206, 157, 231, 453, 266, 209, 5101, 321, 3195, - 271, 2058, 2765, 423, 2934, 393, 219, 430, 467, 467, - 364, 340, 4295, 8, 430, 1763, 11, 263, 3576, 3387, - 15, 16, 17, 2042, 263, 225, 272, 4652, 236, 222, - 453, 323, 245, 272, 2161, 2162, 2128, 453, 2130, 157, - 2126, 157, 234, 2170, 4193, 2172, 4195, 4196, 2126, 2176, - 4199, 4591, 157, 266, 3991, 471, 329, 222, 350, 3996, - 432, 179, 354, 179, 2279, 4002, 2714, 1815, 234, 2126, - 263, 271, 35, 2084, 179, 266, 5180, 140, 3394, 2910, - 271, 453, 572, 24, 2669, 888, 2671, 2672, 3554, 152, - 4880, 54, 3568, 5044, 157, 4743, 5251, 4745, 263, 337, - 73, 4749, 905, 4751, 45, 908, 2505, 2506, 2507, 2195, - 83, 2768, 4652, 3307, 1162, 87, 329, 3352, 3353, 3354, - 3355, 3779, 188, 3358, 3359, 3360, 3361, 3362, 3363, 3364, - 3365, 3366, 3367, 2348, 624, 468, 5240, 179, 471, 202, - 103, 1889, 380, 3609, 634, 2850, 62, 63, 4796, 4432, - 3385, 231, 3574, 2984, 3576, 79, 4439, 403, 2179, 222, - 2090, 393, 468, 1863, 403, 471, 1866, 4792, 2295, 407, - 3177, 2298, 466, 333, 334, 3242, 3243, 471, 2108, 3414, - 3415, 381, 462, 383, 2114, 3501, 423, 467, 2118, 469, - 185, 466, 430, 393, 432, 279, 471, 340, 411, 231, - 263, 333, 334, 166, 404, 5, 3138, 407, 462, 272, - 10, 206, 53, 467, 2144, 469, 467, 3801, 18, 465, - 2877, 212, 468, 469, 187, 4850, 9, 468, 468, 467, - 471, 471, 2289, 2877, 2847, 2848, 3604, 37, 3606, 2366, - 2297, 468, 468, 2300, 471, 471, 467, 2374, 2375, 2270, - 2271, 337, 4792, 2274, 2381, 2341, 4881, 337, 2188, 343, - 3628, 468, 468, 468, 471, 471, 471, 381, 2395, 383, - 423, 468, 235, 268, 471, 238, 2206, 3645, 2364, 468, - 5231, 2367, 471, 2369, 65, 468, 249, 2373, 471, 468, - 71, 3131, 471, 377, 13, 14, 2382, 2383, 2384, 266, - 380, 231, 83, 471, 468, 4548, 467, 471, 2238, 2436, - 4850, 468, 468, 231, 471, 471, 468, 280, 468, 471, - 381, 471, 383, 3519, 3520, 231, 468, 407, 421, 471, - 111, 49, 113, 417, 2264, 3126, 2084, 2464, 43, 53, - 403, 4881, 2272, 3134, 208, 469, 430, 3804, 380, 2279, - 430, 2607, 432, 2283, 2440, 3786, 468, 4294, 269, 471, - 5150, 324, 468, 4512, 4989, 471, 269, 468, 468, 453, - 471, 471, 450, 2303, 92, 407, 468, 468, 2308, 471, - 471, 344, 2312, 467, 388, 166, 2472, 467, 2423, 3002, - 467, 2518, 469, 2520, 2480, 2325, 2417, 4471, 430, 117, - 432, 364, 2601, 465, 3017, 467, 5196, 337, 2338, 266, - 468, 192, 157, 471, 468, 5041, 134, 471, 2348, 337, - 138, 468, 3164, 430, 471, 432, 1474, 468, 231, 468, - 471, 337, 471, 923, 468, 467, 266, 471, 468, 468, - 158, 471, 471, 161, 934, 2502, 2503, 2533, 3503, 4989, - 380, 2508, 2463, 468, 269, 468, 471, 175, 471, 454, - 455, 456, 380, 458, 459, 460, 461, 462, 463, 468, - 251, 467, 471, 469, 380, 256, 468, 407, 0, 471, - 2714, 468, 450, 3140, 471, 3142, 43, 208, 468, 407, - 3725, 471, 3291, 2620, 5119, 450, 3140, 430, 3142, 432, - 430, 407, 432, 468, 468, 5295, 471, 471, 2565, 381, - 460, 383, 430, 253, 432, 468, 161, 298, 471, 4593, - 430, 467, 432, 1013, 430, 3316, 432, 471, 1576, 381, - 3464, 383, 313, 468, 337, 53, 471, 467, 256, 4097, - 468, 4334, 3155, 1591, 3157, 468, 264, 3347, 471, 467, - 162, 2785, 2658, 468, 468, 468, 471, 471, 471, 468, - 204, 467, 8, 3220, 1612, 11, 5191, 467, 90, 15, - 16, 17, 468, 467, 470, 3280, 3220, 380, 469, 5119, - 468, 3381, 468, 471, 434, 471, 468, 305, 468, 471, - 470, 3454, 3455, 3456, 40, 468, 2702, 468, 471, 468, - 471, 47, 471, 343, 407, 4081, 468, 468, 468, 471, - 471, 471, 468, 468, 468, 471, 471, 471, 140, 1667, - 792, 468, 794, 404, 471, 71, 3426, 430, 468, 432, - 152, 471, 3979, 1681, 3981, 157, 468, 377, 467, 471, - 162, 2571, 467, 3575, 319, 1693, 168, 3451, 185, 171, - 468, 5191, 174, 471, 145, 0, 467, 1705, 145, 2589, - 469, 343, 468, 5100, 467, 471, 468, 2597, 266, 471, - 468, 3546, 22, 471, 24, 185, 3992, 417, 28, 319, - 202, 266, 2768, 145, 34, 35, 36, 145, 38, 185, - 430, 41, 42, 3306, 44, 377, 46, 1745, 1746, 266, - 222, 2807, 2745, 2746, 2747, 468, 4022, 468, 471, 2766, - 471, 2768, 2781, 453, 2781, 2463, 4999, 2781, 2781, 468, - 157, 468, 471, 0, 471, 319, 468, 467, 468, 471, - 470, 3966, 145, 468, 180, 417, 471, 468, 220, 185, - 471, 263, 113, 468, 266, 90, 471, 411, 430, 266, - 272, 236, 3682, 468, 252, 253, 471, 393, 468, 467, - 2887, 471, 2889, 2890, 2891, 468, 468, 3699, 471, 471, - 2781, 453, 260, 468, 468, 221, 471, 471, 468, 468, - 468, 471, 471, 471, 468, 467, 423, 471, 340, 468, - 468, 2877, 471, 471, 468, 140, 157, 471, 212, 468, - 467, 65, 251, 35, 326, 434, 251, 152, 467, 266, - 157, 251, 157, 90, 3605, 43, 43, 162, 251, 398, - 251, 82, 268, 168, 4617, 281, 171, 423, 423, 174, - 79, 1879, 3926, 157, 301, 145, 145, 467, 3629, 189, - 190, 191, 192, 145, 194, 343, 420, 467, 198, 467, - 200, 294, 145, 203, 34, 377, 467, 202, 434, 145, - 210, 145, 212, 140, 471, 215, 145, 145, 157, 219, - 145, 221, 145, 145, 145, 152, 145, 222, 2964, 377, - 157, 403, 145, 145, 266, 162, 467, 377, 35, 4826, - 220, 168, 3126, 266, 171, 467, 5, 174, 8, 157, - 3134, 11, 157, 5, 467, 427, 467, 429, 430, 355, - 2658, 157, 467, 467, 467, 5, 467, 467, 263, 417, - 467, 266, 5, 467, 467, 202, 467, 272, 467, 3015, - 40, 467, 430, 467, 467, 5, 467, 47, 5, 467, - 467, 467, 467, 465, 2874, 222, 468, 469, 470, 277, - 431, 467, 467, 467, 2702, 453, 467, 204, 467, 467, - 467, 71, 35, 94, 220, 471, 471, 35, 157, 467, - 157, 2719, 263, 261, 350, 337, 388, 3104, 388, 388, - 422, 326, 388, 337, 388, 469, 263, 2735, 388, 266, - 388, 3077, 222, 337, 323, 272, 388, 456, 388, 83, - 337, 145, 342, 2751, 217, 451, 266, 266, 454, 455, - 456, 388, 458, 459, 460, 461, 462, 463, 388, 256, - 388, 410, 3108, 380, 266, 266, 333, 261, 138, 467, - 388, 467, 377, 2781, 3120, 388, 178, 83, 281, 471, - 3126, 145, 4238, 377, 185, 411, 411, 8, 3134, 326, - 11, 377, 2982, 388, 3140, 2803, 3142, 3848, 403, 2807, - 4853, 388, 105, 388, 53, 388, 388, 388, 53, 3126, - 180, 388, 242, 388, 388, 185, 270, 3134, 304, 40, - 8, 380, 427, 11, 429, 430, 47, 388, 388, 337, - 388, 388, 285, 285, 388, 42, 388, 42, 388, 4334, - 377, 3158, 3188, 388, 337, 388, 206, 471, 4343, 266, - 71, 221, 40, 3913, 206, 2163, 434, 206, 206, 47, - 465, 266, 388, 468, 469, 470, 403, 2175, 266, 266, - 206, 206, 206, 3219, 3220, 430, 467, 3750, 3751, 3844, - 3845, 3846, 35, 71, 4575, 3272, 398, 145, 24, 4517, - 427, 266, 429, 430, 145, 251, 111, 411, 268, 145, - 430, 145, 145, 266, 228, 3095, 261, 2215, 35, 422, - 251, 251, 251, 35, 212, 157, 339, 138, 34, 386, - 467, 386, 3239, 145, 1674, 467, 388, 1677, 465, 3422, - 388, 468, 469, 470, 145, 411, 145, 465, 465, 3210, - 388, 411, 467, 388, 145, 145, 260, 388, 255, 162, - 138, 426, 242, 242, 564, 11, 4017, 467, 386, 180, - 570, 3232, 572, 467, 185, 575, 471, 577, 467, 579, - 388, 153, 1722, 1723, 171, 162, 586, 390, 202, 468, - 471, 591, 178, 593, 178, 355, 8, 472, 467, 11, - 600, 471, 180, 15, 16, 17, 353, 185, 210, 3316, - 221, 267, 471, 411, 35, 274, 53, 468, 337, 256, - 3291, 467, 411, 35, 624, 210, 256, 210, 236, 629, - 388, 388, 388, 467, 634, 340, 157, 423, 638, 212, - 256, 266, 393, 221, 147, 43, 359, 251, 4089, 147, - 220, 220, 220, 388, 264, 333, 1796, 268, 658, 380, - 3396, 471, 319, 179, 3420, 347, 266, 307, 266, 35, - 206, 212, 388, 388, 411, 411, 303, 188, 456, 456, - 145, 261, 264, 3439, 157, 35, 378, 159, 3268, 304, - 268, 451, 467, 347, 261, 423, 2394, 145, 458, 459, - 460, 461, 462, 463, 3284, 467, 145, 145, 261, 709, - 35, 4009, 712, 713, 714, 8, 251, 251, 11, 430, - 266, 3605, 15, 16, 17, 725, 266, 727, 212, 3309, - 157, 176, 4617, 176, 35, 3428, 3429, 3430, 3431, 32, - 450, 468, 450, 465, 355, 3629, 240, 747, 748, 341, - 750, 751, 212, 347, 157, 755, 468, 4642, 266, 468, - 251, 468, 3539, 3540, 3541, 3542, 468, 185, 185, 769, - 185, 471, 471, 773, 434, 5218, 5219, 355, 23, 779, - 471, 169, 388, 467, 162, 239, 430, 266, 471, 53, - 790, 260, 8, 212, 206, 11, 377, 393, 468, 15, - 16, 17, 802, 4253, 423, 468, 468, 8, 4163, 4164, - 11, 4166, 3210, 162, 467, 4078, 32, 468, 468, 468, - 277, 468, 468, 286, 450, 468, 471, 162, 388, 4221, - 468, 452, 276, 409, 3232, 230, 266, 468, 467, 40, - 451, 53, 417, 467, 844, 467, 47, 458, 459, 460, - 461, 462, 463, 427, 467, 266, 268, 8, 467, 269, - 11, 468, 862, 427, 15, 16, 17, 867, 868, 3605, - 71, 188, 266, 451, 467, 5083, 145, 456, 467, 388, - 458, 459, 460, 461, 462, 463, 434, 388, 4401, 2587, - 196, 4154, 388, 3629, 256, 4408, 896, 897, 3605, 388, - 3636, 145, 270, 3639, 251, 3641, 2604, 3635, 342, 145, - 4740, 4929, 145, 206, 342, 220, 342, 188, 147, 2617, - 388, 411, 3629, 923, 456, 222, 471, 287, 3635, 287, - 408, 157, 388, 388, 934, 388, 388, 138, 938, 4521, - 3717, 232, 232, 232, 337, 3681, 3723, 388, 388, 251, - 337, 337, 388, 3689, 337, 388, 956, 3693, 3694, 388, - 3696, 350, 266, 388, 4731, 3701, 4733, 145, 4853, 3549, - 42, 206, 388, 173, 388, 268, 206, 3, 978, 180, - 388, 388, 206, 4246, 185, 985, 986, 206, 468, 471, - 206, 468, 398, 3, 157, 43, 104, 321, 3705, 3706, - 471, 468, 157, 467, 264, 5023, 468, 1007, 1008, 1009, - 266, 1011, 35, 1013, 145, 388, 145, 157, 468, 2159, - 221, 173, 3420, 145, 466, 337, 2166, 411, 337, 411, - 4471, 466, 269, 347, 337, 206, 143, 143, 3436, 471, - 206, 3439, 454, 455, 456, 206, 458, 459, 460, 461, - 462, 463, 268, 206, 136, 206, 206, 206, 162, 8, - 465, 11, 11, 277, 3800, 157, 422, 268, 468, 471, - 272, 468, 468, 162, 427, 162, 468, 467, 453, 267, - 3660, 171, 1082, 3663, 1084, 1085, 471, 4546, 468, 416, - 467, 40, 471, 4939, 4940, 467, 466, 468, 47, 468, - 467, 4931, 81, 468, 326, 157, 398, 35, 388, 212, - 196, 411, 1112, 411, 53, 380, 145, 268, 388, 467, - 166, 398, 71, 468, 4637, 4009, 388, 342, 3864, 3865, - 3866, 388, 3868, 3869, 3870, 3796, 4434, 5022, 337, 388, - 388, 3848, 1142, 1143, 337, 468, 468, 1147, 467, 1149, - 319, 430, 53, 380, 355, 157, 417, 147, 71, 145, - 104, 454, 455, 456, 398, 458, 459, 460, 461, 462, - 463, 206, 4622, 468, 206, 1175, 206, 210, 1178, 206, - 3760, 1181, 467, 2881, 4482, 302, 191, 434, 266, 138, - 388, 467, 35, 471, 1194, 314, 468, 471, 77, 3779, - 2898, 285, 398, 380, 471, 471, 388, 168, 467, 4472, - 468, 347, 467, 4663, 466, 104, 162, 206, 468, 162, - 53, 467, 428, 428, 1224, 5243, 468, 312, 468, 5075, - 471, 180, 277, 209, 275, 467, 185, 468, 454, 455, - 456, 209, 458, 459, 460, 461, 462, 463, 468, 467, - 451, 5136, 1252, 1253, 1254, 379, 1256, 458, 459, 460, - 461, 462, 463, 467, 273, 53, 174, 261, 4004, 456, - 4006, 3851, 221, 468, 5292, 398, 1276, 468, 468, 388, - 162, 71, 430, 190, 179, 256, 256, 53, 456, 5307, - 4645, 471, 380, 388, 2992, 471, 2994, 65, 4040, 4740, - 145, 4656, 206, 454, 455, 456, 164, 458, 459, 460, - 461, 462, 463, 388, 1314, 388, 162, 1317, 111, 268, - 467, 35, 185, 261, 467, 347, 35, 251, 411, 159, - 411, 157, 347, 5218, 5219, 261, 430, 5167, 53, 430, - 35, 4951, 162, 266, 157, 1345, 467, 269, 204, 1349, - 1350, 193, 162, 467, 467, 312, 416, 363, 4019, 4020, - 1360, 1361, 1362, 468, 1364, 4093, 468, 285, 467, 3767, - 467, 209, 429, 83, 467, 126, 266, 3075, 313, 35, - 4735, 388, 4089, 145, 388, 157, 4093, 1387, 4165, 468, - 118, 468, 35, 467, 256, 178, 467, 4847, 3796, 467, - 467, 467, 233, 4180, 188, 3103, 355, 468, 467, 302, - 347, 4118, 4119, 467, 4864, 145, 4123, 4124, 104, 4869, - 131, 4871, 1422, 426, 35, 468, 270, 1427, 334, 334, - 361, 398, 361, 4740, 468, 53, 53, 35, 74, 467, - 471, 1441, 1442, 467, 416, 178, 467, 4183, 4184, 468, - 1450, 467, 411, 1453, 468, 467, 157, 4193, 249, 4195, - 4196, 2601, 266, 4199, 380, 380, 467, 2607, 380, 468, - 5, 151, 434, 144, 467, 467, 65, 269, 1478, 65, - 1480, 126, 430, 430, 312, 415, 467, 467, 471, 4266, - 35, 416, 162, 1493, 427, 350, 1496, 380, 310, 256, - 4892, 131, 451, 190, 467, 3203, 4861, 266, 266, 458, - 459, 460, 461, 462, 463, 347, 35, 35, 164, 8, - 302, 269, 11, 4259, 269, 467, 15, 16, 17, 164, - 471, 1531, 468, 467, 388, 4115, 3234, 53, 333, 116, - 467, 409, 1542, 1543, 1544, 1545, 1546, 4127, 468, 468, - 4434, 40, 5, 347, 333, 273, 320, 4293, 47, 21, - 1560, 471, 471, 4482, 467, 467, 32, 256, 467, 144, - 388, 1571, 162, 1573, 74, 4481, 3974, 302, 430, 430, - 3978, 361, 71, 361, 164, 1585, 1586, 4471, 4324, 467, - 164, 4889, 789, 2421, 2318, 1558, 2768, 2250, 4482, 853, - 2934, 3604, 3578, 1309, 4265, 5234, 1606, 5065, 2343, 3124, - 3701, 2751, 4753, 4929, 5167, 3748, 4575, 4523, 4211, 4545, - 2854, 4019, 4020, 2554, 4931, 1625, 5048, 4433, 5156, 4959, - 8, 4958, 3330, 11, 5191, 2858, 3797, 15, 16, 17, - 5085, 1641, 1642, 1643, 1644, 3781, 4898, 3739, 2406, 2406, - 2959, 3599, 3175, 3351, 1654, 893, 3764, 4552, 4435, 4436, - 4437, 1661, 40, 2803, 1664, 3187, 5307, 2400, 4561, 47, - 4247, 5169, 5292, 3128, 1674, 4538, 3133, 1677, 3376, 5098, - 4484, 4715, 1682, 4907, 4487, 27, 3851, 1687, 1149, 1620, - 4684, 180, 2102, 71, 3804, 1165, 185, 2832, 966, 4826, - 1733, 652, 1818, 620, 1674, 1818, 3078, 3628, 4413, 1819, - 3179, 3645, 3410, 5124, 5283, 768, 2042, 206, 207, 1394, - 2043, 1764, 1722, 1723, 3784, 4416, 4021, 5040, 3498, 1286, - 2782, 2082, 221, 1733, 1734, 4471, 1353, 2793, 4318, 3463, - 2788, 5032, 4873, 4005, 2081, 3963, 1334, 3439, 3980, 4653, - 3436, 4850, 4849, 1753, 1754, 3436, 3499, 5287, 5140, 5222, - 1760, 5022, 1762, 4620, 4471, 254, 3389, 4410, 1698, 5035, - 5015, 5036, 2719, 1912, 2771, 2629, 4512, 2717, -1, 268, - -1, 1352, 1915, -1, -1, -1, -1, 1787, -1, 1355, - -1, -1, -1, -1, 1794, 1360, 1796, -1, -1, -1, - 1800, 1801, 180, 1803, -1, -1, -1, 185, -1, -1, - 1810, -1, 4589, -1, -1, -1, -1, 1817, -1, -1, - -1, -1, 1822, 1823, -1, -1, 1826, -1, 206, 207, - 1830, -1, 1832, -1, -1, -1, -1, 1837, 1838, -1, - -1, -1, -1, 221, 1844, 1845, 1846, 4427, -1, 4429, - 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, -1, 1859, - 5167, 1861, 1862, -1, -1, 1865, 355, 4265, -1, -1, - -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, - 1880, 1881, 1882, 1883, -1, -1, -1, 1887, 1888, 4550, - 268, -1, 1892, -1, -1, 1895, -1, -1, 1898, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 1906, 4663, 1908, -1, - -1, -1, -1, -1, 1914, 1915, -1, 1917, 35, -1, - -1, -1, -1, -1, 1924, -1, -1, 4588, -1, -1, - -1, -1, -1, -1, -1, -1, 8, 54, -1, 11, - -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4732, -1, 4734, -1, -1, - -1, -1, 451, -1, -1, 454, 455, 456, 40, 458, - 459, 460, 461, 462, 463, 47, -1, 355, 89, -1, - -1, -1, -1, -1, -1, -1, 103, 104, 4386, -1, - -1, 4727, 4728, 4391, 111, -1, 4394, -1, -1, 71, - -1, -1, -1, -1, 4740, 4889, -1, -1, 4744, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4754, -1, - 4727, 4728, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4740, -1, -1, -1, 148, -1, -1, - -1, 2041, -1, 2043, -1, 2045, -1, -1, -1, 166, - -1, -1, -1, -1, -1, -1, 3754, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, - 187, 182, -1, 451, -1, -1, 454, 455, 456, 2079, - 458, 459, 460, 461, 462, 463, 2086, -1, 2088, -1, - -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 217, -1, 180, -1, - 4887, -1, -1, 185, -1, -1, -1, -1, 235, 2119, - -1, 238, -1, -1, -1, -1, -1, -1, 2128, -1, - 2130, -1, 249, -1, 251, -1, -1, -1, -1, -1, - 251, 4802, 73, -1, -1, -1, -1, 2147, 5054, 221, - -1, -1, 4550, -1, -1, -1, -1, -1, -1, 2159, - -1, 2161, 2162, 280, -1, -1, 2166, -1, 2168, -1, - 2170, 282, 2172, -1, 105, -1, 2176, 288, -1, 2179, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4588, -1, -1, 4970, -1, 4931, 268, 128, -1, 4935, - 2200, 4937, -1, -1, -1, 4941, 4942, 324, 139, -1, - 2210, -1, 323, -1, 325, -1, 327, 4878, 2218, 5125, - 5126, -1, -1, 334, -1, 2225, -1, 344, 159, -1, - -1, 342, -1, 164, 2234, -1, -1, -1, 3936, 350, - -1, -1, -1, -1, -1, -1, -1, 364, -1, 366, - -1, 362, 369, -1, 4652, 2255, -1, -1, -1, 370, - 2260, 2261, -1, -1, -1, 4663, -1, -1, -1, -1, - 2270, 2271, -1, -1, 2274, -1, 2276, 2277, -1, -1, - -1, -1, 213, 355, -1, -1, -1, -1, -1, -1, - -1, 5068, -1, -1, -1, 2295, 3436, -1, 2298, 3439, - -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 425, -1, -1, -1, -1, 2319, - 2320, -1, -1, -1, -1, -1, -1, -1, -1, 5065, - -1, 5067, -1, -1, 2334, -1, 2336, 2337, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 467, -1, -1, -1, -1, -1, -1, -1, 5065, -1, - 5067, -1, -1, 4061, -1, -1, 2366, -1, -1, -1, - 301, -1, -1, 304, 2374, 2375, -1, -1, 3518, 451, - -1, 2381, -1, 5160, -1, -1, 458, 459, 460, 461, - 462, 463, -1, 2393, 4792, 2395, -1, -1, -1, 330, - -1, 4099, 5308, 5309, 4802, 5124, 337, 5124, -1, 2409, - 5124, 5124, 2412, 344, 2414, 5192, 5193, 2417, -1, -1, - -1, 2421, 4120, -1, 2424, -1, -1, -1, -1, -1, - -1, 5167, -1, -1, -1, -1, 2436, 2437, 5099, -1, - -1, 372, 5198, -1, -1, -1, 377, -1, -1, 380, - -1, -1, -1, -1, 2454, -1, -1, -1, -1, -1, - -1, 5041, -1, 5124, 2464, -1, 2466, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5198, - 4878, 5198, -1, -1, 5198, 5198, -1, 4185, -1, 2489, - 8, -1, 423, 11, -1, -1, -1, -1, 5234, -1, - -1, -1, -1, 5280, -1, -1, -1, 5243, -1, -1, - -1, -1, -1, -1, -1, -1, 2516, -1, 2518, 2519, - 2520, 2521, 40, 8, -1, -1, 11, 5234, -1, 47, - 15, 16, 17, -1, -1, -1, 5243, 5198, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, - -1, -1, -1, 71, 2554, 40, 5292, -1, -1, -1, - -1, -1, 47, -1, 5283, -1, 5283, -1, -1, 5283, - 5283, 5307, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 5292, 71, -1, -1, -1, - -1, 2591, -1, -1, -1, -1, -1, -1, 4296, -1, - 5307, 2601, -1, -1, -1, -1, -1, 2607, 8, -1, - -1, 11, -1, -1, -1, 15, 16, 17, -1, -1, - 2620, -1, 5283, -1, -1, -1, -1, 3767, 2628, -1, - -1, -1, 32, 2633, -1, -1, -1, -1, -1, -1, - 4338, -1, 8, -1, -1, 11, -1, -1, -1, 15, - 16, 17, -1, -1, -1, -1, 2656, 2657, 2658, -1, - -1, 2661, 180, -1, -1, -1, 32, 185, -1, 2669, - 2670, 2671, 2672, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2682, -1, -1, 2685, -1, 2687, -1, -1, - -1, -1, -1, -1, -1, 180, -1, -1, 2698, 2699, - 185, 5099, 2702, 221, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2714, -1, 2716, -1, 2718, -1, - 2720, 206, 207, -1, 8, -1, 5124, 11, -1, -1, - -1, 15, 16, 17, -1, -1, 221, -1, -1, -1, - 2740, -1, -1, -1, 2744, -1, -1, -1, -1, -1, - 268, 2751, -1, 2753, 2754, 2755, -1, -1, -1, -1, - -1, -1, -1, 1029, -1, -1, -1, -1, -1, 254, - -1, 2771, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, 2782, 268, 11, -1, 271, 2787, 15, 16, - 17, 1057, -1, 2793, -1, -1, -1, -1, -1, -1, - 5198, -1, -1, 2803, -1, 32, 206, 2807, -1, -1, - 2810, 1077, 2812, 40, -1, -1, -1, -1, -1, -1, - 47, 1087, -1, -1, -1, -1, -1, 1093, -1, -1, - -1, -1, -1, 1099, 3974, -1, -1, 355, 3978, 1105, - 206, -1, 1108, -1, 71, -1, -1, -1, -1, -1, - -1, -1, -1, 2853, -1, 2855, -1, -1, -1, -1, - 2860, -1, -1, -1, -1, -1, 3, -1, 268, -1, - 355, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, 5283, -1, 2887, -1, 2889, - 2890, 2891, -1, -1, -1, 32, -1, -1, 35, -1, - -1, -1, 268, 40, -1, -1, -1, -1, -1, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4618, -1, 206, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 451, 71, -1, -1, -1, -1, -1, - 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, - -1, -1, -1, 180, -1, -1, -1, -1, 185, -1, - 4658, -1, -1, -1, -1, -1, 451, -1, -1, 454, - 455, 456, -1, 458, 459, 460, 461, 462, 463, 206, - 207, -1, -1, -1, 268, -1, 471, -1, -1, -1, - -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, - 3000, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4712, -1, -1, -1, -1, 4717, - 4718, -1, -1, -1, -1, -1, -1, 254, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 268, -1, 180, 271, -1, -1, -1, 185, -1, - -1, -1, -1, -1, 454, 455, 456, -1, 458, 459, - 460, 461, 462, 463, -1, -1, -1, -1, -1, 206, - 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4223, 221, -1, -1, -1, 454, 455, - 456, -1, 458, 459, 460, 461, 462, 463, -1, -1, - -1, -1, -1, -1, 3104, -1, -1, -1, -1, 3109, - 3110, -1, -1, -1, -1, -1, -1, 254, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 355, 4827, - -1, 268, -1, -1, 271, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3146, 3147, 3148, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3163, -1, -1, -1, -1, -1, -1, - 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, - -1, -1, -1, -1, -1, 3185, 3186, -1, -1, -1, - -1, -1, -1, -1, -1, 3195, 3196, 3197, -1, -1, - -1, 3201, 35, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3214, -1, -1, -1, 355, -1, - -1, -1, 55, -1, 451, -1, -1, 454, 455, 456, - -1, 458, 459, 460, 461, 462, 463, -1, -1, 4379, - -1, -1, -1, -1, 471, -1, 4386, -1, -1, -1, - -1, 4391, -1, -1, 4394, 4395, 89, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3272, -1, -1, -1, -1, -1, -1, -1, - 4420, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3291, -1, 4433, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3307, -1, -1, - -1, -1, -1, -1, 451, 148, -1, 454, 455, 456, - -1, 458, 459, 460, 461, 462, 463, 3327, 5026, -1, - -1, -1, -1, -1, 20, -1, 3336, -1, -1, 25, - -1, 4481, 3342, -1, 3344, -1, -1, 3347, -1, 182, - -1, -1, 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, - 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, -1, -1, - -1, 3371, 3372, 59, -1, -1, -1, -1, -1, 212, - -1, 3381, -1, 4523, 217, 3385, 72, -1, -1, 3389, - -1, -1, -1, -1, -1, -1, -1, 3397, -1, -1, - 3400, 87, 3402, -1, -1, -1, -1, -1, -1, -1, - -1, 3411, -1, -1, 3414, 3415, -1, -1, 251, 3419, - 3420, -1, -1, -1, 3424, -1, 3426, -1, -1, -1, - -1, -1, -1, 3433, 3434, 3435, 3436, -1, -1, 3439, - 3440, -1, 128, -1, 3444, 3445, 3446, -1, -1, 282, - -1, 4591, 3452, 139, -1, 288, -1, -1, 3458, 3459, - 3460, -1, 1728, -1, -1, -1, -1, -1, -1, -1, - 1736, -1, -1, 159, -1, -1, -1, -1, 164, -1, - -1, -1, -1, -1, 3484, -1, 1752, 22, -1, -1, - 323, -1, -1, 28, 327, -1, -1, -1, 3498, -1, - 3500, 334, -1, -1, -1, -1, -1, -1, -1, 342, - -1, -1, 4652, -1, -1, -1, -1, 350, 3518, 3519, - 3520, -1, 3522, -1, -1, -1, -1, -1, -1, 362, - -1, -1, -1, -1, 69, -1, -1, 370, -1, 3539, - 3540, 3541, 3542, -1, -1, -1, -1, -1, 234, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 391, -1, - -1, -1, -1, -1, -1, -1, -1, 7, 3568, -1, - -1, -1, -1, 13, 14, -1, -1, -1, -1, 19, - -1, 21, 268, -1, 119, -1, 3586, 27, 123, -1, - 30, -1, 425, -1, -1, 130, 429, 430, 133, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, - 50, -1, -1, 55, -1, 301, -1, -1, -1, -1, - -1, -1, -1, 158, -1, -1, -1, -1, -1, 4769, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, - -1, 337, 4792, -1, -1, 190, 8, -1, 344, 11, - -1, 347, -1, 15, 16, 17, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8, 119, 3678, 11, - 32, -1, -1, 15, 16, 17, -1, -1, 40, -1, - -1, 377, -1, -1, -1, 47, -1, -1, 384, -1, - 32, -1, -1, -1, -1, 391, 148, -1, 40, -1, - 4850, -1, 398, -1, 249, 47, 251, 3717, -1, 71, - -1, 3721, -1, 3723, -1, 3725, 261, -1, -1, -1, - -1, -1, 3732, -1, -1, 270, -1, 423, 3738, 71, - 182, 4881, -1, -1, -1, -1, 281, -1, 3748, -1, - -1, -1, -1, -1, -1, -1, 196, -1, -1, -1, - -1, -1, -1, 3763, 204, -1, 206, 3767, 208, 209, - -1, 211, -1, 213, 2040, 217, 216, 3777, 218, -1, - -1, -1, -1, -1, 319, -1, 3786, 322, 323, -1, - -1, -1, -1, -1, -1, -1, -1, 3797, -1, -1, - -1, 3801, -1, -1, -1, 3805, 3806, -1, -1, 251, - -1, -1, -1, -1, -1, 350, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, - -1, -1, -1, 185, 3834, -1, 3836, -1, -1, 281, - 282, -1, -1, 3843, -1, -1, 288, -1, 180, 4989, - -1, -1, -1, 185, 206, 207, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, - -1, -1, 3872, -1, 206, 207, -1, 319, -1, 414, - -1, 323, -1, 3883, -1, 327, -1, -1, -1, 221, - -1, -1, 334, -1, -1, -1, -1, -1, 35, -1, - 342, -1, 254, -1, -1, -1, -1, -1, 350, -1, - -1, -1, -1, 3913, 5054, -1, 268, -1, 55, 271, - 362, -1, 254, 3923, 3924, -1, -1, -1, 370, -1, - 3930, 3931, -1, -1, -1, 3935, 268, -1, -1, 271, - 3940, -1, -1, 3943, 3944, -1, -1, -1, 3948, 3949, - -1, -1, 89, -1, 3954, 3955, 3956, 3957, 3958, -1, - -1, -1, 3962, 3963, 3964, 5105, 3966, 3967, -1, -1, - 3970, -1, -1, -1, 3974, -1, -1, -1, 3978, 5119, - -1, -1, -1, 425, 3984, 5125, 5126, -1, -1, -1, - -1, 3991, -1, -1, -1, -1, 3996, -1, -1, -1, - -1, -1, 4002, 355, -1, 8, -1, -1, 11, 4009, - -1, 148, 15, 16, 17, -1, -1, 4017, -1, -1, - -1, 4021, -1, 355, -1, -1, 4026, -1, -1, 32, - -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, - 4040, -1, -1, 4043, 47, 182, -1, -1, -1, -1, - -1, 5191, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4063, 4064, -1, -1, -1, 71, -1, - -1, -1, -1, -1, -1, 212, -1, -1, -1, -1, - 217, 4081, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4094, -1, -1, -1, -1, 451, - -1, -1, 454, 455, 456, -1, 458, 459, 460, 461, - 462, 463, -1, -1, 251, -1, 468, -1, -1, 451, - -1, -1, 454, 455, 456, -1, 458, 459, 460, 461, - 462, 463, -1, 573, -1, -1, 468, -1, -1, -1, - -1, 581, -1, 4143, -1, 282, -1, -1, 588, 589, - 5290, 288, 592, -1, 594, 595, -1, -1, -1, 599, - -1, -1, -1, -1, -1, 4165, -1, -1, 5308, 5309, - 610, -1, -1, -1, -1, -1, -1, 180, -1, -1, - 4180, -1, 185, -1, -1, 625, 323, -1, -1, -1, - 327, -1, -1, -1, -1, -1, -1, 334, -1, -1, - -1, -1, -1, 206, 207, 342, -1, -1, 648, 4209, - 650, -1, -1, 350, -1, -1, -1, -1, 221, 2485, - 660, -1, -1, 4223, -1, 362, 2492, -1, -1, 4229, - -1, -1, -1, 370, -1, -1, -1, -1, 4238, -1, - -1, -1, -1, -1, -1, -1, 2512, -1, -1, -1, - -1, 254, 692, 4253, 391, -1, 2522, -1, -1, -1, - 2526, -1, -1, 2529, -1, 268, 4266, -1, 4268, 2535, - -1, 2537, -1, -1, 2540, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 726, -1, 425, -1, - -1, -1, 429, 8, -1, -1, 11, -1, 4298, -1, - 15, 16, 17, 630, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 32, 22, -1, - -1, -1, -1, -1, 28, 40, -1, 654, -1, -1, - -1, -1, 47, 2599, 4334, -1, -1, 41, -1, -1, - 780, -1, -1, 4343, -1, -1, -1, -1, -1, -1, - -1, -1, 355, -1, -1, -1, 71, -1, -1, -1, - 4360, 4361, -1, -1, 4364, 69, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4379, - -1, -1, 4382, -1, -1, -1, 4386, -1, -1, -1, - -1, 4391, -1, -1, 4394, 4395, -1, 4397, -1, 4399, - -1, 841, 4402, 4403, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, - 4420, -1, 4422, -1, -1, -1, 130, -1, -1, 133, - -1, -1, -1, 4433, 4434, 4435, 4436, 4437, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, - -1, 454, 455, 456, 158, 458, 459, 460, 461, 462, - 463, -1, -1, -1, -1, 180, -1, -1, -1, -1, - 185, 911, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4481, 4482, -1, -1, -1, 190, 927, -1, -1, - -1, 206, 207, -1, -1, -1, -1, -1, -1, 939, - -1, -1, 942, -1, -1, -1, 221, -1, -1, -1, - -1, -1, 952, -1, -1, -1, -1, 957, -1, -1, - -1, -1, -1, 4523, -1, 965, 4526, -1, -1, -1, - -1, 971, -1, -1, 974, -1, -1, -1, 4538, 254, - -1, 4541, -1, -1, -1, 249, 4546, 251, 4548, -1, - -1, -1, -1, 268, -1, 4555, 271, 261, -1, -1, - -1, -1, -1, -1, -1, -1, 270, -1, -1, -1, - -1, 4571, -1, -1, 1014, 4575, -1, 281, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4589, - 4590, 4591, -1, -1, -1, -1, -1, 2863, -1, -1, - -1, -1, -1, 930, -1, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, 319, -1, 4617, 322, 323, - 4620, -1, 4622, -1, -1, -1, 953, -1, -1, 32, - -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, - 355, 968, 4642, -1, 47, -1, 350, -1, 4648, -1, - -1, -1, 4652, -1, -1, -1, 4656, -1, -1, -1, - -1, -1, -1, 4663, -1, -1, -1, -1, 71, -1, - -1, -1, 4672, -1, -1, -1, -1, 2943, -1, 2945, - -1, -1, -1, -1, -1, 1125, -1, 1127, -1, 1129, - -1, 1131, -1, 1133, 1134, 1135, 4696, -1, -1, -1, - 1140, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 414, 1151, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4722, -1, -1, 1052, -1, -1, -1, -1, - -1, 4731, 4732, 4733, 4734, -1, 451, -1, -1, 454, - 455, 456, -1, 458, 459, 460, 461, 462, 463, -1, - -1, -1, -1, 468, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4769, - -1, -1, -1, -1, -1, -1, -1, 180, -1, -1, - -1, -1, 185, -1, -1, -1, -1, -1, -1, 4789, - -1, -1, 4792, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 200, 206, 207, -1, -1, -1, 3074, -1, - -1, -1, 210, -1, 3080, -1, -1, -1, 221, -1, - -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1162, -1, 22, -1, -1, - -1, -1, -1, 28, -1, -1, -1, 4847, -1, -1, - 4850, 254, -1, 4853, -1, -1, 41, 4857, -1, -1, - -1, -1, -1, -1, 4864, 268, -1, -1, 271, 4869, - -1, 4871, -1, 4873, -1, -1, -1, -1, -1, -1, - -1, 4881, -1, -1, 69, -1, -1, 4887, -1, 4889, - -1, -1, -1, -1, 1334, -1, -1, -1, -1, 4899, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, - 16, 17, -1, -1, -1, -1, 121, -1, 123, 4939, - 4940, -1, -1, -1, -1, 130, 32, -1, 133, -1, - -1, -1, 355, -1, 40, -1, -1, -1, -1, -1, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - 4970, 1411, -1, 158, -1, -1, 1303, 4977, -1, -1, - -1, 4981, -1, -1, -1, 71, -1, -1, -1, 4989, - -1, -1, 3258, -1, 3260, -1, 3262, -1, -1, -1, - -1, -1, -1, 3269, -1, 190, -1, -1, -1, -1, - -1, -1, -1, -1, 5014, 5015, -1, -1, -1, 5019, - -1, -1, 5022, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 5032, -1, -1, 5035, -1, -1, -1, 1479, - 5040, 1368, 3308, -1, -1, -1, -1, -1, 451, -1, - -1, 454, 455, 456, 5054, 458, 459, 460, 461, 462, - 463, -1, -1, -1, 249, 468, 251, -1, 5068, -1, - -1, -1, -1, -1, -1, 5075, 261, -1, -1, -1, - -1, -1, -1, -1, -1, 270, -1, -1, -1, -1, - -1, -1, -1, -1, 180, -1, 281, -1, -1, 185, - 5100, -1, -1, 22, -1, 5105, -1, -1, 1435, 28, - 5110, -1, -1, -1, -1, -1, -1, -1, -1, 5119, - 206, 207, -1, -1, -1, 5125, 5126, 5127, -1, -1, - -1, -1, -1, -1, 319, 221, 5136, 322, 323, -1, - 5140, -1, -1, -1, -1, -1, -1, 1474, -1, -1, - 69, -1, -1, 5153, -1, -1, -1, -1, -1, -1, - 5160, -1, -1, -1, -1, 350, 564, -1, 254, -1, - 1497, -1, 570, -1, -1, -1, 1616, -1, -1, -1, - -1, 8, 268, -1, 11, 271, -1, -1, 15, 16, - 17, 5191, 5192, 5193, -1, -1, -1, -1, -1, -1, - 119, -1, -1, -1, 123, 32, -1, -1, -1, -1, - -1, 130, -1, 40, 133, -1, -1, -1, 5218, 5219, - 47, -1, -1, -1, -1, -1, -1, -1, -1, 414, - -1, -1, -1, -1, -1, -1, -1, -1, 8, 158, - -1, 11, -1, -1, 71, 15, 16, 17, -1, 1576, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 5260, -1, 32, -1, 1591, -1, 5266, -1, -1, 355, - 40, 190, -1, 1600, -1, -1, -1, 47, -1, -1, - 5280, -1, -1, -1, -1, 1612, -1, 5287, -1, -1, - 5290, -1, -1, -1, -1, -1, -1, -1, 1738, -1, - 1740, 71, -1, -1, -1, -1, -1, -1, 5308, 5309, - -1, -1, -1, -1, -1, -1, -1, 1757, -1, 1759, - -1, -1, -1, -1, -1, -1, -1, 725, -1, -1, - 249, -1, 251, 1773, -1, 1775, -1, 1777, -1, 1779, - 1667, 1781, 261, -1, -1, 1785, -1, -1, -1, -1, - -1, 270, 750, 180, 1681, -1, -1, -1, 185, -1, - -1, -1, 281, -1, -1, 451, 1693, -1, 454, 455, - 456, 769, 458, 459, 460, 461, 462, 463, 1705, 206, - 207, -1, 468, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 790, -1, 221, -1, -1, -1, -1, -1, - 319, -1, -1, 322, 323, -1, -1, -1, -1, -1, - 180, -1, -1, -1, -1, 185, -1, -1, 1745, 1746, - -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, - -1, 350, -1, -1, -1, -1, 206, 207, -1, -1, - -1, 268, -1, -1, 271, -1, -1, -1, -1, -1, - -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 862, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 254, -1, 22, -1, -1, -1, - -1, -1, 28, -1, -1, 414, -1, -1, 268, -1, - -1, 271, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 355, -1, - -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1879, -1, -1, -1, -1, -1, -1, -1, - 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, - -1, -1, 3838, -1, -1, -1, 3842, -1, -1, -1, - 978, -1, -1, -1, 32, 355, -1, 123, -1, -1, - -1, -1, 40, -1, 130, -1, -1, 133, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1007, - 1008, 1009, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 158, 71, 451, -1, -1, 454, 455, 456, - -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, - -1, 468, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2091, 2092, -1, 190, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2110, 2111, -1, -1, -1, 2115, 2116, -1, -1, -1, - 2120, 451, -1, -1, 454, 455, 456, -1, 458, 459, - 460, 461, 462, 463, 2134, -1, -1, -1, 468, -1, - -1, 2141, -1, -1, -1, 2145, 2146, -1, -1, 2149, - 2150, -1, -1, 249, -1, 251, 2156, -1, -1, -1, - -1, -1, -1, -1, -1, 261, -1, -1, -1, 2169, - -1, 2171, 180, -1, 270, -1, -1, 185, -1, -1, - -1, -1, -1, -1, -1, 281, -1, -1, -1, 1147, - 2190, -1, -1, -1, -1, 2195, -1, -1, 206, 207, - -1, -1, -1, -1, -1, -1, -1, -1, 2208, -1, - 2097, -1, -1, 221, 2101, 2102, -1, 2217, -1, 2219, - 1178, -1, 2222, 2223, 2224, -1, 322, 323, -1, 2229, - 2230, -1, -1, 4059, -1, -1, -1, -1, -1, 2239, - -1, -1, -1, -1, 2244, -1, 254, -1, -1, 2249, - -1, -1, 35, -1, 350, -1, -1, -1, -1, -1, - 268, -1, -1, 271, -1, 2265, -1, -1, -1, -1, - -1, -1, 55, 2273, 4100, 4101, 2163, -1, -1, -1, - -1, -1, -1, -1, 2284, -1, -1, -1, 2175, -1, - -1, -1, -1, -1, -1, -1, 2296, -1, -1, 2299, - -1, -1, -1, -1, 2304, -1, 89, -1, -1, 2309, - 2310, -1, -1, -1, 2314, -1, -1, 2317, 414, -1, - -1, 2321, 2322, 2323, 2324, -1, 2326, -1, 2215, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2339, - 2340, -1, 2342, -1, -1, -1, -1, 355, -1, -1, - -1, -1, 2352, 2353, -1, -1, 1314, -1, -1, 8, - 4186, 4187, 11, -1, -1, 148, 15, 16, 17, -1, - -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, - 11, -1, -1, 32, 15, 16, 17, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, 47, 182, - -1, 32, -1, 1361, 2404, -1, -1, -1, -1, 40, - -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, - -1, -1, 71, -1, -1, -1, -1, -1, -1, 212, - -1, -1, 2432, -1, 217, -1, -1, -1, -1, -1, - 71, -1, -1, 451, -1, -1, 454, 455, 456, -1, - 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, - 468, -1, -1, -1, -1, -1, -1, -1, 251, -1, - -1, -1, -1, -1, -1, 4301, -1, 4303, 4304, 8, - -1, -1, 11, 1441, -1, -1, 15, 16, 17, -1, - -1, 4317, 1450, -1, -1, -1, -1, -1, -1, 282, - -1, -1, -1, 32, -1, 288, -1, 2394, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, - -1, 8, 1480, -1, 11, -1, -1, -1, 15, 16, - 17, 180, -1, -1, -1, 1493, 185, -1, 1496, -1, - 323, -1, 71, -1, 327, 32, -1, -1, -1, 180, - -1, 334, -1, 40, 185, -1, -1, 206, 207, 342, - 47, -1, -1, -1, -1, -1, -1, 350, -1, -1, - -1, -1, 221, -1, -1, 206, 207, -1, -1, 362, - -1, -1, -1, -1, 71, -1, -1, 370, 1546, 2476, - 221, -1, 2592, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1560, -1, -1, 254, -1, -1, 391, -1, - -1, -1, -1, -1, -1, 1573, -1, -1, -1, 268, - -1, 2621, 271, 254, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, - 271, -1, 425, -1, -1, -1, 429, -1, -1, -1, - -1, 180, -1, -1, -1, -1, 185, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1625, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 206, 207, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 221, 180, -1, -1, 1654, -1, 185, -1, - 2587, -1, -1, 1661, -1, -1, 355, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2604, -1, 206, - 207, -1, -1, -1, 355, 254, -1, -1, -1, -1, - 2617, -1, -1, -1, 221, -1, -1, -1, -1, 268, - -1, -1, 271, -1, -1, -1, -1, -1, -1, -1, - 22, -1, -1, -1, -1, -1, 28, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 268, -1, -1, 271, -1, -1, 4613, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 69, -1, -1, - -1, -1, 451, -1, 1762, 454, 455, 456, -1, 458, - 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, - 451, -1, -1, 454, 455, 456, 355, 458, 459, 460, - 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, - -1, -1, 1800, 1801, -1, -1, -1, -1, -1, -1, - -1, 123, -1, -1, -1, -1, -1, -1, 130, 1817, - 4686, 133, -1, -1, -1, -1, -1, -1, 355, -1, - -1, -1, -1, -1, -1, 2875, -1, -1, -1, 2879, - -1, -1, -1, -1, -1, 2885, 158, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2901, 2902, -1, -1, -1, 2906, -1, -1, -1, - 4736, 2911, 2912, 2913, -1, 2915, -1, -1, 190, -1, - -1, -1, 451, -1, -1, 454, 455, 456, -1, 458, - 459, 460, 461, 462, 463, 2822, 2936, -1, 2825, 468, - 2827, -1, -1, -1, -1, 2832, 2946, 2947, 2948, 2949, - -1, -1, -1, -1, -1, -1, 1914, -1, -1, -1, - -1, -1, -1, -1, 451, -1, 1924, 454, 455, 456, - -1, 458, 459, 460, 461, 462, 463, 249, -1, 251, - -1, 468, -1, 2983, -1, -1, 2986, 2987, 2988, 261, - -1, -1, -1, -1, 2881, -1, -1, -1, 270, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, - -1, 2898, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - -1, -1, -1, -1, -1, 28, 2923, -1, -1, -1, - -1, -1, 35, -1, -1, -1, -1, 319, -1, -1, - 322, 323, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 69, -1, 350, -1, - -1, -1, -1, 2041, -1, 2043, -1, -1, 3088, -1, - -1, -1, 8, -1, -1, 11, 3096, -1, -1, 15, - 16, 17, -1, -1, -1, 2992, -1, 2994, -1, -1, - 103, -1, -1, -1, 3114, -1, 32, -1, -1, -1, - 36, 2079, -1, -1, 40, -1, -1, -1, -1, -1, - 123, 47, -1, -1, -1, -1, -1, 130, -1, -1, - 133, 3141, 414, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 71, 0, -1, -1, -1, - -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, - -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 28, -1, 30, 31, 3075, -1, - -1, -1, -1, 3193, 187, -1, -1, 190, 3198, -1, - -1, -1, 46, -1, 120, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3103, -1, -1, -1, - -1, -1, 66, -1, 68, 69, -1, -1, 3228, -1, - -1, 75, -1, 77, -1, -1, -1, -1, -1, 3126, - -1, -1, 235, -1, 88, 238, 90, 3134, -1, -1, - -1, -1, -1, -1, -1, -1, 249, -1, 251, -1, - -1, -1, -1, 107, 180, 3265, 110, 3267, 261, 185, - -1, -1, -1, -1, -1, -1, 2234, 270, -1, -1, - 124, -1, 126, -1, -1, -1, 130, 280, 281, -1, - 206, 207, 136, -1, -1, -1, -1, 2255, -1, -1, - 144, -1, 146, -1, -1, 221, -1, -1, 152, -1, - -1, -1, -1, -1, -1, -1, 3203, -1, -1, -1, - -1, -1, -1, -1, 168, 5151, 319, -1, -1, 322, - 323, 324, -1, -1, 3221, -1, -1, -1, 254, -1, - 184, -1, -1, -1, -1, -1, -1, 3234, -1, -1, - -1, 344, 268, -1, -1, 271, -1, 350, -1, -1, - -1, 2319, 2320, -1, -1, -1, -1, -1, -1, -1, - -1, 364, -1, -1, -1, -1, -1, -1, -1, 223, - 224, -1, -1, -1, -1, 229, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 241, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, - -1, -1, -1, -1, -1, -1, -1, 189, -1, -1, - -1, 414, -1, -1, -1, -1, 198, 199, -1, -1, - -1, -1, -1, -1, -1, 207, -1, -1, -1, 355, - -1, -1, -1, 3330, 288, -1, -1, -1, 220, -1, - -1, -1, 296, -1, -1, -1, 2414, -1, -1, -1, - -1, -1, -1, -1, 3351, 309, -1, -1, -1, -1, - -1, 315, 316, -1, 318, -1, -1, -1, -1, 323, - -1, -1, -1, -1, 328, -1, -1, 331, -1, 3376, - -1, -1, 336, -1, -1, 411, -1, -1, 342, 343, - -1, -1, -1, -1, -1, -1, 350, -1, -1, -1, - 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 364, -1, -1, 3410, -1, 3525, -1, 3527, -1, -1, - -1, -1, -1, 377, 3534, 451, -1, -1, 454, 455, - 456, -1, 458, 459, 460, 461, 462, 463, 8, -1, - 3550, 11, 396, -1, -1, 15, 16, 17, -1, -1, - -1, -1, 406, -1, -1, -1, 3566, 8, 412, -1, - 11, -1, 32, 417, 15, 16, 17, 22, -1, -1, - 40, -1, -1, 28, 3584, -1, 430, 47, -1, -1, - -1, 32, -1, -1, -1, -1, -1, -1, -1, 40, - -1, -1, 3602, -1, -1, -1, 47, -1, -1, 453, - -1, 71, 3612, -1, -1, -1, -1, -1, -1, 3506, - -1, -1, -1, 467, 69, -1, 470, -1, -1, -1, - 71, 3631, -1, 2591, -1, -1, -1, -1, -1, -1, - -1, -1, 3642, 3643, 3644, -1, -1, -1, -1, 3649, - 3650, 3651, 3652, -1, -1, 3655, 3656, -1, -1, -1, - -1, 3661, 3662, -1, 3664, 3665, 3666, 3667, 3668, 3669, - -1, 3671, -1, -1, -1, -1, -1, -1, 123, -1, - 3680, -1, -1, 3683, 3684, 130, -1, 8, 133, -1, - 11, -1, -1, -1, 15, 16, 17, -1, -1, -1, - -1, -1, 3702, -1, -1, -1, -1, -1, -1, -1, - -1, 32, -1, 158, -1, -1, -1, -1, 3605, 40, - 180, -1, -1, -1, 3724, 185, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, - -1, -1, 3629, -1, 185, 190, 206, 207, -1, -1, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 221, -1, -1, -1, 206, 207, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 221, -1, -1, -1, -1, -1, 2744, -1, -1, -1, - -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, - 572, -1, -1, -1, 249, -1, 251, -1, 268, -1, - -1, 271, 584, 254, -1, -1, 261, -1, 590, -1, - -1, -1, -1, 3823, -1, 270, -1, 268, -1, -1, - 271, 603, -1, -1, -1, -1, 281, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 619, -1, -1, - -1, -1, 624, -1, -1, 3855, -1, -1, 630, 180, - -1, -1, 634, 635, 185, -1, -1, 3754, -1, -1, - 642, -1, -1, -1, 319, -1, -1, 322, 323, -1, - -1, -1, 654, 655, -1, 206, 207, -1, -1, -1, - -1, -1, -1, 665, -1, 355, -1, -1, -1, -1, - 221, -1, -1, -1, -1, 350, -1, -1, -1, -1, - -1, -1, -1, -1, 355, -1, -1, 3804, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, - 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 414, - -1, -1, -1, -1, -1, 747, 748, -1, -1, -1, - -1, 753, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 451, -1, -1, 454, 455, 456, -1, 458, 459, - 460, 461, 462, 463, -1, -1, -1, 779, 468, -1, - 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, - 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, - -1, -1, -1, -1, 355, -1, -1, -1, -1, 3926, - -1, -1, 3000, -1, -1, -1, -1, -1, -1, 3936, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, -1, 11, -1, -1, -1, 15, 16, 17, 4069, - -1, -1, -1, 4073, 4074, 4075, 4076, -1, -1, 4079, - -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4110, 4111, 4112, -1, 4114, -1, 4116, 4117, -1, -1, - -1, -1, 71, -1, -1, -1, -1, -1, 4128, 4129, - 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, - 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, - -1, 923, -1, -1, -1, 4155, -1, -1, 930, -1, - -1, -1, 934, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4061, -1, -1, -1, 4178, -1, - -1, 953, -1, -1, 8, -1, -1, 11, 3146, 3147, - 3148, 15, 16, 17, -1, -1, 968, -1, -1, -1, - -1, -1, -1, -1, -1, 3163, -1, -1, 32, -1, - -1, -1, 4099, -1, -1, -1, 40, -1, -1, -1, - -1, -1, -1, 47, -1, -1, 22, -1, 3186, -1, - -1, 180, 28, 4120, -1, -1, 185, -1, 3196, 3197, - -1, 1013, -1, 3201, -1, -1, -1, 71, -1, -1, - -1, -1, 4252, -1, -1, -1, 3214, 206, 207, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 221, 69, -1, -1, -1, -1, -1, -1, - 1052, 4281, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4185, -1, - -1, -1, -1, -1, -1, 254, 4306, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1089, -1, 268, - -1, -1, 271, -1, -1, -1, -1, 123, -1, -1, - -1, 1103, -1, -1, 130, -1, -1, 133, -1, -1, - 1112, -1, -1, -1, -1, -1, -1, -1, 1120, 3307, - -1, -1, -1, -1, -1, -1, 180, -1, -1, -1, - -1, 185, 158, 8, -1, -1, 11, -1, -1, -1, - 15, 16, 17, -1, -1, -1, 1148, -1, -1, -1, - -1, -1, 206, 207, -1, -1, -1, 32, -1, -1, - 1162, -1, 1164, -1, 190, 40, -1, 221, -1, -1, - -1, -1, 47, -1, -1, -1, 355, 1179, -1, 4296, - 1182, -1, -1, 4413, -1, -1, -1, -1, -1, -1, - -1, -1, 1194, -1, -1, -1, 71, -1, -1, -1, - 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 268, -1, -1, 271, -1, -1, - -1, 4338, 1224, 249, -1, 251, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, - -1, -1, -1, 4473, 270, 3433, 3434, 3435, -1, -1, - 1252, 1253, 1254, -1, 1256, 281, -1, -1, -1, -1, - -1, 4491, -1, -1, -1, -1, 4496, 4497, -1, -1, - -1, -1, 451, -1, 1276, 454, 455, 456, -1, 458, - 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, - -1, -1, -1, 319, -1, -1, 322, 323, 1300, -1, - -1, 355, -1, -1, -1, 180, 1308, 1309, -1, -1, - 185, -1, -1, -1, -1, 1317, 1318, 4547, -1, -1, - -1, -1, -1, -1, 350, -1, -1, -1, -1, -1, - -1, 206, 207, -1, -1, -1, -1, 4567, -1, -1, - -1, -1, -1, 1345, -1, -1, 221, 1349, 1350, -1, - -1, -1, -1, -1, 4471, -1, -1, -1, -1, -1, - 8, -1, 1364, 11, -1, -1, 1368, 15, 16, 17, - -1, -1, -1, 1375, 4604, -1, -1, -1, -1, 254, - -1, 4611, -1, -1, 32, -1, -1, -1, 414, -1, - -1, -1, 40, 268, -1, -1, 271, 451, -1, 47, - 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, - -1, -1, -1, -1, 468, -1, -1, -1, -1, -1, - -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4679, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4700, -1, 1474, -1, -1, -1, 4593, -1, -1, 8, - 355, 4711, 11, -1, -1, -1, 15, 16, 17, -1, - -1, -1, -1, -1, -1, 1497, -1, -1, -1, -1, - -1, 4618, -1, 32, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 180, 3721, -1, -1, -1, 185, -1, -1, - -1, 4658, 71, 4773, 3732, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1556, -1, -1, -1, 206, 207, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 221, 1576, 3763, 451, -1, -1, 454, - 455, 456, -1, 458, 459, 460, 461, 462, 463, 1591, - -1, -1, -1, 468, -1, 4712, -1, -1, 1600, -1, - 4717, 4718, -1, -1, 4834, 1607, 254, -1, -1, 3797, - 1612, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 268, -1, -1, 271, -1, -1, -1, -1, -1, 1631, - -1, -1, -1, -1, -1, -1, -1, 1639, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1651, - -1, 180, -1, -1, -1, 3843, 185, -1, -1, -1, - -1, -1, -1, -1, -1, 1667, 4896, -1, -1, -1, - -1, -1, 1674, -1, -1, 1677, -1, 206, 207, 1681, - -1, 4911, -1, -1, -1, 1687, -1, -1, -1, -1, - -1, 1693, 221, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1705, -1, -1, -1, 355, -1, -1, - 4827, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1722, 1723, -1, 1725, 1726, 254, -1, -1, -1, -1, - 4960, -1, -1, -1, -1, 1737, -1, -1, -1, 268, - -1, -1, 271, 1745, 1746, 4975, 1748, 1749, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1764, -1, -1, -1, -1, 3955, 3956, 3957, - 3958, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1796, -1, -1, -1, -1, -1, - -1, -1, -1, 451, -1, -1, 454, 455, 456, -1, - 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, - 468, -1, -1, 5053, -1, -1, 355, -1, 1830, -1, - 1832, -1, -1, -1, -1, 1837, 1838, -1, -1, -1, - -1, -1, 1844, 1845, 1846, -1, -1, -1, 1850, -1, - 1852, 1853, 1854, 1855, 1856, 1857, -1, 1859, -1, 1861, - 1862, -1, -1, 1865, -1, 5095, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1879, 1880, 1881, - 1882, 1883, 1884, -1, -1, -1, 1888, -1, -1, -1, - 1892, -1, -1, 1895, -1, -1, 1898, 1899, 1900, 1901, - 1902, 1903, 1904, 1905, 1906, -1, 1908, -1, -1, 5026, - -1, -1, -1, 1915, -1, 1917, -1, -1, -1, -1, - -1, -1, 451, -1, -1, 454, 455, 456, -1, 458, - 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5179, - -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, - 11, -1, -1, -1, 15, 16, 17, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, - 11, 32, -1, -1, 15, 16, 17, -1, -1, 40, - -1, -1, -1, -1, -1, -1, 47, 8, -1, -1, - 11, 32, -1, -1, 15, 16, 17, -1, -1, 40, - -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, - 71, 32, -1, -1, -1, -1, -1, -1, -1, 40, - -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, - 71, -1, -1, 2045, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, - -1, -1, -1, -1, -1, -1, -1, -1, 2090, 8, - -1, -1, 11, -1, 32, 2097, 15, 16, 17, 2101, - 2102, -1, 40, -1, -1, -1, 2108, -1, -1, 47, - 4298, 2113, 2114, 32, -1, -1, 2118, -1, -1, -1, - -1, 40, -1, -1, 2126, -1, 157, -1, 47, 180, - -1, 162, -1, 71, 185, -1, -1, 22, -1, -1, - -1, -1, 2144, 28, -1, 2147, -1, -1, -1, 180, - -1, -1, 71, -1, 185, 206, 207, 2159, -1, -1, - -1, 2163, -1, -1, 2166, -1, -1, -1, -1, 180, - 221, -1, -1, 2175, 185, 206, 207, -1, -1, -1, - -1, -1, -1, -1, 69, -1, 2188, -1, -1, -1, - 221, -1, -1, -1, -1, 206, 207, -1, -1, -1, - -1, -1, -1, 254, 2206, 2207, -1, -1, -1, -1, - 221, -1, -1, 2215, -1, -1, -1, 268, 156, -1, - 271, -1, -1, 254, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2237, 2238, 268, 123, 2241, - 271, -1, 180, 254, -1, 130, -1, 185, 133, -1, - -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, - 271, 180, 2264, -1, 2266, -1, 185, -1, 206, 207, - 2272, -1, -1, 158, -1, -1, -1, 2279, -1, -1, - -1, 2283, -1, 221, 295, -1, -1, 206, 207, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2303, 221, -1, 355, 190, 2308, -1, -1, -1, - 2312, -1, -1, 2315, -1, -1, 254, -1, -1, -1, - -1, -1, -1, 2325, 355, -1, -1, -1, -1, -1, - 268, -1, -1, 271, -1, 254, 2338, -1, 4526, -1, - -1, -1, -1, -1, 355, -1, 2348, -1, -1, 268, - -1, -1, 271, 4541, -1, 293, -1, -1, 4546, -1, - 371, -1, -1, -1, 249, -1, 251, -1, -1, -1, - 289, -1, -1, -1, -1, -1, 261, -1, -1, -1, - -1, -1, -1, 4571, -1, 270, -1, -1, -1, -1, - -1, 2393, 2394, -1, -1, -1, 281, -1, -1, -1, - 451, 2403, 4590, 454, 455, 456, -1, 458, 459, 460, - 461, 462, 463, -1, -1, 466, -1, 355, -1, -1, - 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, - 461, 462, 463, -1, 319, 2437, 355, 322, 323, -1, - 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, - 461, 462, 463, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, 350, -1, 11, -1, -1, - -1, 15, 16, 17, 2476, -1, -1, -1, 2480, -1, - -1, -1, -1, -1, -1, -1, -1, 2489, 32, -1, - -1, 35, -1, -1, -1, -1, 40, -1, -1, -1, - -1, -1, -1, 47, -1, -1, 22, -1, 4696, -1, - -1, -1, 28, 451, -1, -1, 454, 455, 456, -1, - 458, 459, 460, 461, 462, 463, -1, 71, -1, 414, - -1, 2533, 451, -1, -1, 454, 455, 456, -1, 458, - 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, - -1, -1, -1, 69, -1, -1, -1, -1, -1, 8, - -1, -1, 11, -1, -1, -1, 15, 16, 17, 2571, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 32, -1, 2587, 35, 2589, -1, -1, - -1, 40, -1, -1, -1, 2597, -1, -1, 47, 2601, - -1, 4789, 2604, -1, -1, 2607, -1, 123, -1, -1, - -1, -1, -1, -1, 130, 2617, -1, 133, -1, -1, - -1, -1, 71, -1, -1, -1, 2628, -1, -1, -1, - -1, 2633, -1, -1, -1, -1, 180, -1, -1, -1, - -1, 185, 158, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2656, 2657, 2658, -1, -1, 2661, - -1, -1, 206, 207, -1, -1, -1, 2669, 2670, 2671, - 2672, -1, -1, -1, 190, 2677, -1, 221, -1, -1, - 2682, 2683, -1, 2685, -1, 2687, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2698, 2699, -1, -1, - 2702, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 254, -1, -1, -1, 2716, -1, 2718, -1, 2720, -1, - -1, -1, -1, -1, 268, -1, -1, 271, -1, -1, - -1, 180, -1, 249, -1, 251, 185, -1, 2740, -1, - -1, -1, -1, -1, -1, 261, -1, -1, -1, 2751, - -1, 2753, 2754, 2755, 270, -1, -1, 206, 207, -1, - -1, -1, -1, -1, -1, 281, 2768, -1, -1, 2771, - -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, - 2782, -1, -1, -1, -1, 2787, -1, -1, -1, -1, - -1, 2793, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2803, -1, 319, -1, 254, 322, 323, -1, -1, - -1, 355, -1, -1, -1, -1, -1, -1, -1, 268, - 2822, -1, 271, 2825, 8, 2827, -1, 11, -1, 22, - 2832, 15, 16, 17, 350, 28, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2847, 2848, -1, 32, -1, - -1, 2853, -1, -1, -1, -1, 40, -1, -1, -1, - -1, -1, 8, 47, -1, 11, -1, -1, -1, 15, - 16, 17, 2874, -1, -1, 2877, 69, -1, -1, 2881, - -1, -1, -1, -1, -1, -1, 32, 71, -1, 35, - -1, -1, -1, -1, 40, -1, 2898, -1, 414, -1, - -1, 47, -1, -1, -1, -1, 355, 451, -1, -1, - 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, - -1, 2923, -1, -1, -1, 71, -1, -1, -1, -1, - 123, -1, -1, -1, -1, -1, -1, 130, -1, -1, - 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2958, 2959, 2960, -1, - -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 162, -1, - 2982, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2992, -1, 2994, -1, -1, -1, 180, 190, -1, -1, - 3002, 185, 451, -1, -1, 454, 455, 456, -1, 458, - 459, 460, 461, 462, 463, 3017, -1, -1, -1, -1, - -1, -1, 206, 207, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 180, -1, -1, 221, -1, 185, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 249, -1, 251, -1, - 206, 207, -1, -1, -1, -1, -1, -1, 261, -1, - 254, -1, -1, 3075, -1, 221, -1, 270, -1, -1, - -1, -1, -1, -1, 268, -1, -1, 271, 281, -1, - -1, -1, -1, 3095, -1, -1, -1, -1, -1, -1, - -1, 3103, -1, -1, -1, -1, -1, -1, 254, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 268, -1, 3126, 271, 319, -1, -1, 322, - 323, 3133, 3134, -1, 8, -1, -1, 11, 3140, -1, - 3142, 15, 16, 17, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3155, -1, 3157, -1, 350, 32, -1, - -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, - -1, 355, -1, 47, -1, -1, -1, 3179, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, - -1, 3203, -1, -1, -1, -1, -1, -1, -1, 355, - -1, -1, -1, -1, -1, -1, -1, -1, 3220, 3221, - -1, 414, -1, -1, -1, -1, -1, -1, -1, 198, - 199, -1, 3234, -1, -1, -1, -1, -1, 207, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3268, 451, -1, -1, - 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, - -1, -1, 3284, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3306, 451, 180, 3309, 454, 455, - 456, 185, 458, 459, 460, 461, 462, 463, -1, -1, - -1, -1, -1, -1, -1, 3327, -1, -1, 3330, -1, - 25, -1, 206, 207, 3336, -1, -1, -1, -1, -1, - 3342, -1, 3344, -1, -1, 3347, -1, 221, -1, 3351, - 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, 3360, 3361, - 3362, 3363, 3364, 3365, 3366, 3367, -1, -1, -1, 3371, - 3372, -1, -1, -1, 3376, -1, -1, 72, -1, 3381, - 254, -1, -1, 3385, -1, 3387, -1, 3389, -1, -1, - -1, -1, 87, -1, 268, 3397, -1, 271, 3400, -1, - 3402, -1, -1, -1, -1, -1, -1, -1, 3410, 3411, - 105, -1, 3414, 3415, -1, -1, 111, 3419, 3420, -1, - -1, -1, -1, -1, 3426, -1, -1, -1, -1, -1, - -1, -1, -1, 128, 3436, -1, -1, 3439, -1, -1, - -1, -1, -1, -1, 139, -1, 8, -1, -1, 11, - 3452, -1, 147, 15, 16, 17, 3458, 3459, 3460, -1, - -1, -1, -1, -1, 159, -1, -1, -1, -1, 164, - 32, -1, -1, 35, -1, -1, 171, -1, 40, -1, - -1, 355, 3484, -1, -1, 47, -1, -1, -1, -1, - -1, -1, -1, 188, -1, -1, -1, -1, 3500, -1, - 199, -1, -1, -1, 3506, -1, -1, -1, 207, 71, - -1, 385, -1, -1, -1, -1, 3518, -1, 213, -1, - -1, 220, -1, -1, -1, -1, -1, 8, -1, -1, - 11, -1, -1, -1, 15, 16, 17, -1, -1, 234, - -1, -1, -1, -1, -1, -1, -1, 3549, -1, -1, - -1, 32, -1, -1, -1, -1, -1, -1, -1, 40, - -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, - -1, -1, -1, 268, -1, -1, -1, 451, -1, -1, - 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, - 71, -1, -1, -1, -1, -1, 291, 3599, -1, -1, - -1, -1, 3604, 3605, 3606, -1, 301, -1, -1, 304, - -1, -1, -1, -1, -1, 584, -1, -1, 180, -1, - -1, 590, -1, 185, -1, -1, 3628, 3629, -1, -1, - -1, -1, -1, -1, 603, 330, -1, -1, -1, -1, - 335, -1, 337, 3645, 206, 207, -1, -1, -1, 344, - 619, -1, 347, -1, -1, -1, -1, -1, 3660, 221, - -1, 3663, -1, -1, -1, 634, 635, -1, -1, -1, - -1, 366, -1, 642, -1, -1, -1, 372, -1, -1, - -1, 376, 377, -1, -1, 380, 655, -1, -1, 384, - -1, -1, 254, -1, -1, -1, 665, -1, 393, 180, - -1, -1, -1, 398, 185, -1, 268, -1, -1, 271, - -1, -1, -1, -1, -1, 410, -1, -1, -1, -1, - -1, -1, -1, 3725, -1, 206, 207, -1, 423, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 221, -1, -1, -1, -1, -1, -1, -1, 3750, 3751, - -1, -1, 3754, -1, -1, -1, -1, -1, 3760, -1, - -1, -1, -1, -1, -1, 3767, -1, -1, -1, -1, - -1, -1, -1, 254, -1, -1, -1, 3779, -1, -1, - -1, -1, -1, -1, 753, -1, -1, 268, -1, -1, - 271, -1, -1, 355, 22, -1, -1, -1, -1, -1, - 28, -1, 3804, 3805, 3806, -1, -1, 35, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 69, -1, -1, -1, -1, -1, -1, -1, 3851, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3872, -1, -1, -1, 355, 103, -1, -1, -1, -1, - -1, 3883, -1, -1, -1, 584, -1, -1, -1, 451, - -1, 590, 454, 455, 456, 123, 458, 459, 460, 461, - 462, 463, 130, -1, 603, 133, -1, -1, -1, -1, - -1, 3913, -1, -1, -1, -1, -1, -1, -1, -1, - 619, 3923, 3924, -1, 3926, -1, -1, -1, 3930, 3931, - 158, -1, -1, 3935, 3936, -1, 635, -1, 3940, -1, - -1, 3943, 3944, 642, -1, -1, 3948, -1, -1, -1, - -1, -1, 3954, -1, -1, -1, 655, -1, -1, 187, - -1, -1, 190, -1, 3966, 934, 665, -1, -1, -1, - 451, -1, 3974, 454, 455, 456, 3978, 458, 459, 460, - 461, 462, 463, -1, -1, -1, -1, -1, -1, 3991, - -1, -1, -1, -1, 3996, -1, -1, -1, -1, -1, - 4002, -1, -1, -1, -1, -1, -1, 235, -1, -1, - 238, -1, -1, -1, -1, 4017, -1, -1, -1, -1, - -1, 249, -1, 251, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, - -1, 4043, 270, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, 281, 753, -1, -1, -1, -1, 4061, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4078, -1, -1, -1, - -1, 4083, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 319, -1, -1, 322, 323, 324, 4099, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4115, -1, -1, 344, -1, 4120, -1, - 1089, -1, 350, -1, -1, 4127, -1, -1, -1, -1, - -1, -1, -1, -1, 1103, -1, 364, -1, -1, -1, - -1, 4143, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1120, 4154, -1, -1, -1, -1, -1, 630, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1148, - -1, -1, 654, 4185, -1, -1, 414, -1, -1, -1, - -1, -1, -1, -1, -1, 1164, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4209, -1, -1, - 1179, -1, -1, 1182, -1, -1, -1, -1, -1, -1, - -1, 4223, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4246, -1, -1, -1, -1, -1, - -1, 4253, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 630, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 654, - -1, -1, 4294, -1, 4296, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4318, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1300, 4334, -1, -1, -1, 4338, -1, -1, 1308, - 1309, 4343, -1, -1, -1, -1, -1, -1, -1, 1318, - -1, -1, -1, -1, -1, -1, -1, -1, 4360, 4361, - -1, -1, 4364, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4379, -1, -1, - -1, -1, -1, -1, 4386, -1, -1, -1, -1, 4391, - 1089, -1, 4394, 4395, -1, -1, -1, -1, -1, -1, - 4402, 4403, -1, -1, 1103, -1, 1375, -1, -1, 20, - -1, -1, -1, -1, 25, -1, -1, -1, 4420, -1, - 4422, 1120, -1, -1, -1, 4427, 37, 4429, -1, -1, - -1, 4433, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 59, 1148, - -1, -1, -1, -1, -1, -1, -1, -1, 930, -1, - -1, 72, -1, -1, -1, 1164, -1, -1, -1, 4471, - 4472, -1, 83, -1, -1, -1, 87, -1, -1, 4481, - 1179, 953, -1, 1182, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 105, -1, 968, -1, -1, -1, - 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4517, -1, 128, -1, -1, - -1, 4523, -1, -1, -1, -1, -1, -1, 139, -1, - -1, -1, -1, -1, -1, -1, 147, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 159, -1, - -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, - 171, -1, -1, -1, -1, 930, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4578, 188, -1, -1, - 1052, -1, -1, -1, -1, -1, -1, 1556, 953, 4591, - -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1300, -1, 968, -1, -1, -1, -1, -1, 1308, - 1309, -1, -1, -1, 225, 4617, 4618, -1, 4620, 1318, - 4622, -1, -1, 234, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1607, -1, - 4642, -1, -1, -1, -1, -1, 4648, -1, -1, -1, - 4652, -1, -1, -1, -1, -1, 4658, 268, -1, -1, - 271, 4663, 1631, -1, -1, -1, -1, -1, -1, -1, - 1639, -1, -1, -1, -1, -1, 1375, -1, -1, -1, - 291, -1, 1651, -1, -1, -1, -1, 1052, -1, -1, - 1162, -1, -1, 304, -1, -1, -1, -1, -1, -1, - 311, -1, 4704, -1, -1, -1, -1, -1, -1, -1, - 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, 330, - 4722, -1, -1, -1, -1, -1, 337, -1, -1, -1, - -1, -1, -1, 344, -1, -1, 347, -1, 4740, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1722, 1723, 366, 1725, 1726, -1, -1, - -1, 372, -1, -1, -1, -1, 377, 4769, 1737, 380, - 381, -1, 383, 384, -1, -1, -1, -1, -1, 1748, - 1749, -1, 393, -1, -1, -1, -1, 398, -1, -1, - 4792, -1, -1, 404, -1, 1764, 407, 1162, -1, 410, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 423, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4826, 4827, -1, 1796, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4847, -1, -1, 4850, -1, - -1, 4853, -1, -1, -1, -1, -1, 1556, -1, -1, - -1, -1, 4864, -1, -1, -1, -1, 4869, -1, 4871, - -1, 4873, -1, -1, -1, -1, -1, -1, -1, 4881, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1368, 4899, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1607, -1, - -1, -1, -1, -1, -1, 1884, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4929, -1, 4931, - -1, -1, 1631, -1, -1, -1, -1, -1, -1, -1, - 1639, -1, -1, -1, -1, -1, -1, -1, 747, 748, - -1, -1, 1651, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4981, - -1, -1, -1, -1, -1, -1, -1, 4989, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1474, 1368, -1, -1, -1, -1, -1, -1, - -1, -1, 5014, 5015, -1, -1, -1, -1, -1, -1, - 5022, 5023, -1, -1, 5026, 1497, 1725, 1726, -1, -1, - 5032, -1, -1, -1, -1, -1, -1, -1, 1737, 5041, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1748, - 1749, -1, 5054, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1764, -1, -1, -1, -1, - 1435, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 5105, 1576, -1, -1, -1, 5110, 1474, - -1, -1, -1, -1, -1, -1, -1, 5119, -1, 1591, - -1, 2090, -1, 5125, 5126, 5127, -1, -1, 1600, -1, - -1, -1, 1497, -1, 5136, -1, -1, -1, -1, 2108, - 1612, -1, -1, -1, 2113, 2114, -1, -1, -1, 2118, - -1, 5153, -1, -1, -1, -1, -1, 2126, -1, -1, - -1, -1, -1, -1, -1, 5167, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2144, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1884, -1, -1, -1, 5191, - -1, -1, -1, -1, -1, 1667, -1, 2166, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1681, - -1, 1576, -1, -1, -1, -1, 5218, 5219, -1, 2188, - -1, 1693, -1, -1, -1, -1, 1591, -1, -1, -1, - -1, -1, -1, 1705, -1, 1600, -1, 2206, 2207, -1, - -1, 5243, -1, -1, -1, -1, -1, 1612, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5260, -1, - -1, -1, -1, -1, 5266, -1, -1, -1, 2237, 2238, - -1, -1, 2241, 1745, 1746, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5290, -1, - 5292, -1, -1, -1, -1, 2264, -1, 2266, -1, -1, - -1, -1, 1667, 2272, -1, 5307, 5308, 5309, -1, -1, - 2279, -1, -1, -1, 2283, -1, 1681, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, - -1, -1, -1, -1, 2303, -1, -1, -1, -1, 2308, - 1705, -1, -1, 2312, -1, -1, 2315, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2325, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2338, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2348, - 1745, 1746, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2090, -1, -1, -1, 1194, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1879, -1, 2108, - -1, -1, -1, -1, 2113, 2114, -1, -1, -1, 2118, - -1, -1, -1, -1, -1, 1224, -1, 2126, -1, -1, - -1, -1, -1, -1, 2403, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2144, -1, -1, -1, -1, - -1, -1, -1, 1252, 1253, 1254, -1, 1256, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 20, -1, -1, -1, 1276, 25, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2188, - 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2206, 2207, -1, - -1, 2480, 59, -1, 1879, -1, -1, -1, 1317, -1, - -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2237, 2238, - 87, -1, 2241, -1, -1, -1, 1345, -1, -1, -1, - 1349, 1350, 1917, -1, -1, -1, -1, -1, 105, -1, - -1, -1, -1, -1, 2533, 2264, -1, 2266, -1, -1, - -1, -1, -1, 2272, -1, -1, -1, -1, -1, -1, - 2279, 128, -1, -1, 2283, -1, -1, -1, -1, -1, - -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, - 147, -1, 2571, -1, 2303, -1, -1, -1, -1, 2308, - -1, -1, 159, 2312, -1, -1, 2315, 164, -1, -1, - 2589, -1, -1, -1, 171, 2097, 2325, -1, 2597, 2101, - 2102, -1, -1, -1, -1, -1, -1, -1, 2607, 2338, - -1, 188, -1, -1, -1, -1, -1, -1, -1, 2348, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 234, -1, -1, - -1, 2163, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2175, 2403, -1, -1, -1, 2677, -1, - -1, -1, -1, -1, 2683, -1, -1, -1, -1, -1, - -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2097, 280, -1, -1, 2101, 2102, -1, -1, - -1, -1, -1, 2215, 291, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 301, -1, -1, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2480, -1, 330, -1, -1, -1, -1, 335, -1, - 337, -1, -1, -1, -1, -1, -1, 344, 2163, 2768, - 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2175, -1, -1, -1, -1, -1, -1, -1, -1, 366, - -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, - 377, -1, -1, 380, 2533, -1, -1, 384, -1, -1, - -1, -1, -1, -1, 391, -1, 393, -1, -1, -1, - 2215, 398, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, -1, -1, -1, -1, -1, - -1, -1, 2571, -1, -1, -1, 423, -1, 2847, 2848, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2589, -1, -1, -1, -1, -1, -1, -1, 2597, -1, - -1, -1, -1, -1, -1, 2874, -1, -1, 2877, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 20, -1, 2394, -1, -1, 25, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 72, 73, -1, -1, -1, -1, 2677, -1, - -1, -1, -1, 83, 2683, -1, -1, 87, -1, 2958, - 2959, 2960, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2476, 105, -1, -1, -1, -1, - -1, -1, -1, 2982, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 128, 2394, - -1, -1, -1, 3002, -1, -1, -1, -1, 1837, 139, - -1, -1, -1, -1, -1, -1, -1, 147, 3017, -1, - -1, 1850, -1, 1852, -1, -1, 1855, 1856, 1857, 159, - -1, -1, -1, 1862, 164, -1, 1865, -1, -1, 2768, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1880, 1881, 1882, 1883, -1, -1, -1, 188, 1888, - -1, -1, -1, 1892, -1, -1, 1895, -1, -1, 1898, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, -1, 1908, - -1, 2476, -1, 213, -1, 2587, 1915, -1, 1917, -1, - -1, -1, -1, -1, -1, -1, 3095, -1, -1, -1, - -1, -1, 2604, -1, 234, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2617, -1, -1, 2847, 2848, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3133, -1, -1, -1, 268, -1, - -1, 3140, -1, 3142, -1, 2874, -1, -1, 2877, -1, - -1, -1, -1, -1, -1, -1, 3155, -1, 3157, -1, - -1, 291, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 301, -1, -1, 304, -1, -1, -1, -1, -1, - 3179, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2587, -1, -1, -1, -1, -1, -1, -1, - 330, -1, -1, -1, -1, 335, -1, 337, -1, 2604, - -1, -1, -1, -1, 344, -1, 2045, 347, -1, -1, - -1, 3220, 2617, -1, -1, 630, -1, -1, -1, 2958, - 2959, 2960, -1, -1, -1, -1, 366, -1, -1, -1, - -1, -1, 372, -1, -1, -1, -1, 377, -1, 654, - 380, -1, -1, 2982, 384, -1, -1, -1, -1, -1, - -1, 391, -1, 393, -1, -1, -1, -1, 398, 3268, - -1, -1, -1, 3002, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3284, -1, -1, 3017, -1, - -1, -1, -1, 423, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3306, -1, -1, - 3309, -1, -1, -1, -1, -1, -1, -1, 2147, -1, - 2822, -1, -1, 2825, -1, 2827, -1, -1, -1, -1, - 2832, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2753, 2754, - 2755, -1, -1, -1, -1, -1, 3095, -1, -1, -1, - -1, -1, -1, -1, -1, 630, -1, -1, -1, 2881, - -1, -1, -1, -1, -1, -1, -1, -1, 3387, -1, - -1, -1, -1, -1, -1, -1, 2898, -1, -1, 654, - -1, -1, -1, -1, 3133, -1, -1, -1, -1, -1, - -1, 3140, -1, 3142, -1, -1, -1, -1, -1, -1, - -1, 2923, -1, -1, -1, -1, 3155, 2822, 3157, -1, - 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3179, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, - 2992, 3220, 2994, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2898, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 930, -1, -1, 2923, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3268, - -1, -1, -1, -1, -1, -1, -1, -1, 953, -1, - 3549, -1, -1, -1, -1, 3284, -1, -1, -1, -1, - -1, -1, -1, 968, 2393, -1, -1, -1, -1, -1, - -1, -1, -1, 3075, -1, -1, -1, 3306, -1, -1, - 3309, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, - 3599, 3103, -1, -1, -1, 3604, -1, 3606, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3126, -1, -1, -1, -1, 3628, - -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3645, 1052, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3387, -1, - -1, 3660, -1, -1, 3663, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 930, -1, -1, -1, -1, - 3075, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 953, -1, - -1, 3203, -1, -1, -1, -1, -1, -1, 3103, -1, - -1, -1, -1, 968, -1, -1, -1, -1, -1, 3221, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3126, 3234, -1, -1, -1, -1, -1, -1, 3134, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3750, 3751, -1, -1, -1, -1, 1162, -1, -1, - -1, 3760, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3779, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1052, 630, 2628, - -1, -1, -1, -1, 2633, -1, -1, -1, 3203, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3549, -1, 654, -1, -1, -1, 3221, -1, 3330, 2658, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3234, - 2669, -1, 2671, 2672, -1, -1, -1, -1, -1, 3351, - -1, -1, 3851, 2682, -1, -1, 2685, -1, 2687, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3599, -1, -1, -1, 3376, 3604, -1, 3606, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2716, -1, 2718, - -1, 2720, -1, -1, -1, -1, -1, -1, -1, 3628, - -1, -1, -1, -1, -1, -1, -1, 1162, 3410, -1, - -1, -1, -1, -1, -1, -1, 3645, -1, -1, -1, - -1, -1, -1, -1, 2753, 2754, 2755, -1, -1, -1, - -1, 3660, -1, -1, 3663, 3330, -1, -1, -1, -1, - -1, -1, 2771, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2782, -1, -1, 3351, -1, 2787, -1, - -1, -1, -1, 1368, 2793, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3506, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3410, -1, -1, -1, -1, - -1, 3750, 3751, -1, 2853, -1, -1, -1, -1, -1, - 1435, 3760, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3779, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3460, -1, -1, -1, 1474, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4078, - -1, -1, -1, -1, 4083, -1, -1, -1, -1, -1, - -1, -1, 1497, -1, -1, -1, -1, -1, 930, -1, - -1, -1, -1, 3605, -1, -1, -1, -1, -1, -1, - -1, 3506, -1, 1368, -1, -1, 4115, -1, -1, -1, - -1, 953, 3851, -1, -1, -1, -1, 3629, 4127, -1, - -1, -1, -1, -1, -1, -1, 968, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1576, -1, -1, -1, -1, -1, -1, -1, -1, - 1435, -1, -1, -1, -1, -1, 1591, -1, -1, -1, - -1, -1, -1, -1, -1, 1600, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1612, -1, -1, - 3605, -1, -1, -1, -1, -1, -1, -1, -1, 1474, - 1052, -1, -1, -1, -1, 630, -1, -1, -1, -1, - -1, -1, -1, -1, 3629, -1, -1, -1, -1, -1, - -1, -1, 1497, -1, -1, -1, -1, 4246, -1, 654, - -1, -1, 3754, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1667, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1681, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1705, -1, 3804, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4318, - -1, 1576, -1, -1, -1, -1, -1, -1, -1, -1, - 1162, -1, -1, -1, -1, -1, 1591, -1, -1, -1, - 1745, 1746, -1, -1, -1, 1600, -1, -1, -1, 4078, - -1, -1, -1, -1, 4083, -1, -1, 1612, -1, 3754, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4115, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4127, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3804, - -1, -1, 1667, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3926, 4154, 1681, -1, 4427, -1, - 4429, -1, -1, -1, 3936, -1, -1, -1, 1693, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1705, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4472, 1879, -1, -1, -1, -1, -1, - -1, -1, 4481, -1, -1, -1, -1, -1, -1, -1, - 1745, 1746, -1, -1, -1, -1, -1, -1, 3327, -1, - -1, -1, -1, -1, -1, -1, -1, 3336, -1, -1, - -1, -1, -1, 3342, -1, 3344, -1, 4246, 4517, -1, - -1, -1, -1, -1, 4523, 930, -1, -1, -1, -1, - -1, 3926, -1, -1, -1, -1, 1368, -1, -1, -1, - -1, 3936, 3371, 3372, -1, -1, -1, -1, 953, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4061, - 3389, -1, -1, 968, -1, -1, -1, -1, 3397, -1, - -1, 3400, -1, 3402, -1, -1, -1, -1, -1, -1, - -1, -1, 3411, -1, -1, -1, -1, -1, -1, 4318, - 3419, 3420, -1, -1, -1, -1, 3991, 4099, -1, -1, - -1, 3996, -1, 1435, -1, -1, -1, 4002, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, - -1, -1, -1, 3452, 1879, -1, -1, -1, -1, 3458, - 3459, 3460, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1474, -1, -1, -1, -1, 1052, 630, -1, - -1, -1, -1, -1, -1, 3484, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1497, 4061, -1, -1, -1, - -1, 3500, 654, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, - -1, -1, 2097, -1, -1, -1, 2101, 2102, 4427, -1, - 4429, -1, -1, -1, 4099, 4704, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4740, -1, 4472, 1576, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1162, 2163, 1591, - -1, -1, -1, -1, -1, -1, -1, -1, 1600, -1, - 2175, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1612, -1, -1, -1, -1, -1, -1, -1, 4517, -1, - 4185, -1, -1, -1, 4296, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2215, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1667, 4338, -1, -1, -1, - -1, -1, 2097, -1, -1, -1, 2101, 2102, -1, 1681, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1693, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1705, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4294, - -1, 4296, -1, -1, -1, -1, -1, -1, 2163, -1, - -1, -1, -1, 1745, 1746, -1, -1, -1, -1, -1, - 2175, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4929, -1, 4931, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4338, -1, -1, -1, -1, 930, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2215, -1, -1, 1368, -1, -1, -1, -1, -1, 4471, - -1, 953, -1, -1, -1, 4704, 3805, 3806, -1, -1, - -1, -1, -1, -1, -1, -1, 968, -1, -1, 2394, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4740, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 5023, -1, -1, -1, -1, -1, - 1435, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 5041, 3872, -1, -1, -1, 1879, -1, -1, - -1, -1, -1, -1, 3883, 5054, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1474, - 1052, 2476, -1, -1, -1, -1, 4471, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4593, 1497, -1, 3923, 3924, -1, -1, -1, -1, - -1, 3930, 3931, -1, -1, -1, 3935, -1, -1, -1, - -1, 3940, -1, -1, 3943, 3944, 4618, -1, -1, 3948, - -1, -1, -1, -1, -1, 3954, 5125, 5126, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2394, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4658, -1, -1, -1, - -1, -1, 3991, -1, -1, -1, -1, 3996, 5167, -1, - -1, 1576, -1, 4002, -1, -1, -1, -1, -1, -1, - 1162, -1, 2587, -1, -1, -1, 1591, -1, 4017, -1, - -1, -1, -1, -1, -1, 1600, -1, -1, 4593, 2604, - 4929, -1, 4931, -1, -1, -1, -1, 1612, -1, -1, - 4712, -1, 2617, -1, 4043, 4717, 4718, -1, -1, -1, - -1, 2476, -1, 4618, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 5243, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1667, 4658, -1, 2097, -1, -1, -1, 2101, - 2102, -1, -1, -1, -1, -1, 1681, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, - -1, -1, -1, 5292, 5023, -1, -1, -1, -1, -1, - 1705, -1, -1, -1, -1, -1, -1, -1, 5307, 5308, - 5309, -1, 5041, -1, 4143, -1, -1, 4712, -1, -1, - -1, -1, 4717, 4718, -1, 4827, -1, -1, -1, -1, - -1, 2163, 2587, -1, -1, -1, -1, -1, -1, -1, - 1745, 1746, -1, 2175, -1, -1, -1, -1, -1, 2604, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2617, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4209, -1, -1, 2215, -1, -1, 1368, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2822, -1, -1, - 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, - -1, 4826, 4827, -1, -1, -1, -1, -1, 5167, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1879, -1, 2881, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1474, 2898, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 5243, 1497, -1, -1, 2923, -1, - -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, - -1, 4360, 4361, -1, -1, 4364, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2394, 5292, -1, -1, -1, 2822, -1, -1, - 2825, -1, 2827, 4402, 4403, -1, -1, 2832, 5307, -1, - -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, - -1, -1, -1, 4422, 1576, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1591, - -1, -1, -1, -1, -1, -1, -1, -1, 1600, -1, - -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, - 1612, 5026, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2898, 2476, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2923, -1, - 3075, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1667, -1, -1, -1, -1, - -1, -1, 2097, -1, -1, -1, 2101, 2102, 3103, 1681, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1693, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3126, -1, 1705, -1, -1, -1, -1, -1, 3134, - -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2587, -1, -1, 2163, -1, - -1, -1, -1, 1745, 1746, -1, -1, -1, -1, -1, - 2175, -1, 2604, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2617, -1, -1, -1, -1, - -1, 4620, -1, -1, -1, -1, -1, -1, 3203, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2215, -1, -1, -1, -1, -1, 3221, -1, -1, 4648, - 3075, -1, -1, -1, -1, -1, -1, -1, -1, 3234, - -1, -1, -1, -1, 4663, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3103, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3126, -1, -1, -1, -1, -1, -1, -1, 3134, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4722, -1, -1, -1, 1879, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3330, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3351, -1, 3203, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1, - -1, 3376, -1, -1, -1, -1, -1, -1, -1, 3234, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2394, - 2822, -1, -1, 2825, -1, 2827, -1, -1, -1, -1, - 2832, -1, -1, -1, -1, 3410, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4873, -1, -1, -1, -1, 2881, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2898, -1, -1, -1, - 4899, 2476, -1, -1, -1, 3330, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1268, -1, -1, - -1, 2923, -1, -1, -1, -1, 3351, -1, -1, -1, - -1, 3506, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2097, -1, -1, -1, 2101, - 2102, 3376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1331, -1, 4981, -1, -1, 3410, -1, -1, -1, -1, - 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2163, 2587, -1, -1, 5014, 5015, -1, -1, -1, - -1, -1, -1, 2175, -1, -1, -1, -1, -1, 2604, - 3605, -1, -1, 5032, -1, -1, -1, -1, -1, -1, - -1, -1, 2617, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3629, -1, -1, -1, -1, -1, - -1, -1, -1, 2215, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3075, -1, -1, -1, -1, -1, -1, - -1, 3506, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5110, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3126, -1, -1, -1, 5127, -1, - -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 5153, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3754, - 3605, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3203, -1, -1, 3629, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3221, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3804, - -1, -1, 3234, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2394, -1, -1, -1, -1, 2822, -1, -1, - 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, - -1, 5260, -1, -1, -1, -1, -1, 5266, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2898, 2476, -1, -1, -1, 3330, 3754, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2923, 3351, - -1, 3926, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3936, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3376, -1, -1, -1, -1, 3804, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3410, -1, - -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2587, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2604, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2617, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1835, -1, 4061, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1849, -1, - 3075, 3926, 1853, -1, 3506, -1, -1, -1, -1, -1, - -1, 3936, -1, -1, -1, -1, 1867, 1868, 1869, -1, - 1871, -1, -1, -1, 4099, -1, -1, -1, 3103, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, - -1, 3126, -1, -1, -1, -1, -1, -1, -1, 3134, - -1, -1, 1913, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1950, - -1, -1, -1, 3605, -1, -1, -1, -1, -1, -1, - 4185, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3629, 3203, -1, - -1, -1, -1, -1, -1, -1, 4061, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3234, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2822, -1, -1, 2825, 4099, 2827, -1, -1, -1, -1, - 2832, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, - -1, -1, -1, 2054, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2066, -1, -1, 2069, -1, - -1, 4296, -1, -1, -1, -1, -1, -1, -1, 2881, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2898, -1, -1, -1, - -1, -1, 3754, -1, -1, 3330, -1, -1, -1, -1, - 4185, -1, -1, 4338, -1, -1, -1, -1, -1, -1, - -1, 2923, -1, -1, -1, -1, 3351, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3376, 3804, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3410, -1, -1, -1, -1, - 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4296, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4471, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4338, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3075, 3926, -1, -1, -1, -1, -1, - -1, 3506, -1, -1, 3936, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3126, -1, -1, -1, -1, -1, - -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4593, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3605, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4618, -1, -1, 4471, -1, -1, -1, - -1, 3203, -1, -1, 3629, -1, -1, -1, -1, 4061, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3221, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3234, 4658, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4099, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4712, -1, -1, - -1, -1, 4717, 4718, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4593, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3330, 3754, - -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4618, -1, -1, -1, -1, -1, 3351, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3376, -1, -1, -1, -1, 3804, - -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4827, -1, -1, -1, -1, -1, 3410, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2631, -1, -1, -1, -1, -1, -1, 4712, -1, -1, - -1, -1, 4717, 4718, 4296, -1, -1, -1, -1, -1, - 2651, -1, 2653, -1, -1, 2656, 2657, -1, 2659, -1, - 2661, -1, -1, -1, 2665, -1, -1, 2668, -1, -1, - -1, -1, 2673, -1, -1, -1, -1, -1, 2679, -1, - -1, -1, -1, 2684, -1, -1, 4338, -1, -1, -1, - 2691, 2692, 2693, 2694, -1, -1, -1, 2698, 2699, -1, - 2701, 3926, -1, -1, 3506, -1, -1, -1, -1, -1, - -1, 3936, 2713, -1, 2715, -1, -1, -1, -1, -1, - -1, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, - 2731, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4827, -1, -1, -1, -1, -1, 2759, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2779, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5026, -1, 3605, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4471, - -1, -1, -1, -1, -1, -1, -1, 3629, -1, -1, - -1, -1, -1, -1, -1, -1, 4061, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2868, -1, -1, - -1, -1, -1, -1, 4099, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5026, 3754, -1, -1, -1, -1, -1, -1, -1, - 4185, -1, -1, -1, -1, -1, 4618, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3804, -1, -1, -1, 4658, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, -1, - -1, 4296, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4338, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3926, -1, -1, -1, 3129, -1, - -1, -1, -1, -1, 3936, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4827, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4471, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4061, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4099, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, - -1, -1, -1, -1, -1, 3326, -1, -1, -1, -1, - -1, 3332, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3348, 3349, -1, - -1, 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, 3360, - 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 4593, -1, - -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, - -1, -1, -1, 4185, -1, -1, -1, -1, -1, 3390, - -1, -1, 3393, 4618, 3395, -1, -1, 3398, 3399, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3413, 3414, 3415, 3416, -1, 3418, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3468, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3478, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4712, -1, -1, - -1, -1, 4717, 4718, 4296, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3515, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4338, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4827, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4471, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3725, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5026, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4618, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4658, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3873, -1, -1, -1, 3877, 3878, 3879, -1, - -1, -1, -1, -1, 3885, 3886, 3887, 3888, -1, -1, - -1, -1, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, - 3901, 3902, 3903, 3904, -1, -1, -1, -1, -1, -1, - 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3929, -1, - -1, 3932, -1, 3934, -1, -1, -1, 3938, -1, -1, - 3941, 3942, -1, -1, 3945, 3946, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3993, -1, -1, -1, -1, -1, -1, 4000, - 4001, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4016, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4827, -1, -1, 4029, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4212, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4291, 4292, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4328, -1, -1, - -1, -1, 4333, 4334, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4348, -1, 4350, - -1, -1, -1, 4354, 4355, 4356, -1, -1, 4359, -1, - -1, 4362, 4363, -1, -1, -1, 4367, -1, -1, -1, - 4371, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4431, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4492, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4528, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4616, 4617, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4632, 4633, 4634, -1, -1, -1, -1, -1, -1, - -1, 4642, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4670, - 4671, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4683, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4839, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4853, -1, -1, 4856, -1, -1, -1, 4860, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4910, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5020, - -1, 5022, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5052, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 5104, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5130, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5189, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5218, 5219, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5230, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, 5262, 5263, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, 5288, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, 460, -1, - -1, -1, -1, -1, -1, 467, 468, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, -1, 290, 291, 292, 293, 294, 295, - 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - -1, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, - 386, 387, -1, -1, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, - 406, 407, 408, 409, 410, -1, 412, 413, 414, 415, - 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, - -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, -1, 453, -1, -1, - -1, -1, 458, 459, -1, -1, -1, -1, -1, -1, - -1, 467, 468, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, -1, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, 72, -1, 74, 75, 76, 77, 78, 79, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, 161, -1, 163, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, -1, 217, 218, 219, - 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, - 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, -1, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, 378, 379, - 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, - 410, -1, 412, 413, 414, 415, 416, 417, 418, -1, - 420, 421, 422, 423, 424, 425, -1, -1, 428, -1, - -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, -1, -1, -1, -1, -1, -1, 458, 459, - -1, -1, -1, -1, -1, -1, -1, 467, 468, 3, - 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, 72, -1, - 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, 161, -1, 163, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - 194, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, -1, 217, 218, 219, 220, 221, -1, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, - 294, 295, 296, 297, -1, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, -1, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, -1, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - -1, 375, 376, -1, 378, 379, 380, 381, 382, 383, - 384, -1, 386, 387, -1, -1, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, - 404, 405, 406, 407, 408, 409, 410, -1, 412, 413, - 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, - 424, 425, -1, -1, 428, -1, -1, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, -1, -1, - -1, -1, -1, -1, 458, 459, -1, -1, -1, -1, - -1, -1, -1, 467, 468, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, 72, -1, 74, 75, 76, 77, - 78, 79, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, 161, -1, 163, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, -1, 217, - 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, - -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, -1, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, -1, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, - -1, -1, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, - 408, 409, 410, -1, 412, 413, 414, 415, 416, 417, - 418, -1, 420, 421, 422, 423, 424, 425, -1, -1, - 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, -1, -1, 3, -1, -1, -1, - 458, 459, -1, -1, -1, -1, -1, -1, -1, 467, - 468, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, 35, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, -1, -1, -1, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 468, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, -1, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, - -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, -1, -1, -1, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, -1, 219, 220, 221, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, -1, -1, 252, 253, 254, 255, - -1, -1, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, -1, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, -1, 290, 291, -1, 293, -1, 295, - 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - -1, 327, 328, 329, 330, 331, 332, -1, 334, 335, - 336, 337, 338, 339, 340, 341, 342, -1, 344, 345, - 346, 347, 348, -1, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, -1, 375, - 376, -1, 378, 379, 380, 381, 382, 383, 384, -1, - 386, 387, -1, -1, 390, 391, -1, 393, -1, -1, - 396, 397, 398, 399, 400, 401, 402, -1, -1, 405, - 406, 407, 408, 409, -1, -1, 412, 413, 414, 415, - 416, -1, 418, 419, 420, 421, 422, 423, 424, 425, - -1, -1, 428, -1, -1, 431, 432, 433, 434, 435, - 436, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 448, 449, 450, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 468, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, -1, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, -1, -1, - -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, -1, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, -1, -1, - 252, 253, 254, 255, -1, -1, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, -1, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - -1, 293, -1, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, -1, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - -1, 393, -1, -1, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, - 412, 413, 414, 415, 416, -1, 418, 419, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, -1, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, 448, 449, 450, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, 468, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, -1, 453, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - 162, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, 465, 466, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, 460, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - 162, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, -1, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, -1, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, -1, -1, -1, -1, -1, -1, - -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, - 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, - 3, 4, 5, 6, 7, 467, 9, 10, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, - 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, - -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, - 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, - -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, -1, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, -1, -1, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, -1, 255, 256, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - -1, 404, 405, 406, 407, 408, 409, 410, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, - 3, -1, -1, -1, -1, 458, 459, -1, -1, -1, - -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, 267, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, - 453, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 467, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, 267, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - -1, 3, 4, 5, -1, -1, -1, 9, -1, -1, - -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, 266, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - -1, 3, -1, -1, -1, -1, 458, 459, 460, -1, - -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, -1, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, 425, -1, -1, 428, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - -1, 453, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 467, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, 377, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, 453, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, - 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, - 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, - -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, - 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, - 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, - 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, - -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, - 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, - -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, - 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, - 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, - -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, - 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, - 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, - 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, - -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, - 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, - -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, - 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, - 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, - -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, - 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, - 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, - 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, - -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, - 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, - -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, - 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, - 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, - -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, - 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, - 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, - 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, - -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, - 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, - -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, -1, -1, -1, -1, -1, 3, 4, 5, -1, - -1, 8, 9, -1, -1, -1, -1, 467, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, -1, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, -1, 146, - 147, 148, -1, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, -1, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, -1, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - -1, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, - 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, -1, 293, -1, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, -1, 393, -1, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 448, 449, 450, -1, -1, -1, 454, 455, 456, - -1, 458, 459, 460, 461, 462, 463, 3, 4, 5, - -1, -1, 8, 9, -1, -1, -1, -1, -1, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, -1, - 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, -1, 171, -1, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, -1, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, -1, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, - 276, 277, -1, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, -1, 293, -1, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, -1, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, -1, 393, -1, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, -1, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 448, 449, 450, -1, 3, -1, 454, 455, - 456, 8, 458, 459, 460, 461, 462, 463, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, -1, 3, -1, 454, 455, 456, - 8, 458, 459, 460, 461, 462, 463, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, - -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, -1, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, -1, 327, - 328, -1, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, -1, 344, 345, 346, 347, - 348, -1, 350, 351, 352, 353, 354, -1, 356, 357, - 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, - 378, -1, 380, 381, 382, 383, 384, -1, 386, 387, - -1, -1, 390, 391, 392, 393, 394, -1, 396, 397, - 398, 399, 400, 401, 402, -1, -1, 405, 406, 407, - 408, 409, -1, -1, 412, 413, 414, 415, 416, 417, - 418, -1, 420, -1, 422, 423, 424, 425, -1, -1, - 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, -1, 3, -1, 454, 455, 456, 8, - 458, 459, 460, 461, 462, 463, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, -1, 3, -1, 454, 455, 456, 8, 458, - 459, 460, 461, 462, 463, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, - 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, - 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, - -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, - 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, - 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, - 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, - -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, - 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, - -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, -1, 3, -1, 454, 455, 456, 8, 458, 459, - 460, 461, 462, 463, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, 3, -1, 454, 455, 456, 8, 458, 459, 460, - 461, 462, 463, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, - 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, 327, 328, -1, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, - 352, 353, 354, -1, 356, 357, 358, 359, -1, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, -1, 375, 376, -1, 378, -1, 380, 381, - 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, - 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, - 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, - 412, 413, 414, 415, 416, 417, 418, -1, 420, -1, - 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, - 3, -1, 454, 455, 456, 8, 458, 459, 460, 461, - 462, 463, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, 454, 455, 456, -1, 458, 459, 460, 461, 462, - 463, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, 460, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, 460, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, 460, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, - -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, - -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, 272, 273, 274, 275, 276, 277, -1, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, -1, 418, 419, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, - -1, 18, 19, 20, 21, 22, 23, 24, 25, 460, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, - 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, - -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, 272, 273, 274, 275, 276, - 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, -1, 393, -1, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - -1, 418, 419, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 3, 4, 5, -1, -1, -1, 9, -1, -1, -1, - -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 460, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, 266, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, 4, - 5, -1, -1, -1, 9, 458, 459, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, 266, -1, 268, 269, 270, -1, -1, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, 4, 5, -1, - -1, -1, 9, 458, 459, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, 266, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, 5, -1, -1, -1, - 9, 458, 459, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, 266, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, 9, 458, - 459, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, 162, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, 4, 5, -1, -1, -1, 9, 458, 459, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, 410, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, 266, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, 171, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, 30, 31, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, -1, -1, 73, 74, - 75, 76, 77, 78, -1, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, 159, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, 404, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, 159, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, 90, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, 168, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, 90, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, 168, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, 159, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, 404, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, 90, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, 159, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - 377, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, 90, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, 30, 31, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, 410, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - 267, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, 377, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, 35, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, 35, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, 35, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, -1, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, - 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, - -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, - -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, - -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, - 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, - 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, -1, -1, 252, 253, 254, - 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, - 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, -1, 418, 419, 420, 421, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, - 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, - 331, 332, 333, -1, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, - -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, -1, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, -1, -1, -1, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, -1, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, -1, -1, 252, - 253, 254, 255, 256, -1, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, -1, 275, 276, 277, -1, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, - 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, -1, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, -1, - 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, -1, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 448, 449, 450, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, - -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, -1, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, -1, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, -1, 275, 276, 277, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, -1, 293, -1, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, -1, 375, 376, -1, 378, - 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, -1, 393, -1, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, -1, 418, - -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, - 449, 450, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - -1, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, - 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, -1, - 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, - 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, - 151, -1, 153, 154, 155, 156, 157, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, - -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, -1, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, - -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, -1, 275, 276, 277, -1, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, -1, 418, -1, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, - 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, -1, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, - -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, -1, 275, 276, - 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, - 387, -1, -1, 390, 391, -1, 393, -1, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - -1, 418, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, -1, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, -1, -1, -1, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, -1, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, -1, -1, 252, - 253, 254, 255, -1, -1, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, -1, 275, 276, 277, -1, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, - 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, -1, 375, 376, -1, 378, 379, 380, 381, 382, - 383, 384, -1, 386, 387, -1, -1, 390, 391, -1, - 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, -1, 418, -1, 420, 421, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 448, 449, 450, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, - -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, -1, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, -1, -1, 252, 253, 254, 255, -1, -1, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, -1, 275, 276, 277, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - -1, 290, 291, -1, 293, -1, 295, 296, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, - 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, - 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, - -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, -1, 375, 376, -1, 378, - 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, - -1, 390, 391, -1, 393, -1, -1, 396, 397, 398, - 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, - 409, -1, -1, 412, 413, 414, 415, 416, -1, 418, - -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, - -1, -1, 431, 432, 433, 434, 435, 436, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, - 449, 450, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - -1, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, -1, -1, 252, 253, 254, - 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, -1, - 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, - 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, - 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, - 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, - 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, - -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, - -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, - 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, - 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, - 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, - 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, - -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, -1, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, - -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, -1, 275, 276, 277, -1, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, - 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, - 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, - 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, - 351, -1, 353, 354, 355, 356, 357, 358, 359, -1, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, - 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, - 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, - 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, - -1, 412, 413, 414, 415, 416, -1, 418, -1, 420, - 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, - 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - -1, -1, 49, -1, -1, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, -1, -1, 64, -1, 66, - 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, -1, -1, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, - 147, 148, -1, -1, 151, -1, 153, 154, -1, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, -1, 196, - 197, 198, 199, -1, -1, -1, -1, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, -1, 245, -1, - 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, - -1, 258, -1, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, -1, 275, 276, - 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, -1, 309, 310, 311, 312, -1, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, - 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, - 347, 348, -1, 350, 351, -1, 353, 354, 355, 356, - 357, -1, 359, -1, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, - -1, 378, 379, 380, 381, 382, 383, 384, -1, -1, - -1, -1, -1, 390, 391, -1, 393, -1, -1, 396, - 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, - 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, - -1, -1, -1, 420, 421, 422, 423, 424, 425, -1, - -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, -1, -1, -1, -1, -1, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, -1, - -1, 64, -1, 66, 67, 68, 69, -1, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, -1, -1, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, - 153, 154, -1, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, -1, -1, -1, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, -1, 196, 197, 198, 199, -1, -1, -1, - -1, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, -1, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, -1, -1, -1, 247, 248, 249, -1, -1, 252, - 253, -1, 255, -1, -1, 258, -1, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, -1, -1, 276, -1, -1, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, - 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, - 303, 304, 305, 306, 307, -1, 309, 310, 311, 312, - -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, - -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, - -1, 344, 345, 346, 347, 348, -1, 350, 351, -1, - 353, 354, -1, 356, 357, -1, 359, -1, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, -1, 375, 376, -1, 378, -1, 380, 381, 382, - 383, 384, -1, -1, -1, -1, -1, 390, 391, -1, - 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, - -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, - 413, 414, 415, 416, -1, -1, -1, 420, -1, 422, - 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, - 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 448, 449, 450 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 18, 28, 30, 31, 46, 66, 68, 69, 75, - 77, 88, 90, 107, 110, 124, 126, 130, 136, 144, - 146, 152, 168, 184, 223, 224, 229, 241, 253, 288, - 296, 309, 315, 316, 318, 323, 328, 331, 336, 342, - 343, 350, 354, 364, 377, 396, 406, 412, 417, 430, - 453, 467, 474, 475, 476, 477, 483, 484, 486, 487, - 488, 489, 491, 495, 507, 512, 513, 516, 517, 518, - 538, 541, 542, 558, 601, 602, 605, 608, 609, 610, - 618, 624, 626, 628, 629, 632, 635, 636, 640, 649, - 653, 654, 655, 656, 659, 661, 662, 663, 664, 672, - 673, 692, 696, 698, 699, 700, 710, 712, 719, 720, - 723, 724, 725, 726, 727, 735, 737, 741, 746, 750, - 751, 759, 760, 763, 768, 779, 806, 809, 810, 811, - 816, 819, 821, 823, 825, 826, 831, 832, 835, 836, - 837, 841, 842, 845, 846, 849, 850, 851, 858, 860, - 861, 862, 867, 869, 870, 876, 877, 878, 879, 880, - 881, 882, 884, 885, 887, 888, 890, 893, 894, 899, - 905, 908, 910, 911, 920, 922, 927, 932, 936, 937, - 938, 939, 940, 941, 944, 979, 390, 433, 863, 25, - 72, 87, 105, 111, 128, 139, 147, 159, 164, 171, - 188, 213, 234, 268, 291, 301, 304, 330, 335, 337, - 344, 347, 366, 372, 376, 377, 380, 384, 393, 398, - 410, 423, 625, 863, 3, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 37, 38, 40, - 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, - 54, 55, 56, 57, 60, 61, 62, 63, 64, 66, - 67, 68, 69, 70, 74, 75, 76, 77, 78, 80, - 81, 82, 84, 85, 86, 87, 88, 89, 92, 93, - 94, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 112, 114, 115, 116, 117, 118, 119, 121, 122, 123, - 124, 127, 128, 129, 130, 131, 133, 134, 135, 137, - 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 151, 153, 154, 155, 156, 158, 160, 164, 165, - 166, 167, 169, 170, 172, 173, 175, 176, 177, 178, - 179, 181, 182, 183, 184, 186, 187, 188, 189, 190, - 191, 193, 195, 196, 197, 198, 199, 200, 201, 203, - 205, 208, 210, 211, 212, 213, 214, 217, 218, 220, - 223, 224, 225, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 246, 247, 248, 249, 250, 252, 253, 255, 257, 258, - 259, 260, 261, 262, 264, 265, 268, 269, 270, 273, - 274, 276, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 290, 291, 292, 293, 294, 295, 296, 297, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 327, 328, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 344, 345, 346, 347, 348, 350, 351, 352, 353, - 354, 356, 357, 358, 359, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 375, 376, - 378, 380, 381, 382, 383, 384, 386, 387, 390, 391, - 392, 393, 394, 396, 397, 398, 399, 400, 401, 402, - 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, - 417, 418, 420, 422, 423, 424, 425, 428, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 933, 1104, - 1118, 1122, 1123, 421, 895, 266, 297, 863, 49, 467, - 549, 20, 25, 37, 59, 72, 83, 105, 111, 128, - 139, 147, 159, 167, 171, 225, 268, 271, 291, 304, - 330, 337, 347, 366, 372, 380, 381, 383, 384, 393, - 398, 404, 407, 410, 559, 607, 715, 769, 780, 26, - 296, 1104, 933, 26, 290, 345, 381, 383, 5, 212, - 817, 818, 1113, 20, 25, 37, 59, 72, 87, 105, - 128, 139, 147, 159, 164, 171, 188, 234, 268, 280, - 291, 304, 330, 335, 337, 344, 347, 366, 372, 377, - 380, 384, 391, 393, 398, 410, 423, 625, 728, 729, - 730, 863, 1104, 90, 421, 467, 602, 605, 608, 894, - 900, 908, 911, 920, 927, 932, 936, 9, 19, 26, - 44, 154, 160, 162, 185, 214, 248, 299, 317, 458, - 459, 747, 748, 933, 1112, 1114, 26, 90, 313, 343, - 752, 753, 754, 1118, 159, 1118, 1109, 1113, 377, 947, - 747, 1118, 323, 350, 354, 390, 1104, 280, 234, 105, - 188, 337, 376, 377, 467, 827, 828, 336, 1118, 26, - 348, 386, 390, 499, 508, 509, 1118, 23, 168, 752, - 753, 297, 863, 1118, 211, 26, 125, 949, 950, 60, - 84, 225, 243, 330, 337, 348, 386, 390, 436, 496, - 497, 498, 499, 26, 348, 386, 390, 499, 390, 267, - 990, 1102, 1118, 947, 460, 1118, 163, 467, 896, 467, - 311, 942, 943, 1104, 942, 937, 938, 941, 0, 470, - 895, 140, 202, 272, 403, 951, 952, 937, 939, 940, - 116, 198, 409, 471, 3, 43, 49, 72, 79, 91, - 98, 161, 163, 180, 194, 206, 207, 209, 219, 221, - 245, 254, 275, 277, 329, 355, 379, 421, 796, 1110, - 1118, 1119, 1122, 1124, 732, 1118, 732, 1105, 1118, 300, - 732, 393, 1104, 104, 377, 784, 1110, 1118, 1124, 3, - 101, 349, 1115, 1116, 1120, 1122, 1123, 1124, 26, 179, - 1102, 260, 423, 8, 15, 16, 17, 67, 151, 454, - 455, 456, 458, 459, 460, 461, 462, 463, 813, 815, - 1066, 1067, 1118, 179, 1104, 1104, 26, 1115, 1116, 1104, - 1104, 179, 1102, 1104, 732, 1104, 323, 350, 26, 179, - 990, 1104, 340, 1104, 732, 26, 232, 1115, 1116, 179, - 1102, 212, 113, 208, 251, 307, 864, 865, 866, 1102, - 1108, 1118, 20, 25, 59, 72, 73, 83, 87, 105, - 128, 139, 147, 159, 164, 188, 213, 234, 268, 291, - 304, 330, 335, 337, 344, 347, 366, 372, 377, 380, - 384, 391, 393, 398, 423, 625, 738, 739, 1113, 907, - 911, 920, 927, 936, 1102, 236, 1110, 1104, 467, 179, - 732, 393, 1105, 732, 393, 179, 1104, 104, 377, 381, - 383, 1115, 1116, 381, 383, 67, 151, 813, 321, 1104, - 1104, 1115, 179, 492, 1118, 179, 1104, 179, 732, 1104, - 1104, 340, 1104, 732, 232, 1115, 311, 344, 377, 423, - 234, 87, 188, 164, 335, 391, 397, 619, 26, 1104, - 934, 506, 1113, 1120, 818, 236, 179, 796, 797, 1104, - 179, 822, 179, 1105, 3, 48, 50, 51, 62, 63, - 108, 109, 129, 155, 179, 200, 201, 203, 244, 246, - 259, 308, 352, 358, 386, 387, 418, 734, 1012, 1014, - 1016, 1018, 1020, 1022, 1023, 1024, 1026, 1027, 1028, 1030, - 1031, 1119, 1122, 393, 104, 377, 179, 783, 784, 179, - 1116, 1117, 79, 423, 67, 151, 179, 814, 815, 53, - 179, 1117, 179, 1104, 179, 1104, 340, 822, 179, 734, - 179, 232, 1117, 212, 179, 731, 732, 179, 1103, 1104, - 179, 1104, 467, 909, 559, 900, 417, 894, 901, 902, - 903, 1120, 895, 1114, 748, 749, 26, 749, 1114, 749, - 26, 749, 1114, 749, 749, 749, 1114, 1112, 1112, 933, - 749, 300, 467, 467, 579, 579, 579, 266, 388, 471, - 579, 337, 990, 991, 471, 859, 509, 497, 499, 26, - 499, 1113, 467, 906, 53, 423, 421, 829, 830, 1102, - 1104, 1118, 43, 450, 208, 469, 269, 269, 266, 162, - 1113, 388, 157, 742, 266, 4, 6, 7, 8, 10, - 34, 48, 50, 51, 58, 59, 62, 63, 70, 72, - 95, 96, 97, 98, 99, 100, 101, 108, 109, 111, - 145, 149, 150, 155, 170, 172, 200, 201, 203, 218, - 226, 227, 244, 246, 251, 256, 257, 259, 268, 278, - 292, 308, 333, 349, 358, 373, 386, 387, 392, 394, - 395, 404, 410, 418, 438, 439, 440, 441, 443, 444, - 445, 446, 451, 458, 459, 460, 467, 937, 1015, 1018, - 1021, 1022, 1023, 1025, 1026, 1027, 1030, 1031, 1035, 1037, - 1038, 1039, 1041, 1062, 1063, 1064, 1068, 1087, 1092, 1099, - 1100, 1110, 1111, 1112, 1113, 1118, 1098, 1099, 1113, 26, - 514, 1101, 1102, 348, 496, 111, 505, 1113, 506, 1113, - 43, 64, 496, 450, 359, 865, 269, 162, 388, 456, - 43, 450, 208, 866, 467, 1102, 460, 465, 469, 1093, - 1095, 991, 3, 161, 163, 421, 891, 892, 894, 161, - 897, 1035, 1071, 942, 471, 467, 898, 468, 468, 476, - 1102, 26, 125, 948, 948, 53, 948, 152, 157, 222, - 263, 955, 957, 958, 973, 975, 976, 977, 951, 952, - 162, 204, 990, 992, 467, 281, 319, 350, 467, 794, - 1095, 281, 315, 319, 350, 469, 733, 281, 319, 350, - 3, 82, 134, 228, 281, 288, 319, 350, 380, 382, - 430, 507, 510, 871, 872, 873, 874, 764, 22, 130, - 281, 319, 350, 414, 522, 1104, 22, 130, 350, 409, - 490, 434, 179, 990, 55, 89, 119, 148, 182, 217, - 251, 281, 282, 319, 327, 334, 342, 350, 362, 370, - 425, 507, 511, 799, 807, 467, 781, 1095, 319, 490, - 185, 145, 22, 28, 69, 119, 123, 130, 133, 158, - 190, 249, 251, 261, 270, 281, 319, 322, 323, 350, - 414, 519, 521, 643, 4, 458, 459, 616, 1114, 26, - 179, 1102, 732, 732, 467, 812, 281, 350, 469, 145, - 266, 22, 130, 281, 319, 350, 185, 485, 319, 430, - 453, 478, 485, 266, 281, 319, 145, 35, 54, 103, - 187, 235, 238, 249, 280, 319, 324, 344, 350, 364, - 519, 613, 614, 281, 319, 422, 643, 651, 281, 319, - 350, 82, 123, 133, 281, 315, 319, 350, 509, 497, - 185, 145, 41, 121, 319, 350, 519, 520, 281, 319, - 323, 350, 80, 122, 283, 382, 266, 22, 28, 130, - 281, 319, 350, 539, 540, 485, 157, 319, 478, 485, - 145, 319, 350, 519, 1104, 220, 113, 267, 435, 471, - 864, 411, 889, 266, 236, 796, 467, 1104, 1012, 393, - 104, 377, 784, 260, 423, 67, 151, 815, 1104, 1104, - 340, 157, 1104, 1012, 212, 732, 1104, 468, 579, 1104, - 467, 705, 794, 65, 1012, 251, 162, 467, 701, 1104, - 478, 35, 883, 1104, 251, 478, 434, 179, 1102, 478, - 732, 732, 701, 407, 559, 266, 157, 843, 844, 478, - 251, 43, 493, 251, 398, 650, 251, 898, 82, 281, - 627, 80, 122, 283, 382, 24, 45, 199, 674, 35, - 701, 157, 179, 478, 423, 179, 1102, 179, 603, 1102, - 1102, 423, 732, 79, 770, 1110, 1104, 157, 625, 49, - 102, 197, 249, 339, 145, 56, 325, 471, 523, 523, - 145, 467, 145, 420, 1029, 1029, 1029, 467, 1017, 1017, - 294, 467, 1019, 145, 62, 63, 1029, 1017, 1014, 432, - 453, 467, 1032, 467, 1032, 471, 523, 34, 1013, 467, - 106, 177, 237, 240, 341, 448, 467, 1033, 1034, 733, - 1017, 434, 145, 471, 523, 145, 471, 179, 731, 179, - 732, 179, 732, 145, 471, 523, 1117, 145, 145, 523, - 145, 80, 122, 283, 382, 157, 145, 523, 145, 157, - 179, 179, 506, 145, 471, 523, 145, 471, 523, 145, - 266, 1071, 377, 468, 471, 150, 266, 395, 503, 506, - 616, 904, 900, 749, 933, 749, 933, 749, 933, 749, - 933, 749, 933, 933, 933, 749, 933, 467, 580, 581, - 1118, 580, 26, 105, 128, 159, 164, 212, 213, 337, - 344, 377, 380, 398, 755, 1101, 1117, 754, 1104, 185, - 471, 923, 1113, 1012, 1074, 35, 1117, 770, 468, 471, - 220, 1118, 157, 157, 755, 1117, 336, 1118, 506, 266, - 467, 1096, 465, 937, 1075, 1035, 1091, 467, 467, 157, - 467, 467, 937, 467, 467, 467, 467, 467, 467, 1035, - 467, 467, 467, 467, 467, 467, 467, 467, 937, 467, - 467, 467, 467, 467, 467, 467, 467, 1035, 1035, 1035, - 937, 1035, 1071, 1095, 1113, 467, 1113, 3, 8, 11, - 15, 16, 17, 32, 35, 40, 47, 71, 180, 185, - 206, 207, 221, 254, 268, 271, 355, 451, 454, 455, - 456, 458, 459, 460, 461, 462, 463, 1066, 1068, 1070, - 431, 1050, 277, 1035, 204, 471, 945, 467, 1113, 1095, - 945, 114, 181, 515, 471, 64, 111, 506, 35, 3, - 111, 225, 504, 616, 1031, 1113, 1113, 85, 127, 1047, - 94, 111, 500, 501, 503, 616, 111, 500, 220, 1102, - 1035, 1094, 3, 26, 30, 31, 32, 33, 34, 35, - 36, 39, 52, 58, 59, 65, 71, 73, 83, 90, - 95, 96, 97, 99, 100, 101, 111, 113, 120, 125, - 126, 132, 136, 140, 150, 152, 157, 159, 162, 168, - 171, 174, 185, 192, 202, 204, 215, 216, 222, 226, - 227, 251, 256, 263, 266, 267, 271, 272, 289, 298, - 313, 326, 343, 349, 360, 374, 377, 385, 388, 389, - 395, 403, 404, 410, 411, 419, 426, 427, 429, 430, - 460, 1107, 1121, 1122, 1123, 1124, 1125, 1093, 86, 324, - 736, 468, 471, 895, 468, 471, 943, 1103, 35, 898, - 939, 939, 953, 954, 1035, 939, 154, 248, 964, 210, - 249, 307, 353, 409, 26, 959, 1035, 960, 962, 1035, - 1037, 973, 974, 958, 957, 955, 956, 157, 976, 261, - 978, 955, 973, 992, 912, 1102, 35, 1118, 350, 1071, - 388, 388, 337, 185, 195, 272, 274, 352, 419, 460, - 787, 788, 789, 791, 793, 795, 1012, 1119, 388, 422, - 388, 337, 1107, 469, 388, 388, 337, 222, 388, 388, - 380, 496, 281, 871, 873, 456, 875, 157, 168, 185, - 328, 765, 766, 65, 83, 141, 159, 298, 404, 576, - 577, 83, 111, 251, 388, 83, 388, 111, 251, 337, - 83, 123, 133, 281, 319, 697, 337, 633, 20, 25, - 59, 72, 87, 128, 139, 159, 164, 234, 268, 337, - 344, 347, 377, 384, 391, 398, 423, 625, 1104, 145, - 319, 350, 519, 266, 616, 266, 342, 217, 388, 1118, - 388, 256, 616, 115, 205, 337, 348, 390, 498, 325, - 350, 799, 808, 468, 782, 787, 388, 410, 380, 1102, - 73, 141, 179, 566, 576, 1118, 73, 83, 833, 266, - 266, 333, 335, 393, 83, 833, 29, 322, 333, 335, - 393, 333, 1102, 158, 190, 261, 732, 467, 388, 388, - 178, 467, 527, 231, 380, 407, 430, 432, 527, 83, - 471, 4, 4, 281, 185, 145, 119, 319, 350, 519, - 411, 411, 250, 1012, 388, 337, 467, 813, 1104, 1102, - 377, 377, 388, 388, 377, 701, 105, 350, 510, 388, - 480, 510, 1102, 388, 388, 1102, 1014, 616, 53, 615, - 616, 616, 103, 235, 238, 53, 388, 478, 242, 337, - 478, 249, 614, 388, 388, 256, 1113, 643, 388, 388, - 337, 1113, 388, 304, 388, 304, 701, 380, 990, 285, - 285, 83, 388, 833, 337, 388, 388, 527, 527, 732, - 732, 732, 732, 1102, 42, 416, 42, 42, 388, 42, - 388, 416, 337, 471, 510, 410, 660, 1116, 388, 480, - 510, 1102, 388, 337, 281, 319, 307, 320, 346, 502, - 864, 1108, 1118, 1102, 206, 1012, 266, 206, 434, 206, - 616, 732, 732, 206, 266, 266, 80, 122, 283, 382, - 1012, 266, 206, 206, 206, 388, 430, 550, 398, 3, - 706, 707, 701, 467, 35, 145, 732, 702, 703, 1121, - 24, 871, 1012, 266, 145, 630, 1104, 251, 285, 467, - 479, 715, 411, 311, 423, 1102, 26, 377, 430, 803, - 479, 145, 1116, 90, 168, 494, 558, 609, 673, 750, - 768, 867, 145, 1113, 651, 652, 145, 266, 1113, 1116, - 228, 732, 732, 732, 732, 261, 116, 198, 396, 409, - 675, 676, 137, 306, 467, 660, 251, 479, 1102, 251, - 611, 613, 251, 35, 261, 285, 467, 579, 579, 179, - 606, 1102, 157, 179, 771, 1108, 467, 785, 35, 1012, - 212, 430, 432, 935, 339, 797, 796, 1012, 1105, 467, - 1071, 1112, 734, 1029, 1029, 34, 1013, 386, 386, 1112, - 1112, 1012, 465, 465, 1112, 388, 388, 388, 467, 388, - 1112, 1017, 783, 784, 1117, 1116, 145, 523, 145, 411, - 145, 411, 814, 815, 523, 1117, 1104, 1104, 1012, 734, - 1117, 660, 145, 145, 523, 731, 732, 1103, 1104, 1104, - 732, 468, 179, 1102, 900, 902, 933, 933, 933, 933, - 933, 933, 580, 468, 471, 468, 165, 345, 378, 1103, - 731, 104, 347, 783, 1103, 260, 1103, 1101, 1101, 1103, - 731, 388, 430, 761, 140, 222, 657, 658, 20, 143, - 333, 353, 924, 990, 255, 925, 468, 471, 907, 388, - 1102, 827, 828, 830, 753, 752, 753, 162, 169, 762, - 1118, 25, 73, 105, 128, 139, 159, 164, 213, 234, - 304, 330, 337, 344, 372, 377, 380, 398, 423, 625, - 743, 744, 1071, 1093, 466, 1071, 1075, 1076, 426, 1088, - 1089, 1035, 1071, 467, 1112, 1112, 3, 106, 177, 237, - 240, 341, 448, 1077, 1078, 1113, 1071, 1071, 1071, 1112, - 1112, 1035, 813, 1035, 1079, 333, 458, 459, 467, 1036, - 1037, 1068, 1081, 468, 1071, 1035, 1071, 1082, 1035, 52, - 162, 216, 389, 1035, 1071, 1085, 1071, 242, 1037, 1035, - 1045, 1046, 1047, 242, 1035, 1047, 468, 471, 1112, 1033, - 1012, 1035, 1035, 1035, 1035, 1121, 386, 39, 374, 1097, - 732, 1035, 467, 937, 1086, 125, 127, 150, 251, 256, - 261, 395, 405, 1035, 467, 1035, 388, 47, 180, 185, - 221, 355, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 26, 33, 360, 1065, 171, 153, 1051, 333, - 467, 1062, 167, 225, 377, 381, 383, 407, 946, 1102, - 1100, 162, 980, 26, 125, 419, 460, 468, 789, 1035, - 1072, 1073, 1119, 980, 1102, 390, 467, 1113, 471, 468, - 466, 472, 178, 178, 523, 1102, 892, 893, 1102, 1035, - 468, 467, 471, 36, 120, 411, 777, 467, 961, 1114, - 353, 210, 267, 471, 333, 334, 963, 1101, 255, 357, - 926, 974, 956, 411, 921, 111, 279, 467, 913, 936, - 35, 1118, 467, 928, 929, 930, 1118, 468, 1116, 1104, - 1104, 274, 53, 1119, 468, 789, 791, 788, 791, 1119, - 272, 468, 471, 733, 1116, 1104, 1104, 1107, 1116, 1104, - 1104, 1116, 1105, 1104, 111, 503, 1114, 330, 410, 752, - 337, 168, 752, 467, 1104, 411, 772, 210, 210, 411, - 467, 600, 179, 1104, 256, 1116, 1104, 1104, 1035, 256, - 1104, 1104, 29, 322, 388, 388, 1104, 388, 634, 236, - 796, 467, 732, 732, 1012, 393, 104, 377, 784, 423, - 67, 151, 815, 1104, 732, 1104, 732, 340, 157, 1012, - 732, 212, 173, 249, 281, 319, 415, 637, 638, 639, - 990, 388, 833, 337, 256, 147, 115, 205, 1116, 1104, - 266, 1104, 468, 471, 1115, 1117, 1104, 319, 519, 179, - 566, 251, 1012, 1104, 1118, 1104, 147, 220, 1104, 26, - 410, 1104, 179, 1104, 179, 1118, 335, 393, 335, 393, - 220, 1104, 26, 410, 1104, 220, 333, 1102, 22, 130, - 350, 644, 645, 646, 647, 1121, 1116, 1104, 111, 163, - 252, 411, 526, 529, 530, 1121, 1104, 264, 69, 264, - 1104, 521, 388, 380, 1102, 266, 388, 833, 337, 1106, - 1118, 1106, 471, 468, 471, 1116, 1104, 838, 839, 1121, - 266, 319, 388, 668, 991, 991, 1116, 1104, 991, 1105, - 1115, 3, 82, 135, 190, 287, 402, 410, 413, 481, - 319, 1116, 1104, 319, 350, 519, 613, 616, 732, 1104, - 616, 732, 1104, 616, 1116, 1104, 1116, 1104, 1104, 1116, - 803, 1104, 847, 848, 1121, 1104, 319, 350, 519, 520, - 1102, 1102, 1104, 1104, 1104, 1104, 1116, 1104, 22, 28, - 130, 281, 319, 350, 281, 319, 350, 701, 319, 350, - 319, 350, 119, 319, 1004, 1118, 179, 711, 1118, 179, - 1118, 1116, 1104, 1104, 1113, 1104, 22, 540, 347, 1115, - 319, 350, 519, 1104, 1104, 388, 388, 78, 401, 307, - 256, 740, 1113, 35, 128, 732, 740, 740, 206, 411, - 411, 740, 732, 732, 212, 732, 740, 740, 740, 303, - 544, 264, 162, 388, 543, 188, 456, 468, 471, 1035, - 1012, 732, 468, 471, 456, 675, 568, 1121, 1104, 56, - 162, 337, 422, 631, 638, 639, 145, 261, 221, 560, - 562, 564, 566, 573, 576, 23, 185, 330, 375, 481, - 482, 157, 1106, 423, 1102, 35, 669, 378, 991, 701, - 492, 1118, 493, 271, 559, 1104, 159, 732, 1071, 304, - 1113, 701, 701, 701, 701, 261, 266, 271, 467, 701, - 1002, 1003, 1004, 347, 145, 467, 145, 145, 144, 936, - 732, 261, 560, 1118, 430, 432, 596, 430, 528, 251, - 35, 579, 1113, 251, 266, 468, 786, 787, 792, 35, - 212, 327, 391, 429, 798, 799, 800, 266, 212, 506, - 176, 176, 157, 523, 35, 1071, 468, 468, 523, 465, - 450, 450, 468, 468, 1112, 466, 1112, 468, 177, 237, - 1034, 237, 1034, 1034, 1112, 240, 468, 523, 731, 732, - 1106, 732, 1106, 523, 523, 212, 523, 347, 157, 506, - 523, 523, 266, 523, 251, 468, 581, 185, 185, 185, - 434, 1103, 616, 617, 171, 756, 757, 1116, 23, 762, - 388, 467, 162, 143, 353, 143, 353, 333, 409, 239, - 1012, 1116, 430, 604, 1102, 1104, 162, 266, 756, 53, - 523, 796, 1012, 393, 377, 784, 260, 423, 1012, 212, - 732, 1104, 468, 466, 466, 471, 1035, 132, 1089, 1090, - 35, 468, 1035, 468, 468, 468, 162, 468, 468, 468, - 468, 468, 471, 468, 289, 1080, 468, 467, 1036, 1036, - 1071, 11, 15, 16, 17, 185, 206, 268, 454, 455, - 456, 458, 459, 460, 461, 462, 463, 1068, 1036, 468, - 468, 157, 162, 1083, 1084, 468, 35, 1085, 1071, 1085, - 1085, 162, 468, 468, 1121, 286, 1049, 35, 468, 471, - 1035, 1121, 471, 1035, 1096, 1035, 468, 450, 1036, 1036, - 138, 1071, 162, 125, 127, 150, 256, 261, 395, 405, - 467, 138, 813, 1035, 374, 1097, 1035, 1086, 1035, 388, - 467, 937, 467, 467, 276, 1055, 467, 1071, 381, 383, - 381, 383, 1102, 947, 947, 947, 215, 334, 447, 467, - 937, 981, 982, 983, 990, 995, 1005, 1038, 1040, 1041, - 1110, 1118, 427, 1000, 1072, 1072, 1073, 468, 13, 14, - 471, 951, 952, 1000, 865, 1112, 1033, 501, 1035, 1094, - 898, 907, 954, 268, 1066, 1069, 452, 778, 1035, 963, - 409, 960, 230, 981, 427, 1001, 417, 376, 410, 914, - 915, 916, 1118, 266, 917, 1118, 930, 931, 471, 980, - 456, 1096, 795, 733, 791, 791, 53, 793, 462, 1117, - 1117, 266, 1103, 269, 266, 1035, 577, 1106, 467, 467, - 467, 600, 188, 580, 690, 145, 523, 388, 1116, 1104, - 506, 1104, 1012, 1104, 434, 732, 732, 732, 732, 80, - 122, 283, 382, 1012, 1104, 620, 1104, 173, 415, 388, - 388, 620, 637, 643, 319, 350, 519, 1104, 1104, 1104, - 196, 1104, 256, 787, 280, 350, 388, 251, 145, 270, - 641, 690, 22, 130, 323, 324, 350, 522, 531, 532, - 643, 834, 1104, 342, 145, 523, 145, 523, 1104, 1104, - 1104, 1104, 342, 342, 220, 646, 647, 646, 468, 471, - 648, 1113, 188, 468, 471, 456, 469, 1116, 1104, 319, - 350, 519, 147, 1104, 1104, 1104, 281, 319, 350, 22, - 130, 281, 319, 350, 1012, 250, 1012, 468, 471, 456, - 1102, 388, 1117, 411, 665, 222, 287, 256, 1113, 287, - 1117, 408, 388, 388, 337, 471, 803, 280, 350, 83, - 388, 833, 337, 157, 533, 388, 388, 232, 232, 232, - 388, 388, 337, 388, 388, 337, 388, 337, 388, 337, - 266, 388, 523, 1012, 251, 1113, 350, 834, 145, 523, - 388, 388, 1104, 388, 337, 1116, 1104, 1012, 732, 206, - 740, 1106, 1106, 206, 206, 1104, 206, 367, 368, 545, - 1113, 544, 173, 250, 268, 458, 459, 616, 704, 791, - 1069, 1113, 1125, 3, 707, 468, 468, 162, 701, 703, - 704, 266, 65, 71, 83, 111, 113, 166, 192, 251, - 256, 298, 313, 404, 569, 570, 572, 144, 426, 478, - 506, 1104, 506, 641, 1102, 1102, 1102, 468, 471, 1117, - 171, 330, 1117, 1112, 398, 1102, 579, 3, 157, 670, - 43, 493, 321, 377, 650, 104, 898, 162, 847, 528, - 580, 1102, 676, 708, 709, 1113, 468, 471, 1104, 157, - 580, 1102, 603, 1102, 1104, 604, 467, 561, 1102, 468, - 264, 527, 264, 266, 597, 527, 35, 145, 936, 528, - 388, 145, 1102, 468, 471, 111, 456, 801, 1113, 506, - 377, 790, 791, 157, 802, 800, 803, 116, 198, 343, - 409, 856, 1104, 173, 936, 1012, 468, 1112, 1032, 1032, - 466, 466, 468, 523, 411, 523, 411, 523, 1104, 1104, - 660, 523, 732, 145, 337, 337, 337, 1103, 471, 1116, - 430, 471, 758, 269, 991, 347, 143, 143, 104, 249, - 1117, 755, 523, 1116, 206, 206, 206, 616, 206, 206, - 206, 1075, 385, 1035, 136, 1012, 468, 1035, 1035, 1035, - 1083, 468, 1071, 471, 1012, 1036, 1036, 1036, 1036, 125, - 127, 251, 261, 1036, 1036, 1036, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1035, 1035, 1084, 1083, 1012, 468, 468, - 468, 1071, 468, 471, 53, 1037, 468, 1121, 1046, 295, - 371, 1048, 468, 471, 422, 1042, 35, 468, 1113, 1035, - 32, 32, 1035, 468, 1035, 162, 467, 1074, 1035, 468, - 138, 1036, 1036, 138, 138, 1035, 1035, 952, 427, 467, - 1056, 1118, 468, 1071, 471, 947, 947, 947, 947, 1102, - 1102, 1102, 937, 995, 1005, 162, 467, 937, 982, 983, - 35, 984, 985, 1118, 471, 91, 163, 194, 209, 219, - 245, 329, 987, 985, 35, 984, 986, 1118, 985, 453, - 999, 467, 1095, 1035, 171, 965, 471, 951, 951, 951, - 1035, 1035, 419, 1073, 468, 965, 468, 466, 468, 467, - 778, 154, 214, 468, 267, 94, 1035, 326, 919, 416, - 468, 471, 1096, 81, 919, 468, 471, 929, 1001, 1035, - 468, 462, 795, 398, 165, 338, 345, 378, 399, 767, - 157, 767, 468, 467, 583, 584, 774, 1040, 1118, 580, - 580, 690, 1108, 468, 113, 192, 249, 251, 691, 1104, - 1104, 35, 1104, 411, 411, 732, 732, 732, 732, 212, - 733, 1116, 1104, 388, 833, 337, 388, 196, 53, 380, - 1104, 145, 566, 467, 568, 166, 178, 251, 527, 478, - 104, 166, 251, 366, 369, 527, 614, 350, 532, 398, - 1104, 1118, 342, 645, 1104, 530, 704, 1121, 280, 350, - 388, 833, 337, 1104, 388, 388, 388, 337, 164, 268, - 369, 713, 714, 164, 268, 721, 722, 388, 388, 337, - 468, 468, 468, 839, 250, 616, 791, 840, 1069, 1113, - 1125, 319, 1104, 467, 430, 666, 1114, 1113, 1113, 1113, - 1104, 1104, 1104, 848, 53, 380, 1104, 1104, 1104, 1104, - 417, 1104, 1104, 157, 157, 321, 157, 179, 1116, 1104, - 1104, 1116, 1104, 1104, 1104, 1104, 1104, 1104, 147, 1104, - 71, 524, 145, 24, 45, 398, 1118, 1104, 1113, 643, - 1104, 1104, 468, 206, 740, 206, 206, 740, 740, 206, - 740, 478, 545, 620, 690, 430, 432, 732, 1102, 467, - 732, 1104, 1036, 29, 53, 571, 114, 181, 113, 256, - 210, 1102, 803, 302, 693, 694, 1118, 630, 285, 467, - 561, 574, 191, 590, 564, 1117, 1117, 1012, 467, 528, - 26, 116, 198, 343, 409, 671, 388, 667, 1116, 179, - 1102, 652, 434, 266, 981, 803, 314, 677, 468, 471, - 1004, 641, 660, 468, 611, 35, 261, 285, 467, 909, - 563, 565, 567, 576, 1118, 285, 591, 592, 561, 590, - 77, 380, 598, 936, 606, 604, 598, 1113, 1108, 772, - 792, 1035, 1035, 471, 467, 798, 398, 471, 388, 467, - 620, 468, 466, 1106, 1106, 523, 347, 523, 1103, 1103, - 1103, 616, 168, 757, 468, 1104, 104, 762, 162, 256, - 745, 1113, 745, 745, 206, 745, 745, 745, 1035, 468, - 468, 1084, 468, 1035, 162, 125, 127, 261, 467, 468, - 437, 1044, 1071, 312, 53, 428, 428, 468, 1035, 249, - 1035, 471, 1043, 1014, 1035, 1035, 1035, 1074, 468, 1035, - 32, 32, 1035, 1035, 138, 468, 468, 1035, 1057, 1118, - 468, 1035, 1102, 1102, 1102, 1102, 985, 986, 985, 467, - 442, 1037, 468, 1118, 467, 982, 209, 275, 988, 982, - 988, 209, 987, 988, 209, 379, 993, 467, 1118, 467, - 273, 1072, 53, 174, 972, 468, 468, 468, 1073, 1113, - 972, 1113, 813, 261, 1099, 936, 279, 936, 916, 266, - 467, 918, 456, 930, 919, 398, 468, 388, 752, 162, - 690, 1035, 468, 471, 430, 71, 775, 775, 468, 468, - 803, 114, 181, 190, 113, 413, 523, 1012, 1106, 1106, - 1104, 1104, 1104, 1104, 1104, 1117, 1104, 566, 642, 646, - 571, 179, 256, 616, 571, 256, 1114, 1118, 1012, 523, - 523, 456, 53, 380, 1104, 1104, 1104, 1104, 1116, 1104, - 1104, 1112, 1112, 1012, 471, 1112, 1112, 471, 1116, 1104, - 1104, 388, 1035, 65, 1117, 1104, 388, 388, 162, 185, - 1103, 1103, 732, 1103, 145, 1104, 732, 1113, 1113, 1012, - 523, 523, 206, 740, 740, 740, 740, 467, 546, 547, - 411, 551, 552, 164, 195, 164, 162, 689, 1035, 251, - 570, 111, 35, 803, 579, 411, 599, 1110, 32, 144, - 185, 261, 560, 533, 142, 186, 467, 347, 411, 580, - 35, 1117, 665, 493, 251, 467, 159, 1104, 1071, 247, - 265, 678, 679, 680, 157, 683, 1113, 347, 528, 936, - 732, 261, 560, 604, 468, 471, 430, 568, 53, 596, - 533, 591, 116, 130, 295, 1104, 430, 868, 35, 162, - 266, 467, 1113, 789, 804, 805, 1119, 803, 1012, 157, - 1102, 162, 388, 824, 193, 621, 523, 523, 523, 1104, - 269, 204, 523, 756, 745, 468, 1036, 162, 467, 1074, - 467, 468, 471, 468, 1037, 312, 468, 416, 363, 468, - 468, 468, 1035, 1035, 1035, 468, 285, 1058, 468, 996, - 997, 1040, 467, 1049, 984, 467, 1103, 982, 266, 411, - 989, 982, 209, 982, 1110, 1003, 467, 1003, 1118, 951, - 93, 172, 332, 467, 966, 967, 968, 969, 970, 971, - 1035, 1035, 429, 1052, 951, 1052, 468, 933, 914, 83, - 773, 774, 126, 1035, 756, 266, 756, 468, 803, 584, - 268, 813, 732, 732, 776, 776, 313, 803, 599, 468, - 388, 350, 925, 468, 471, 35, 145, 524, 704, 1117, - 1104, 388, 467, 784, 813, 815, 714, 467, 467, 722, - 1104, 468, 467, 350, 925, 1104, 1104, 467, 467, 430, - 453, 886, 321, 886, 886, 157, 524, 740, 553, 554, - 1121, 49, 92, 117, 134, 138, 158, 161, 175, 256, - 264, 305, 548, 478, 118, 784, 35, 820, 820, 1102, - 690, 468, 178, 599, 233, 582, 188, 467, 694, 302, - 467, 1102, 468, 347, 26, 76, 84, 112, 178, 189, - 369, 575, 575, 1101, 1104, 1106, 468, 936, 666, 145, - 104, 641, 162, 679, 333, 377, 681, 131, 684, 426, - 686, 1104, 35, 604, 561, 1102, 468, 565, 270, 3, - 593, 1122, 597, 591, 596, 334, 334, 57, 65, 225, - 936, 732, 1102, 773, 791, 468, 471, 398, 1000, 361, - 361, 468, 620, 249, 415, 622, 623, 1104, 523, 1036, - 1074, 468, 1045, 1071, 53, 249, 449, 53, 951, 468, - 471, 35, 998, 111, 1010, 1011, 1036, 74, 1103, 468, - 1035, 467, 982, 989, 467, 468, 1003, 468, 468, 467, - 351, 467, 468, 471, 1053, 1054, 1118, 468, 416, 1104, - 468, 471, 252, 409, 758, 767, 523, 775, 599, 467, - 777, 777, 1102, 599, 690, 1104, 380, 646, 178, 411, - 525, 350, 925, 1104, 1074, 157, 717, 717, 1074, 1074, - 1035, 380, 235, 238, 256, 534, 536, 537, 616, 1113, - 534, 535, 731, 732, 731, 732, 1103, 523, 468, 471, - 460, 467, 503, 555, 616, 883, 1113, 883, 251, 256, - 305, 883, 883, 546, 1113, 820, 38, 183, 157, 249, - 578, 467, 612, 163, 284, 356, 266, 586, 587, 588, - 380, 468, 1110, 5, 695, 561, 590, 1104, 468, 641, - 151, 716, 528, 868, 1102, 434, 981, 883, 333, 365, - 685, 467, 144, 641, 936, 591, 561, 590, 568, 467, - 598, 596, 597, 65, 269, 65, 604, 772, 468, 798, - 804, 1012, 126, 430, 430, 415, 620, 641, 468, 468, - 468, 312, 416, 1071, 306, 334, 1059, 999, 996, 467, - 1036, 468, 471, 35, 1006, 1007, 1118, 468, 1103, 1071, - 468, 1071, 467, 1071, 967, 471, 35, 936, 1000, 774, - 350, 162, 776, 427, 585, 813, 778, 778, 579, 690, - 1104, 612, 1035, 380, 468, 272, 340, 310, 718, 718, - 468, 468, 468, 1104, 468, 471, 468, 471, 886, 554, - 503, 556, 557, 1113, 1113, 256, 580, 460, 580, 1113, - 1113, 131, 190, 613, 116, 409, 266, 588, 266, 587, - 1104, 467, 468, 471, 533, 347, 641, 732, 35, 35, - 467, 1104, 682, 1118, 1035, 302, 868, 596, 533, 591, - 467, 594, 595, 1040, 1118, 597, 598, 269, 269, 467, - 528, 803, 27, 199, 857, 164, 164, 47, 94, 400, - 1035, 1060, 1061, 1060, 468, 1003, 471, 1011, 1121, 468, - 471, 157, 1012, 468, 468, 468, 966, 468, 1054, 1056, - 928, 756, 777, 467, 690, 468, 582, 925, 1104, 784, - 53, 925, 388, 537, 534, 732, 468, 471, 580, 333, - 468, 56, 249, 325, 350, 589, 589, 468, 5, 347, - 1104, 713, 936, 641, 468, 1110, 597, 591, 596, 1035, - 468, 471, 775, 775, 598, 773, 598, 252, 467, 852, - 854, 858, 911, 920, 927, 936, 784, 784, 1061, 333, - 156, 293, 156, 293, 468, 1037, 1007, 273, 3, 111, - 251, 256, 1008, 1009, 320, 994, 468, 1000, 523, 778, - 1035, 586, 925, 732, 467, 557, 686, 21, 111, 256, - 1104, 641, 868, 467, 598, 596, 597, 468, 595, 776, - 776, 468, 1000, 853, 854, 855, 937, 938, 471, 471, - 32, 1049, 1036, 1036, 256, 1009, 467, 468, 690, 536, - 144, 641, 4, 687, 688, 1112, 1113, 1121, 597, 598, - 775, 528, 468, 470, 388, 162, 1061, 74, 1035, 468, - 302, 468, 471, 598, 776, 598, 855, 361, 361, 1006, - 468, 1110, 688, 1000, 430, 430, 468, 467, 164, 164, - 687, 784, 784, 468 + 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 5, + 1, 1, 0, 2, 0, 2, 0, 2, 2, 3, + 3, 1, 3, 3, 2, 1, 1, 2, 2, 2, + 3, 3, 5, 5, 5, 0, 3, 5, 5, 5, + 5, 3, 5, 3, 5, 3, 5, 5, 6, 1, + 1, 6, 4, 9, 7, 1, 0, 2, 0, 1, + 1, 1, 1, 1, 1, 3, 2, 3, 3, 2, + 5, 1, 3, 3, 3, 3, 1, 3, 3, 2, + 2, 2, 2, 3, 3, 3, 3, 1, 3, 1, + 3, 1, 1, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, + 0, 1, 1, 2, 3, 1, 2, 3, 2, 1, + 1, 2, 1, 2, 1, 3, 3, 2, 3, 4, + 3, 2, 4, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 4, 6, 4, 6, 10, 13, 4, + 6, 10, 13, 4, 6, 4, 6, 5, 7, 11, + 14, 1, 3, 4, 3, 2, 5, 3, 6, 4, + 6, 6, 6, 5, 5, 6, 9, 4, 5, 7, + 6, 4, 8, 4, 2, 4, 3, 6, 4, 3, + 3, 3, 3, 2, 2, 3, 4, 4, 3, 3, + 3, 3, 3, 3, 4, 4, 3, 2, 3, 2, + 2, 3, 3, 2, 2, 3, 4, 4, 4, 5, + 1, 3, 2, 1, 1, 0, 2, 0, 2, 0, + 1, 1, 1, 3, 3, 2, 0, 1, 3, 3, + 1, 5, 3, 1, 2, 1, 3, 2, 3, 6, + 10, 1, 1, 1, 1, 3, 1, 3, 1, 1, + 1, 4, 1, 3, 4, 6, 4, 8, 2, 2, + 11, 9, 1, 1, 1, 0, 1, 1, 1, 1, + 3, 2, 0, 1, 1, 1, 3, 3, 1, 1, + 3, 3, 3, 3, 4, 3, 2, 1, 0, 2, + 0, 3, 0, 1, 0, 1, 3, 2, 1, 1, + 1, 3, 0, 1, 3, 1, 12, 15, 11, 14, + 13, 16, 1, 1, 2, 2, 2, 2, 1, 0, + 1, 0, 3, 0, 1, 3, 1, 3, 1, 1, + 1, 1, 1, 4, 2, 4, 2, 0, 3, 1, + 1, 2, 2, 1, 3, 4, 5, 2, 5, 5, + 1, 2, 1, 2, 2, 2, 3, 3, 3, 0, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 5, + 7, 3, 8, 4, 9, 11, 2, 0, 3, 0, + 1, 3, 1, 2, 2, 2, 0, 1, 3, 3, + 6, 4, 0, 1, 1, 2, 2, 0, 3, 3, + 2, 1, 1, 2, 2, 4, 0, 1, 0, 6, + 1, 1, 1, 3, 3, 3, 5, 2, 2, 2, + 0, 3, 4, 4, 0, 2, 0, 4, 0, 3, + 8, 11, 7, 10, 5, 2, 3, 0, 8, 11, + 4, 1, 0, 6, 5, 8, 4, 6, 1, 0, + 3, 0, 1, 2, 2, 2, 1, 2, 3, 2, + 2, 2, 2, 3, 3, 3, 1, 3, 1, 0, + 1, 2, 2, 1, 1, 3, 6, 10, 1, 0, + 1, 2, 2, 0, 2, 2, 1, 0, 5, 7, + 1, 0, 7, 2, 0, 3, 5, 5, 8, 2, + 0, 2, 2, 2, 1, 5, 2, 0, 2, 7, + 6, 10, 6, 6, 6, 6, 7, 6, 9, 9, + 6, 7, 6, 8, 8, 8, 8, 6, 6, 7, + 7, 8, 6, 9, 6, 7, 2, 2, 2, 2, + 1, 2, 1, 0, 7, 6, 4, 0, 1, 3, + 4, 1, 3, 1, 2, 2, 2, 2, 1, 1, + 10, 13, 2, 0, 2, 2, 1, 0, 5, 4, + 4, 11, 14, 12, 15, 5, 7, 11, 2, 1, + 4, 0, 8, 11, 1, 1, 7, 9, 8, 10, + 8, 4, 0, 5, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 1, 1, 1, 1, 1, 8, 16, + 20, 1, 1, 2, 1, 3, 1, 1, 1, 3, + 1, 2, 0, 1, 2, 4, 1, 1, 1, 1, + 1, 3, 0, 1, 0, 1, 1, 4, 0, 1, + 3, 0, 1, 1, 1, 1, 2, 0, 0, 2, + 2, 1, 2, 2, 2, 2, 11, 13, 1, 3, + 5, 1, 3, 5, 1, 2, 2, 1, 8, 4, + 5, 4, 4, 4, 3, 7, 8, 6, 6, 6, + 6, 6, 4, 7, 5, 8, 3, 1, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, + 3, 1, 0, 1, 3, 7, 9, 9, 8, 3, + 0, 13, 1, 3, 5, 5, 3, 6, 2, 1, + 0, 2, 0, 2, 4, 0, 1, 0, 6, 8, + 8, 1, 3, 5, 5, 7, 9, 7, 9, 5, + 6, 6, 4, 6, 4, 6, 8, 4, 6, 4, + 6, 5, 7, 1, 1, 1, 2, 1, 2, 1, + 1, 1, 3, 3, 3, 3, 2, 2, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, + 2, 3, 1, 3, 5, 2, 2, 0, 6, 6, + 6, 6, 6, 6, 6, 8, 9, 8, 8, 9, + 8, 9, 9, 7, 10, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 2, 3, 3, 3, 3, 2, + 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 8, 8, 8, 8, 8, 8, 9, + 2, 0, 1, 2, 1, 1, 1, 2, 1, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 1, 2, 3, 3, 3, 3, 4, 4, 3, 3, + 3, 4, 4, 3, 4, 4, 1, 1, 1, 0, + 7, 7, 10, 1, 1, 2, 4, 5, 1, 3, + 2, 2, 2, 2, 1, 2, 2, 4, 3, 2, + 2, 2, 2, 3, 2, 2, 2, 5, 5, 5, + 1, 3, 1, 2, 3, 0, 6, 6, 9, 3, + 0, 3, 0, 5, 2, 0, 3, 3, 3, 7, + 7, 10, 1, 1, 1, 1, 1, 14, 17, 1, + 0, 1, 0, 1, 0, 2, 0, 1, 3, 5, + 5, 7, 2, 0, 1, 0, 1, 1, 0, 2, + 2, 0, 9, 12, 7, 2, 0, 3, 2, 1, + 3, 1, 3, 2, 1, 1, 2, 3, 2, 1, + 3, 3, 3, 2, 2, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 4, 5, 1, 3, 3, 1, + 3, 3, 5, 6, 1, 3, 2, 1, 3, 1, + 2, 4, 5, 1, 1, 1, 1, 3, 3, 2, + 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, + 1, 1, 1, 3, 3, 5, 2, 0, 2, 1, + 3, 5, 1, 2, 1, 0, 4, 6, 4, 6, + 4, 6, 3, 5, 5, 5, 1, 3, 1, 3, + 2, 2, 1, 2, 1, 2, 11, 10, 10, 2, + 2, 0, 9, 2, 0, 10, 11, 11, 5, 5, + 8, 3, 3, 6, 6, 1, 1, 1, 1, 1, + 1, 3, 1, 5, 5, 6, 6, 6, 6, 6, + 8, 8, 6, 6, 7, 9, 9, 8, 10, 6, + 6, 6, 6, 6, 8, 6, 8, 6, 8, 7, + 9, 6, 8, 7, 9, 8, 10, 9, 11, 8, + 10, 9, 11, 8, 8, 7, 6, 6, 6, 6, + 8, 8, 8, 8, 6, 9, 1, 0, 2, 0, + 7, 9, 8, 7, 6, 6, 6, 6, 6, 6, + 6, 9, 9, 6, 8, 6, 8, 8, 8, 8, + 6, 8, 6, 8, 7, 9, 7, 9, 6, 7, + 1, 3, 3, 3, 1, 1, 1, 1, 1, 6, + 6, 6, 6, 6, 6, 7, 7, 6, 9, 9, + 6, 6, 6, 6, 8, 8, 8, 6, 7, 6, + 6, 5, 1, 0, 3, 3, 5, 6, 6, 6, + 8, 1, 3, 1, 5, 5, 6, 7, 4, 4, + 4, 6, 13, 1, 1, 3, 3, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 0, 3, 2, 0, 2, 2, 2, 2, 3, + 3, 2, 2, 2, 2, 3, 2, 5, 4, 3, + 3, 3, 1, 1, 0, 3, 2, 2, 1, 2, + 1, 3, 2, 1, 0, 9, 11, 12, 14, 3, + 4, 4, 0, 2, 5, 1, 0, 1, 2, 3, + 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, + 0, 5, 4, 6, 4, 3, 5, 5, 4, 4, + 6, 4, 6, 6, 5, 7, 9, 6, 1, 0, + 6, 11, 11, 11, 13, 9, 11, 1, 1, 10, + 4, 2, 5, 2, 0, 4, 5, 5, 4, 6, + 1, 3, 1, 1, 1, 1, 1, 2, 4, 1, + 1, 1, 0, 1, 0, 1, 0, 3, 0, 2, + 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 2, 1, 1, 1, 1, 0, + 5, 3, 0, 1, 1, 1, 1, 3, 9, 3, + 0, 2, 3, 2, 3, 7, 1, 3, 1, 4, + 4, 7, 2, 1, 1, 1, 3, 2, 8, 5, + 0, 4, 3, 0, 2, 0, 7, 2, 0, 5, + 3, 0, 2, 2, 2, 3, 1, 3, 1, 2, + 1, 0, 1, 2, 0, 8, 1, 3, 3, 5, + 2, 1, 3, 7, 1, 0, 3, 2, 2, 2, + 0, 2, 2, 1, 1, 3, 3, 1, 2, 4, + 4, 2, 3, 5, 5, 1, 1, 9, 9, 1, + 2, 4, 4, 4, 2, 2, 3, 1, 3, 6, + 1, 0, 2, 0, 3, 3, 4, 4, 4, 4, + 3, 2, 1, 1, 0, 1, 1, 0, 1, 5, + 1, 0, 1, 0, 3, 1, 3, 4, 3, 2, + 2, 1, 1, 1, 0, 2, 4, 5, 2, 3, + 1, 1, 1, 1, 3, 0, 1, 1, 1, 1, + 1, 3, 0, 1, 3, 1, 1, 1, 1, 1, + 2, 4, 4, 5, 2, 0, 1, 3, 1, 0, + 1, 2, 3, 2, 4, 2, 3, 2, 0, 4, + 5, 2, 0, 1, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 1, 4, 3, 4, 5, 4, 5, + 4, 5, 2, 4, 1, 1, 0, 1, 4, 5, + 4, 0, 2, 2, 2, 1, 1, 0, 4, 2, + 1, 2, 2, 4, 1, 3, 1, 2, 3, 6, + 4, 0, 2, 6, 2, 1, 3, 4, 0, 2, + 0, 2, 0, 2, 4, 0, 1, 0, 1, 3, + 3, 7, 12, 1, 3, 2, 3, 3, 1, 2, + 2, 2, 2, 1, 1, 3, 3, 2, 2, 3, + 5, 6, 2, 3, 3, 4, 0, 1, 1, 1, + 1, 1, 2, 4, 1, 1, 1, 1, 2, 3, + 3, 0, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 3, 0, 1, 1, 1, 1, 5, + 2, 1, 1, 1, 1, 4, 1, 2, 2, 1, + 3, 3, 2, 1, 0, 5, 2, 5, 2, 1, + 3, 3, 0, 1, 1, 1, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 0, 1, 4, 1, + 3, 3, 5, 2, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 3, 2, 2, 3, 5, 4, 6, 3, 5, + 4, 6, 4, 6, 5, 7, 3, 2, 4, 2, + 3, 3, 4, 3, 4, 3, 4, 5, 6, 6, + 7, 6, 7, 6, 7, 3, 4, 4, 6, 2, + 3, 4, 1, 1, 3, 2, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 5, 6, 6, 7, 3, 4, 1, 1, + 2, 4, 1, 1, 1, 2, 2, 2, 2, 1, + 1, 4, 3, 5, 6, 8, 6, 6, 4, 4, + 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, + 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, + 4, 4, 4, 4, 6, 5, 5, 5, 4, 6, + 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, + 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, + 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, + 0, 2, 4, 4, 6, 5, 0, 5, 0, 2, + 0, 1, 3, 3, 2, 2, 0, 6, 1, 0, + 3, 0, 2, 2, 0, 1, 4, 2, 2, 2, + 2, 2, 4, 3, 5, 4, 3, 5, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, + 4, 1, 2, 1, 2, 1, 3, 1, 3, 1, + 3, 3, 1, 3, 3, 3, 2, 1, 3, 3, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 3, 2, 3, 0, 3, 3, 2, 2, 1, 0, + 2, 2, 3, 2, 1, 1, 3, 5, 1, 2, + 4, 2, 0, 1, 0, 1, 2, 2, 2, 3, + 5, 1, 0, 1, 2, 0, 2, 1, 0, 1, + 0, 1, 3, 3, 2, 1, 1, 1, 3, 1, + 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 2, 6, 2, 3, + 5, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 1621, 1404, 621, 1490, 1489, 1404, 257, 0, 1492, 0, + 1404, 418, 1096, 0, 0, 0, 0, 621, 1404, 0, + 1621, 0, 0, 0, 0, 0, 1634, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1404, 0, 0, + 1641, 0, 0, 0, 0, 1634, 0, 1494, 0, 0, + 0, 0, 0, 2, 4, 71, 72, 31, 30, 91, + 54, 18, 62, 125, 124, 126, 41, 37, 79, 26, + 28, 38, 42, 64, 66, 44, 55, 103, 63, 24, + 61, 86, 67, 89, 49, 12, 13, 50, 14, 51, + 15, 52, 16, 99, 73, 92, 35, 60, 23, 43, + 69, 70, 5, 45, 81, 77, 11, 56, 57, 59, + 83, 84, 85, 108, 87, 120, 40, 117, 96, 97, + 114, 98, 115, 9, 100, 53, 17, 111, 110, 112, + 80, 46, 82, 68, 90, 109, 27, 113, 19, 20, + 22, 21, 58, 29, 65, 32, 88, 116, 106, 102, + 121, 119, 127, 104, 74, 7, 8, 93, 6, 25, + 48, 10, 34, 33, 47, 39, 123, 36, 1492, 95, + 107, 94, 75, 101, 78, 105, 122, 76, 118, 1594, + 1593, 1643, 1597, 1620, 0, 1609, 1403, 1402, 1388, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 620, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1414, 2215, 2230, 2231, 2232, 2233, 2234, + 2235, 2236, 2237, 389, 2238, 2239, 2240, 2241, 2242, 2243, + 2244, 2245, 2246, 2247, 2248, 2512, 2513, 2514, 2515, 2249, + 2250, 2251, 2252, 2253, 2254, 2255, 2516, 2517, 2256, 2257, + 2258, 2259, 2260, 2518, 2261, 2262, 2263, 2264, 2265, 2266, + 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, + 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2519, 2520, 2284, + 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, + 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, + 2305, 2306, 2307, 2308, 2309, 2310, 2521, 2311, 2312, 2313, + 2522, 2314, 2315, 2316, 2523, 2317, 2318, 2319, 2320, 2321, + 2322, 2323, 2324, 2524, 2525, 2325, 2326, 2327, 2328, 2329, + 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, + 2340, 2341, 2526, 2342, 2343, 2344, 2345, 2527, 2528, 2529, + 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2530, 2354, + 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, + 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2531, + 2532, 2374, 2375, 2376, 2533, 2377, 2378, 2379, 2534, 2380, + 2535, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, + 2536, 2390, 2537, 2391, 2392, 2393, 2394, 2395, 2396, 2397, + 2398, 2399, 2400, 2401, 2538, 2402, 2539, 2405, 2403, 2404, + 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2540, + 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, + 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, + 2435, 2541, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, + 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2542, 2452, + 2453, 2454, 2455, 2543, 2456, 2457, 2458, 2459, 2460, 2461, + 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2544, 2469, 2470, + 2471, 2472, 2473, 2474, 2475, 2476, 2545, 2546, 2477, 2478, + 2547, 2479, 2548, 2480, 2481, 2482, 2483, 2484, 2485, 2486, + 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, + 2549, 2550, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, + 2505, 2506, 2507, 2508, 2551, 2552, 2553, 2554, 2555, 2556, + 2557, 2558, 2559, 2560, 2561, 2509, 2510, 2511, 388, 1584, + 2183, 2216, 2217, 1491, 1471, 621, 0, 1391, 417, 1621, + 0, 0, 0, 0, 0, 0, 0, 0, 849, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 176, 0, 0, 0, 0, 443, 442, 0, 0, + 0, 1069, 448, 0, 0, 0, 0, 0, 609, 1533, + 2403, 1531, 1585, 258, 261, 262, 259, 260, 2205, 0, + 1191, 1192, 1194, 0, 0, 0, 1204, 889, 890, 0, + 0, 0, 898, 0, 0, 0, 887, 0, 0, 0, + 903, 900, 0, 904, 901, 884, 902, 891, 0, 883, + 0, 0, 1204, 905, 0, 0, 885, 0, 0, 0, + 0, 1392, 1530, 449, 1621, 0, 1508, 1509, 1510, 1492, + 1499, 1511, 1504, 1506, 1505, 1507, 1503, 2204, 2231, 1009, + 1009, 1009, 1009, 1006, 1007, 1009, 1009, 1009, 2422, 0, + 0, 988, 0, 990, 2206, 1009, 1014, 509, 509, 509, + 0, 1013, 1018, 509, 0, 1385, 1423, 2188, 1633, 0, + 989, 1384, 0, 0, 0, 2477, 1522, 0, 0, 1219, + 1215, 1217, 1218, 1216, 0, 0, 0, 2438, 1396, 240, + 2449, 2545, 2477, 239, 233, 235, 207, 2235, 0, 0, + 1013, 0, 1393, 1394, 971, 1640, 1638, 0, 2170, 2254, + 2269, 2357, 230, 2433, 2439, 2449, 2545, 2477, 2508, 186, + 196, 191, 0, 251, 2449, 2545, 2477, 247, 1414, 0, + 1610, 1740, 2179, 0, 1387, 1386, 1493, 0, 1496, 0, + 2417, 1614, 1617, 1498, 1615, 1606, 0, 0, 1, 1621, + 1487, 1637, 1637, 0, 1637, 0, 1598, 1606, 1601, 1605, + 0, 0, 0, 0, 2215, 2562, 2563, 2564, 2565, 2566, + 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, + 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 0, 0, + 0, 2189, 2216, 2220, 0, 908, 0, 1426, 2184, 1055, + 0, 0, 0, 0, 0, 0, 0, 1105, 1104, 2221, + 2211, 2212, 0, 2209, 2210, 2222, 2223, 2224, 0, 2330, + 0, 0, 0, 2081, 2092, 2093, 2094, 2258, 2314, 2089, + 2090, 2091, 2083, 2084, 2085, 2086, 2087, 2088, 0, 0, + 1186, 2082, 0, 2330, 0, 0, 155, 0, 132, 0, + 0, 2330, 0, 0, 0, 0, 0, 0, 0, 2330, + 0, 0, 0, 0, 0, 155, 2362, 0, 132, 2330, + 0, 0, 1408, 0, 0, 0, 1410, 1413, 1389, 1474, + 0, 2179, 0, 0, 0, 942, 935, 0, 943, 950, + 0, 0, 952, 0, 0, 936, 0, 0, 0, 0, + 955, 956, 0, 957, 937, 958, 938, 959, 939, 960, + 0, 0, 0, 0, 940, 0, 0, 0, 1400, 0, + 1524, 1526, 1525, 1523, 509, 0, 0, 0, 0, 2330, + 0, 0, 132, 1459, 0, 2330, 132, 0, 0, 447, + 446, 132, 2209, 445, 444, 2258, 2314, 0, 1095, 0, + 1343, 132, 2330, 0, 178, 2330, 693, 2330, 1498, 0, + 624, 0, 0, 804, 2362, 132, 0, 0, 0, 0, + 0, 0, 1072, 0, 0, 0, 608, 621, 1534, 1532, + 0, 1195, 232, 231, 1193, 896, 2330, 1137, 345, 345, + 0, 0, 2330, 1445, 2218, 1815, 1844, 1822, 1844, 1844, + 1811, 1811, 2298, 1824, 2330, 1812, 1813, 1849, 0, 1844, + 1811, 1816, 0, 1814, 1852, 1852, 1839, 345, 912, 1796, + 1797, 1798, 1799, 1825, 1826, 1800, 1831, 1832, 1836, 1801, + 1866, 1811, 2219, 897, 0, 888, 2330, 345, 1101, 2330, + 2213, 165, 0, 886, 2258, 2314, 2330, 345, 1188, 0, + 2330, 161, 2330, 345, 2330, 625, 0, 0, 2330, 345, + 2330, 2362, 163, 0, 2330, 345, 906, 2330, 345, 2181, + 2330, 0, 0, 1527, 0, 1501, 2549, 1516, 0, 1512, + 1519, 1515, 1621, 1009, 1008, 0, 1009, 0, 1009, 0, + 1009, 0, 1009, 0, 0, 0, 1009, 2207, 2208, 991, + 0, 1015, 0, 0, 1022, 1021, 1020, 0, 0, 0, + 1023, 0, 1744, 1561, 0, 1382, 234, 185, 0, 246, + 245, 1399, 0, 0, 0, 1072, 1222, 0, 1220, 1211, + 1212, 1395, 238, 236, 0, 0, 0, 0, 0, 0, + 1401, 0, 0, 0, 0, 2192, 2194, 2195, 2095, 2165, + 0, 2513, 2514, 2515, 2154, 0, 2516, 2517, 2518, 2564, + 1997, 1984, 1993, 1998, 1985, 1987, 1994, 2519, 2520, 1932, + 2521, 2522, 2202, 2523, 2524, 2525, 2527, 2528, 2529, 2530, + 1989, 1991, 2531, 2532, 0, 2203, 2534, 2535, 2386, 2537, + 2538, 2540, 2541, 1995, 2543, 2544, 2545, 2546, 2547, 2548, + 2201, 0, 1996, 2550, 2552, 2553, 2554, 2555, 2557, 2558, + 2559, 2560, 0, 0, 0, 2176, 0, 1964, 0, 1804, + 1805, 1827, 1828, 1806, 1833, 1834, 1807, 0, 2175, 1869, + 2046, 1963, 1980, 0, 1969, 1970, 0, 1962, 1958, 1623, + 2171, 0, 1959, 2191, 2193, 2155, 1623, 2169, 199, 253, + 0, 254, 2177, 2449, 187, 229, 201, 228, 202, 200, + 0, 2256, 188, 0, 0, 189, 0, 0, 0, 0, + 250, 248, 0, 1390, 0, 1742, 1741, 2162, 0, 2163, + 2180, 917, 1486, 1484, 1485, 1483, 0, 1480, 1482, 1495, + 1492, 2105, 0, 1616, 0, 0, 0, 1596, 1595, 3, + 1498, 1635, 1636, 0, 0, 0, 0, 0, 0, 0, + 0, 1689, 1651, 1652, 1654, 1686, 1690, 1698, 0, 1602, + 0, 0, 1746, 0, 0, 0, 0, 0, 0, 1136, + 2190, 0, 0, 0, 0, 0, 909, 0, 0, 0, + 1432, 0, 1434, 1435, 1436, 0, 0, 0, 1437, 1438, + 1426, 242, 1444, 1442, 1425, 1427, 1440, 0, 0, 0, + 0, 0, 0, 0, 1451, 0, 169, 170, 0, 637, + 621, 0, 2330, 0, 0, 0, 0, 0, 1144, 1151, + 0, 0, 0, 0, 0, 0, 0, 0, 1145, 1143, + 1146, 244, 1155, 1172, 1175, 0, 1103, 1106, 0, 0, + 0, 0, 0, 1277, 0, 0, 0, 1277, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 269, 281, 340, 600, 0, 0, 0, 603, 0, + 2330, 0, 0, 0, 0, 1190, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, + 131, 136, 0, 0, 0, 0, 0, 0, 0, 586, + 599, 0, 0, 0, 0, 0, 596, 0, 0, 132, + 273, 576, 582, 0, 0, 0, 700, 699, 0, 0, + 0, 0, 1359, 1358, 0, 0, 0, 0, 1449, 1448, + 0, 0, 0, 0, 1277, 0, 263, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 381, 382, 0, 0, 0, 136, 0, + 0, 0, 0, 275, 0, 0, 1409, 1406, 1407, 0, + 1412, 0, 1470, 0, 949, 0, 0, 0, 0, 951, + 0, 944, 0, 0, 941, 2258, 2314, 0, 0, 0, + 0, 0, 0, 0, 954, 0, 0, 0, 420, 0, + 0, 801, 0, 0, 0, 0, 0, 0, 812, 0, + 1426, 1458, 0, 0, 0, 630, 0, 2330, 0, 134, + 850, 0, 802, 448, 0, 0, 0, 1167, 1342, 134, + 0, 0, 172, 0, 0, 697, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 742, 741, 0, 0, 0, + 803, 0, 0, 134, 0, 2330, 579, 2330, 0, 509, + 509, 0, 0, 1071, 1074, 0, 0, 0, 0, 1588, + 1590, 1589, 0, 1587, 0, 343, 344, 0, 1178, 799, + 1203, 0, 0, 1843, 1830, 1838, 1837, 0, 1820, 1819, + 1818, 0, 1817, 0, 1844, 1844, 1842, 1821, 1796, 0, + 0, 0, 1848, 0, 1846, 0, 879, 1792, 1788, 0, + 1855, 1856, 1857, 1854, 1867, 1853, 0, 1802, 1858, 1811, + 1808, 899, 0, 0, 1176, 0, 0, 2330, 345, 2330, + 0, 2330, 0, 0, 0, 1180, 345, 0, 0, 1360, + 0, 895, 893, 892, 894, 0, 0, 877, 0, 0, + 0, 2330, 345, 0, 0, 872, 0, 0, 874, 0, + 0, 0, 0, 1621, 0, 218, 219, 217, 1517, 220, + 1518, 1514, 1500, 0, 999, 0, 1003, 0, 994, 0, + 1000, 0, 995, 992, 993, 0, 998, 0, 0, 510, + 512, 0, 0, 2281, 2297, 0, 2320, 2350, 2351, 2439, + 2445, 0, 2472, 2482, 0, 1024, 1050, 1019, 711, 0, + 0, 1571, 1383, 2112, 0, 1621, 0, 0, 0, 0, + 237, 208, 0, 0, 0, 1052, 2438, 1398, 970, 621, + 0, 1960, 0, 1967, 1968, 2153, 0, 0, 0, 0, + 0, 0, 1966, 2120, 0, 0, 0, 0, 0, 1892, + 0, 0, 0, 2133, 0, 2139, 0, 0, 1929, 0, + 0, 0, 0, 0, 0, 0, 0, 1893, 1873, 1874, + 1964, 2105, 0, 1965, 2198, 0, 1866, 2174, 2095, 0, + 2092, 2093, 2094, 0, 0, 0, 2168, 0, 2103, 0, + 0, 1907, 2101, 1909, 0, 0, 0, 0, 2089, 2090, + 2091, 2083, 2084, 2085, 2086, 2087, 2088, 2099, 1889, 0, + 0, 2048, 0, 1888, 0, 0, 1702, 0, 2196, 2156, + 1702, 255, 256, 252, 0, 0, 204, 203, 0, 222, + 226, 227, 198, 225, 0, 221, 206, 2037, 2036, 205, + 197, 194, 192, 209, 211, 212, 195, 193, 249, 0, + 2161, 0, 2225, 2585, 2586, 2587, 2588, 2589, 2590, 2591, + 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, + 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, + 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, + 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, + 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, + 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, + 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, + 2158, 2157, 2186, 2226, 2227, 2228, 2229, 2164, 0, 0, + 345, 1478, 0, 1475, 1699, 0, 1618, 0, 0, 1488, + 1613, 1612, 1644, 1645, 1088, 1611, 1669, 1670, 1665, 0, + 0, 0, 1695, 1693, 1661, 1655, 1660, 1658, 0, 1662, + 1869, 1688, 1600, 1649, 1650, 1653, 1599, 0, 1691, 0, + 1574, 1689, 1654, 1558, 0, 1536, 0, 1747, 0, 0, + 0, 0, 0, 1116, 1118, 0, 1117, 0, 1120, 0, + 1129, 0, 0, 1115, 1134, 0, 1123, 1121, 0, 1447, + 0, 0, 910, 0, 0, 0, 0, 1433, 0, 0, + 2472, 241, 1436, 1441, 1428, 1439, 0, 0, 0, 0, + 0, 1054, 1053, 0, 0, 1076, 0, 0, 0, 1454, + 498, 0, 342, 0, 0, 0, 0, 0, 0, 0, + 0, 797, 794, 0, 0, 793, 0, 635, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 673, 0, + 1277, 0, 705, 0, 1153, 0, 0, 1152, 0, 1156, + 0, 0, 1154, 1149, 1150, 2439, 2449, 2477, 243, 1174, + 0, 1173, 1171, 1098, 0, 1099, 0, 0, 0, 0, + 0, 2307, 2330, 285, 304, 0, 1276, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 327, 0, 0, 330, 329, 0, 0, 0, + 0, 0, 334, 313, 0, 314, 0, 0, 333, 0, + 0, 601, 602, 0, 0, 0, 0, 1277, 0, 277, + 0, 0, 0, 0, 0, 0, 0, 1187, 0, 728, + 0, 0, 0, 0, 0, 1346, 0, 0, 158, 0, + 153, 157, 0, 0, 0, 0, 584, 585, 598, 0, + 589, 590, 587, 591, 592, 0, 0, 0, 0, 0, + 0, 0, 583, 0, 0, 695, 694, 698, 0, 0, + 0, 1355, 0, 1167, 0, 0, 1354, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1224, 1223, 0, + 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, + 0, 0, 0, 0, 160, 715, 0, 714, 0, 154, + 159, 0, 0, 0, 0, 0, 0, 0, 216, 1405, + 1411, 1473, 2187, 1472, 0, 0, 0, 0, 953, 0, + 0, 0, 0, 0, 0, 0, 945, 946, 947, 948, + 0, 0, 0, 0, 0, 395, 0, 0, 0, 2218, + 0, 828, 800, 0, 0, 0, 814, 0, 817, 820, + 0, 1424, 467, 0, 0, 627, 673, 0, 0, 451, + 167, 0, 0, 0, 0, 730, 0, 0, 0, 1341, + 129, 176, 178, 449, 0, 177, 179, 181, 182, 183, + 180, 184, 0, 692, 696, 0, 0, 0, 0, 623, + 0, 0, 0, 0, 0, 743, 747, 746, 750, 748, + 0, 744, 0, 0, 1767, 0, 0, 152, 0, 0, + 574, 578, 0, 0, 0, 0, 451, 550, 356, 2330, + 0, 509, 0, 2330, 0, 1073, 0, 0, 0, 0, + 0, 0, 0, 0, 1586, 345, 1138, 0, 1446, 0, + 0, 0, 345, 1841, 1840, 1793, 1789, 0, 0, 0, + 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1809, 345, 1102, 166, 2214, 0, 881, 0, 0, + 0, 0, 345, 1189, 869, 162, 345, 626, 0, 345, + 164, 0, 0, 0, 618, 345, 907, 345, 2182, 0, + 345, 1529, 2330, 509, 1502, 1513, 996, 1005, 1004, 1002, + 1001, 997, 0, 1016, 0, 508, 0, 0, 0, 1030, + 1031, 0, 0, 1029, 1032, 0, 1034, 1026, 1025, 1035, + 1036, 0, 0, 1052, 709, 0, 0, 0, 0, 1568, + 0, 1566, 0, 1745, 1570, 1559, 1521, 0, 1520, 0, + 567, 0, 0, 1221, 0, 0, 1013, 0, 0, 345, + 1397, 0, 972, 978, 0, 0, 0, 0, 0, 0, + 981, 982, 983, 974, 984, 975, 985, 0, 976, 0, + 0, 0, 0, 2166, 2116, 0, 2117, 0, 0, 2152, + 2148, 0, 0, 0, 0, 0, 2121, 2124, 2125, 2126, + 2123, 2127, 2122, 0, 0, 2128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2541, 0, 0, 0, 0, + 1933, 0, 0, 2076, 0, 2105, 2138, 0, 0, 0, + 0, 0, 0, 2105, 2144, 0, 0, 0, 0, 2035, + 0, 2032, 0, 0, 0, 0, 2165, 0, 0, 2199, + 1870, 1884, 1885, 1886, 1890, 2173, 0, 2167, 0, 0, + 1871, 1898, 0, 2145, 1925, 0, 1930, 1913, 0, 1906, + 0, 1911, 1915, 1894, 0, 1891, 0, 2168, 2104, 0, + 2102, 0, 1881, 1882, 1883, 1875, 1876, 1877, 1878, 1879, + 1880, 1887, 2080, 2078, 2079, 0, 0, 0, 2056, 0, + 0, 1910, 2323, 2357, 0, 1634, 1634, 1634, 1622, 1632, + 2172, 0, 1762, 0, 0, 0, 0, 1972, 0, 2109, + 1643, 2107, 1121, 1762, 2178, 0, 0, 1866, 0, 1743, + 2159, 2162, 915, 916, 914, 1498, 1481, 1477, 1476, 2106, + 1497, 1621, 0, 1086, 1087, 0, 1091, 0, 0, 1663, + 1696, 0, 1687, 0, 1667, 1668, 1659, 1697, 1572, 0, + 1692, 1604, 1603, 0, 1765, 0, 0, 0, 1550, 1538, + 0, 1748, 0, 1702, 1576, 0, 2165, 1700, 1319, 1225, + 1284, 1119, 0, 1811, 1130, 0, 1114, 0, 1113, 1811, + 0, 1131, 0, 1811, 1320, 1226, 1285, 911, 1321, 1227, + 1286, 1322, 1228, 1443, 1431, 1430, 1429, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 778, 2330, 345, 1452, 1323, 0, 1229, 341, 1453, + 1287, 1457, 796, 795, 0, 0, 1288, 0, 636, 0, + 640, 0, 642, 643, 644, 0, 0, 0, 645, 0, + 2258, 2314, 647, 650, 657, 662, 652, 0, 0, 664, + 658, 0, 0, 0, 0, 0, 0, 670, 675, 0, + 0, 0, 0, 0, 0, 0, 1147, 1148, 1324, 1232, + 0, 1289, 1097, 0, 1233, 168, 0, 0, 270, 2330, + 287, 0, 677, 778, 1279, 311, 0, 0, 326, 321, + 322, 320, 2330, 345, 2330, 345, 0, 0, 0, 0, + 0, 323, 318, 319, 315, 0, 0, 328, 2234, 2299, + 2450, 0, 681, 683, 0, 688, 331, 1251, 352, 351, + 350, 0, 335, 0, 357, 360, 332, 309, 312, 310, + 306, 282, 0, 0, 0, 0, 0, 0, 0, 0, + 2185, 0, 0, 1182, 0, 1327, 1290, 0, 1310, 0, + 0, 0, 0, 722, 1347, 1349, 1339, 1239, 1348, 156, + 1266, 145, 0, 0, 141, 0, 0, 0, 0, 135, + 0, 1330, 1240, 0, 0, 274, 577, 588, 593, 1245, + 597, 594, 1300, 595, 1337, 1241, 1333, 1269, 1295, 1340, + 1356, 1242, 1167, 1351, 1353, 0, 1277, 0, 264, 266, + 0, 284, 0, 1243, 0, 1293, 1332, 1268, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1460, 0, 0, + 0, 0, 0, 0, 345, 0, 0, 0, 1279, 2330, + 345, 1331, 0, 1274, 0, 1308, 0, 383, 0, 1267, + 0, 0, 276, 1247, 1302, 0, 0, 214, 213, 215, + 962, 922, 961, 0, 2297, 0, 921, 923, 0, 0, + 0, 924, 0, 0, 0, 0, 920, 918, 919, 394, + 0, 419, 392, 393, 395, 0, 0, 827, 0, 0, + 0, 0, 816, 0, 0, 0, 1450, 0, 132, 634, + 0, 0, 0, 629, 672, 677, 0, 0, 0, 0, + 450, 454, 458, 459, 460, 0, 0, 0, 0, 146, + 133, 0, 858, 0, 509, 0, 732, 1345, 1344, 1166, + 0, 178, 171, 0, 0, 693, 0, 1498, 0, 0, + 356, 811, 809, 808, 810, 0, 0, 0, 832, 807, + 0, 1766, 1768, 0, 0, 0, 0, 0, 0, 567, + 453, 0, 0, 512, 0, 0, 554, 0, 0, 0, + 0, 356, 0, 0, 0, 1108, 0, 1126, 1109, 0, + 0, 0, 0, 1160, 1167, 1161, 1139, 0, 0, 606, + 1591, 1592, 0, 1179, 0, 0, 1810, 1823, 880, 0, + 1851, 1850, 1852, 1852, 0, 1794, 0, 1835, 1860, 1861, + 1862, 1863, 1864, 1865, 0, 1859, 1803, 1177, 345, 0, + 345, 0, 345, 1181, 1361, 0, 878, 0, 0, 345, + 871, 873, 0, 875, 0, 1017, 511, 0, 0, 0, + 0, 1028, 604, 1033, 0, 1045, 1040, 1042, 0, 1046, + 708, 0, 0, 1569, 1562, 1564, 1563, 0, 0, 1560, + 2113, 870, 0, 573, 1213, 1214, 0, 0, 345, 0, + 1047, 0, 0, 979, 973, 0, 0, 977, 0, 980, + 0, 0, 1639, 2114, 2115, 0, 0, 0, 2149, 0, + 0, 2010, 0, 1986, 1988, 2000, 0, 2011, 1971, 2012, + 1990, 1992, 0, 2096, 0, 0, 2001, 0, 1935, 1936, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1951, 1950, 2002, + 2075, 0, 0, 2136, 2137, 2003, 0, 0, 2143, 0, + 0, 0, 2008, 2013, 0, 0, 0, 0, 2019, 0, + 2040, 0, 0, 0, 1961, 2106, 0, 0, 0, 0, + 0, 0, 0, 0, 1931, 1914, 1908, 0, 1912, 1916, + 0, 0, 0, 1902, 0, 0, 1900, 1926, 1896, 0, + 0, 1927, 0, 0, 0, 1979, 0, 0, 1634, 1634, + 1634, 1634, 1631, 0, 0, 0, 0, 2436, 2561, 0, + 1726, 1701, 1703, 1713, 1726, 1731, 1726, 1981, 1760, 1982, + 0, 2179, 0, 1672, 1643, 1643, 1643, 1978, 0, 0, + 0, 0, 1642, 1672, 190, 0, 223, 210, 2161, 0, + 1479, 0, 1646, 0, 2097, 1091, 0, 1648, 0, 0, + 1694, 1656, 1573, 1557, 0, 1555, 1542, 1544, 1543, 0, + 0, 1545, 2165, 0, 1555, 1537, 1581, 0, 0, 1765, + 0, 1580, 0, 1811, 1111, 1112, 0, 1135, 0, 1057, + 1058, 0, 1056, 0, 0, 0, 497, 1075, 0, 0, + 0, 778, 0, 0, 501, 0, 1455, 0, 1338, 1265, + 638, 639, 0, 651, 0, 660, 659, 0, 0, 0, + 0, 0, 0, 0, 646, 666, 610, 667, 669, 0, + 0, 668, 671, 674, 1277, 0, 706, 1253, 0, 1306, + 1141, 1280, 0, 1100, 0, 0, 0, 0, 0, 0, + 467, 305, 0, 0, 0, 365, 0, 289, 297, 363, + 303, 0, 1283, 337, 0, 308, 0, 301, 324, 316, + 325, 317, 336, 338, 0, 685, 686, 684, 680, 0, + 687, 689, 0, 354, 0, 0, 0, 1326, 0, 1277, + 0, 278, 0, 1249, 0, 1304, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1309, 0, 0, + 0, 0, 727, 0, 724, 0, 0, 138, 137, 0, + 144, 0, 0, 0, 0, 0, 1357, 0, 0, 0, + 0, 0, 0, 0, 283, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 384, 347, 0, 835, 0, 0, 0, 386, + 0, 0, 0, 0, 0, 1325, 1234, 0, 0, 0, + 933, 0, 0, 0, 0, 0, 0, 397, 398, 132, + 396, 0, 0, 826, 2386, 2083, 2084, 824, 830, 821, + 823, 825, 822, 0, 829, 778, 0, 0, 813, 818, + 819, 0, 0, 0, 0, 0, 482, 0, 0, 0, + 473, 0, 0, 1167, 466, 469, 470, 0, 0, 630, + 633, 631, 632, 665, 0, 453, 489, 536, 0, 148, + 0, 0, 149, 147, 0, 0, 356, 729, 0, 726, + 0, 174, 449, 0, 697, 0, 0, 0, 1167, 622, + 749, 752, 745, 0, 831, 833, 805, 0, 677, 0, + 0, 579, 0, 509, 1530, 562, 0, 538, 453, 536, + 548, 547, 549, 0, 556, 355, 0, 0, 567, 556, + 0, 0, 1076, 1107, 0, 0, 0, 1157, 1162, 1158, + 0, 0, 1122, 0, 1159, 1140, 1094, 1377, 1378, 1375, + 1376, 0, 0, 0, 1583, 0, 1829, 0, 1847, 1845, + 1790, 1795, 1868, 882, 0, 865, 0, 867, 345, 716, + 0, 619, 345, 0, 0, 0, 0, 1027, 0, 1043, + 0, 0, 1010, 1049, 0, 0, 1567, 1565, 565, 0, + 1052, 0, 1011, 1051, 0, 0, 0, 0, 0, 0, + 0, 2118, 0, 2151, 2147, 0, 1983, 2119, 0, 2131, + 2130, 2076, 0, 0, 1934, 1946, 1947, 1948, 2132, 0, + 1956, 0, 0, 1943, 1944, 1945, 1937, 1938, 1939, 1940, + 1941, 1942, 1949, 2141, 2140, 2134, 2135, 0, 2005, 2006, + 2007, 2142, 2014, 0, 2249, 2041, 2018, 2034, 2033, 0, + 0, 0, 2021, 0, 0, 2030, 0, 2077, 2200, 1872, + 0, 0, 1899, 2146, 1917, 0, 0, 0, 1895, 2096, + 0, 0, 0, 0, 0, 1904, 0, 0, 0, 2059, + 2054, 2055, 2073, 0, 0, 0, 0, 0, 0, 1625, + 1624, 1630, 1726, 1731, 1726, 0, 0, 1606, 0, 1713, + 0, 1725, 1711, 1724, 0, 0, 1737, 1735, 0, 1737, + 0, 1737, 0, 1705, 0, 1727, 1707, 1724, 1709, 0, + 1752, 0, 2180, 1761, 0, 1685, 0, 0, 0, 0, + 2110, 2111, 0, 2108, 1973, 1685, 0, 2160, 1619, 0, + 1647, 1089, 1090, 1664, 1657, 2277, 1763, 0, 1556, 0, + 0, 0, 1547, 1553, 1535, 0, 0, 1577, 1555, 1578, + 1132, 0, 0, 1124, 1063, 1066, 1064, 1062, 1065, 0, + 0, 0, 778, 0, 0, 517, 0, 1083, 1083, 0, + 0, 503, 559, 1167, 781, 0, 0, 0, 779, 345, + 1230, 0, 661, 0, 0, 656, 654, 653, 655, 0, + 611, 1336, 1231, 0, 0, 0, 0, 1142, 0, 0, + 1252, 0, 286, 0, 463, 0, 298, 0, 294, 0, + 1278, 0, 0, 0, 0, 293, 367, 0, 364, 0, + 345, 345, 339, 682, 353, 358, 359, 362, 0, 0, + 0, 0, 0, 1282, 0, 0, 0, 0, 0, 0, + 0, 859, 842, 0, 0, 860, 861, 0, 0, 0, + 1184, 1185, 1183, 1311, 1312, 1317, 1314, 1313, 1316, 1318, + 1315, 0, 1237, 0, 0, 720, 142, 139, 140, 143, + 1263, 1246, 1301, 1352, 0, 0, 0, 1244, 0, 1294, + 0, 1259, 1255, 0, 0, 0, 0, 0, 1335, 1273, + 1299, 1334, 1271, 1297, 1270, 1296, 1272, 1298, 0, 1264, + 0, 1770, 839, 0, 0, 0, 345, 345, 838, 718, + 1248, 1303, 0, 0, 925, 0, 0, 927, 928, 0, + 930, 402, 422, 738, 798, 0, 0, 815, 777, 0, + 471, 0, 477, 480, 0, 0, 484, 485, 483, 472, + 1167, 509, 558, 0, 0, 788, 0, 628, 0, 451, + 0, 486, 0, 0, 455, 151, 150, 0, 0, 0, + 733, 737, 735, 734, 736, 731, 0, 722, 178, 2330, + 0, 0, 0, 0, 560, 1350, 0, 762, 806, 0, + 1769, 712, 0, 356, 575, 0, 0, 0, 451, 567, + 0, 456, 461, 462, 467, 0, 550, 537, 0, 538, + 0, 0, 564, 1422, 0, 568, 570, 0, 0, 0, + 1110, 1127, 1128, 0, 0, 1167, 0, 0, 0, 0, + 613, 345, 1791, 345, 345, 1210, 0, 876, 1039, 1038, + 1037, 605, 0, 1041, 710, 0, 566, 345, 0, 987, + 967, 986, 966, 968, 0, 965, 963, 964, 2150, 1999, + 2009, 2129, 2075, 2106, 0, 0, 1957, 0, 0, 2004, + 2551, 0, 0, 0, 0, 2038, 2039, 2020, 0, 2376, + 2025, 0, 0, 0, 1923, 1921, 1918, 0, 1919, 1903, + 0, 0, 1901, 1897, 0, 1928, 2045, 0, 2061, 2058, + 2072, 2106, 1629, 1628, 1627, 1626, 1712, 1708, 1710, 0, + 2556, 0, 1715, 1722, 0, 1704, 0, 1736, 1732, 0, + 1733, 0, 0, 1734, 0, 0, 1706, 0, 1722, 0, + 1759, 1643, 0, 0, 2050, 1976, 1977, 1974, 1643, 2197, + 2050, 224, 0, 0, 1554, 1539, 0, 1540, 1546, 0, + 0, 0, 0, 1582, 1575, 1125, 1133, 0, 0, 0, + 499, 0, 1167, 0, 0, 0, 1085, 1085, 0, 1167, + 558, 783, 782, 785, 780, 784, 1456, 0, 648, 649, + 663, 1254, 0, 1307, 1261, 0, 1571, 288, 0, 678, + 0, 0, 290, 366, 368, 291, 292, 295, 347, 307, + 300, 0, 0, 0, 1250, 0, 1305, 1257, 1328, 1235, + 1291, 0, 0, 848, 0, 0, 0, 0, 1329, 1236, + 1292, 0, 0, 0, 0, 1571, 0, 0, 0, 0, + 0, 0, 0, 1465, 0, 1281, 346, 837, 836, 347, + 385, 1275, 0, 926, 931, 932, 929, 0, 391, 399, + 423, 132, 0, 0, 1201, 1201, 0, 778, 0, 0, + 468, 481, 0, 558, 516, 0, 474, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 725, 724, 173, 0, 451, 0, 677, 0, 756, + 757, 751, 753, 0, 764, 768, 834, 0, 0, 567, + 453, 0, 0, 1528, 452, 0, 0, 464, 0, 554, + 538, 550, 0, 551, 0, 555, 0, 1415, 0, 0, + 0, 0, 1163, 0, 1169, 0, 1121, 1092, 1164, 0, + 1762, 0, 0, 0, 0, 617, 1202, 866, 868, 717, + 1044, 0, 1048, 345, 969, 2077, 1952, 0, 0, 0, + 0, 2015, 0, 2016, 2043, 2042, 2022, 2026, 0, 2023, + 2024, 1920, 1924, 1922, 1905, 2047, 0, 1643, 2074, 1755, + 0, 1758, 0, 0, 1714, 0, 0, 1716, 0, 0, + 1718, 1720, 0, 0, 0, 0, 0, 0, 2183, 0, + 2276, 2525, 2435, 0, 1671, 1673, 1676, 1678, 1677, 1679, + 1675, 1684, 0, 1608, 0, 1607, 2098, 1764, 0, 0, + 0, 1077, 0, 1579, 1045, 0, 345, 1083, 558, 518, + 2386, 519, 1082, 1084, 1088, 1088, 0, 558, 778, 641, + 0, 0, 271, 676, 0, 0, 299, 349, 361, 0, + 1571, 0, 0, 846, 855, 855, 843, 0, 0, 862, + 1238, 721, 0, 0, 267, 1260, 1256, 0, 0, 1467, + 1468, 0, 0, 0, 0, 0, 345, 934, 0, 425, + 432, 403, 408, 1459, 0, 1459, 0, 405, 409, 1459, + 404, 1459, 401, 402, 0, 1201, 0, 1198, 1197, 776, + 0, 507, 581, 475, 0, 527, 0, 0, 789, 0, + 0, 453, 536, 0, 496, 495, 491, 490, 492, 493, + 494, 488, 487, 0, 677, 852, 356, 1422, 719, 0, + 0, 690, 0, 754, 759, 758, 1459, 763, 0, 0, + 0, 677, 0, 563, 538, 453, 536, 457, 467, 540, + 0, 541, 556, 550, 554, 552, 553, 0, 0, 0, + 567, 1469, 1076, 0, 1168, 0, 0, 0, 0, 0, + 0, 1205, 612, 0, 0, 616, 607, 677, 1012, 1953, + 0, 1954, 0, 0, 0, 2028, 2027, 0, 2064, 1760, + 0, 0, 1754, 0, 0, 1784, 0, 0, 0, 1723, + 1739, 0, 1719, 1717, 0, 1728, 0, 1730, 1973, 0, + 0, 0, 1680, 0, 2049, 2051, 0, 1975, 0, 1552, + 1762, 0, 1549, 0, 1059, 0, 1060, 1085, 522, 0, + 1091, 1091, 509, 778, 500, 1262, 0, 679, 581, 0, + 302, 0, 279, 1258, 0, 0, 857, 857, 0, 0, + 0, 0, 379, 378, 373, 380, 0, 376, 372, 371, + 374, 0, 1461, 0, 1462, 1463, 1466, 387, 400, 0, + 430, 0, 428, 427, 429, 0, 416, 0, 0, 0, + 0, 0, 0, 390, 421, 1196, 1200, 1199, 0, 0, + 476, 0, 478, 513, 514, 515, 0, 479, 523, 524, + 0, 786, 0, 791, 0, 0, 0, 677, 535, 701, + 0, 0, 0, 1416, 0, 0, 561, 0, 765, 766, + 761, 0, 0, 713, 1422, 550, 0, 538, 465, 0, + 438, 554, 556, 0, 1419, 0, 569, 0, 356, 1167, + 1170, 1165, 1381, 0, 0, 615, 614, 707, 1955, 2031, + 2017, 2044, 2029, 2060, 0, 0, 0, 1753, 1756, 0, + 1787, 0, 0, 0, 0, 1773, 0, 1721, 0, 0, + 1729, 0, 0, 0, 1674, 0, 0, 1541, 1551, 1078, + 0, 0, 1088, 0, 778, 0, 1080, 1079, 516, 502, + 1571, 296, 348, 0, 0, 0, 853, 856, 844, 845, + 864, 863, 723, 1571, 0, 0, 369, 0, 0, 426, + 435, 0, 433, 406, 411, 0, 415, 413, 412, 407, + 410, 0, 506, 0, 0, 0, 0, 525, 0, 526, + 557, 0, 790, 0, 0, 0, 703, 851, 0, 0, + 451, 677, 755, 760, 0, 0, 1417, 554, 538, 550, + 0, 0, 542, 1083, 1083, 556, 436, 1420, 1421, 0, + 556, 1093, 1380, 1379, 1621, 0, 0, 2512, 2277, 2484, + 0, 2062, 2065, 2063, 2057, 0, 0, 1785, 1786, 1771, + 0, 0, 1775, 1738, 1751, 1682, 0, 1681, 2052, 2053, + 1762, 345, 1091, 0, 504, 520, 527, 272, 1571, 847, + 0, 268, 0, 377, 375, 1464, 431, 0, 414, 768, + 580, 532, 0, 531, 0, 529, 528, 787, 792, 0, + 677, 841, 1422, 691, 767, 0, 556, 550, 554, 0, + 539, 0, 1085, 1085, 440, 0, 1762, 1363, 1621, 1362, + 1364, 1372, 1369, 1371, 1370, 1368, 1208, 1209, 0, 2069, + 2068, 2067, 2071, 2070, 1757, 0, 1774, 1777, 0, 0, + 0, 1783, 1776, 1778, 0, 1749, 1683, 1548, 1061, 1081, + 0, 778, 280, 854, 0, 434, 0, 530, 534, 533, + 677, 702, 1418, 771, 439, 554, 556, 1083, 543, 545, + 544, 356, 1067, 0, 1373, 1367, 1606, 1593, 0, 0, + 0, 0, 1780, 1781, 1782, 1779, 0, 521, 505, 0, + 0, 704, 773, 0, 769, 772, 774, 775, 556, 437, + 1085, 556, 1365, 1621, 0, 0, 2066, 0, 0, 370, + 0, 739, 0, 441, 546, 1762, 1366, 0, 0, 0, + 1750, 0, 770, 1068, 0, 0, 1772, 771, 0, 0, + 0, 1206, 1207, 740 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - 0, 473, 474, 475, 475, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 477, - 478, 478, 478, 479, 479, 480, 480, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 482, 482, 482, 482, - 482, 482, 483, 484, 484, 485, 485, 486, 486, 486, - 486, 487, 487, 487, 487, 487, 487, 488, 489, 490, - 490, 491, 491, 491, 491, 492, 492, 493, 493, 494, - 494, 494, 494, 494, 494, 495, 495, 495, 495, 496, - 496, 496, 497, 497, 497, 497, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 499, 499, 500, - 500, 501, 501, 502, 502, 502, 502, 503, 503, 503, - 503, 504, 504, 504, 504, 504, 504, 504, 505, 505, - 505, 506, 506, 507, 507, 508, 508, 508, 508, 509, - 509, 510, 510, 511, 511, 512, 512, 512, 512, 512, - 512, 512, 513, 514, 514, 515, 515, 516, 517, 517, - 517, 517, 517, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 519, 519, 520, 520, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 522, 522, 523, 523, 523, 524, 524, 525, 525, - 526, 526, 526, 526, 527, 528, 528, 529, 529, 530, - 530, 530, 530, 531, 531, 532, 532, 532, 532, 533, - 533, 534, 534, 534, 535, 535, 536, 536, 537, 537, - 537, 538, 539, 539, 540, 540, 540, 540, 541, 541, - 542, 542, 543, 543, 544, 544, 545, 545, 545, 546, - 546, 547, 547, 548, 548, 548, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 548, 549, 549, 550, - 550, 551, 551, 552, 552, 553, 553, 554, 555, 555, - 555, 555, 555, 556, 556, 557, 558, 558, 558, 558, - 558, 558, 559, 559, 559, 559, 559, 559, 559, 559, - 560, 560, 561, 561, 562, 562, 563, 563, 564, 564, - 564, 565, 565, 566, 567, 567, 568, 568, 569, 569, - 569, 569, 570, 570, 570, 570, 570, 570, 570, 570, - 571, 571, 572, 572, 572, 572, 573, 574, 574, 574, - 575, 575, 575, 575, 575, 575, 575, 576, 576, 577, - 577, 577, 577, 577, 577, 577, 578, 578, 579, 579, - 580, 580, 581, 582, 582, 582, 582, 583, 583, 584, - 584, 585, 585, 586, 586, 586, 586, 586, 587, 588, - 589, 589, 589, 589, 589, 590, 590, 591, 591, 592, - 593, 593, 594, 594, 595, 595, 595, 596, 596, 596, - 596, 597, 597, 597, 597, 598, 598, 599, 599, 600, - 601, 601, 602, 602, 603, 604, 604, 604, 605, 605, - 606, 607, 607, 608, 609, 609, 610, 610, 611, 611, - 612, 612, 613, 613, 614, 614, 614, 614, 614, 614, - 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, - 616, 616, 616, 616, 617, 617, 618, 618, 619, 619, - 620, 620, 621, 621, 622, 622, 623, 623, 624, 624, - 625, 625, 626, 627, 627, 628, 628, 629, 629, 630, - 630, 631, 631, 631, 631, 632, 633, 633, 634, 635, - 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, - 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, - 635, 635, 635, 635, 635, 636, 637, 637, 637, 637, - 638, 638, 639, 639, 640, 640, 641, 641, 642, 642, - 643, 644, 644, 645, 645, 645, 645, 646, 647, 648, - 649, 649, 650, 650, 651, 651, 652, 652, 653, 653, - 653, 654, 654, 654, 654, 655, 655, 656, 657, 657, - 658, 658, 659, 659, 660, 660, 661, 661, 662, 663, - 664, 665, 665, 666, 666, 667, 667, 668, 668, 669, - 669, 670, 670, 671, 671, 671, 671, 671, 672, 673, - 673, 674, 674, 674, 675, 675, 676, 676, 676, 676, - 676, 677, 677, 678, 678, 679, 680, 680, 681, 681, - 682, 683, 683, 684, 684, 685, 685, 686, 686, 687, - 687, 687, 688, 688, 688, 688, 689, 689, 690, 690, - 691, 691, 691, 691, 691, 691, 692, 692, 693, 693, - 694, 695, 695, 696, 697, 697, 697, 697, 698, 699, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, - 700, 700, 700, 700, 700, 700, 701, 702, 702, 703, - 703, 704, 704, 704, 704, 704, 704, 705, 706, 706, - 707, 708, 708, 709, 709, 710, 710, 710, 710, 711, - 711, 712, 713, 713, 714, 714, 714, 714, 714, 715, - 715, 716, 716, 717, 717, 717, 718, 718, 719, 720, - 720, 721, 721, 722, 722, 723, 723, 724, 724, 725, - 726, 727, 727, 727, 727, 727, 727, 727, 727, 727, - 727, 727, 727, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 729, 729, 729, 729, - 729, 729, 729, 730, 730, 730, 731, 731, 732, 732, - 733, 733, 734, 734, 735, 736, 736, 736, 737, 737, - 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, - 737, 737, 737, 737, 737, 738, 738, 738, 738, 738, - 738, 738, 738, 738, 738, 738, 738, 738, 738, 739, - 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, - 739, 740, 740, 741, 741, 741, 741, 741, 741, 741, - 742, 742, 743, 743, 743, 743, 743, 743, 744, 744, - 744, 744, 744, 744, 744, 744, 745, 745, 746, 746, - 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, - 747, 747, 747, 747, 747, 747, 748, 748, 749, 749, - 750, 751, 751, 752, 752, 752, 752, 752, 753, 753, - 754, 754, 754, 754, 755, 755, 755, 755, 755, 755, - 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, - 756, 756, 757, 757, 758, 758, 759, 760, 760, 761, - 761, 762, 762, 763, 764, 764, 765, 765, 765, 766, - 766, 766, 767, 767, 767, 767, 767, 768, 768, 769, - 769, 770, 770, 771, 771, 772, 772, 773, 773, 774, - 774, 774, 775, 775, 776, 776, 777, 777, 777, 778, - 778, 778, 779, 779, 779, 780, 780, 781, 781, 782, - 782, 783, 783, 784, 784, 784, 784, 785, 785, 786, - 786, 787, 787, 787, 787, 787, 788, 788, 788, 788, - 788, 789, 790, 791, 791, 791, 792, 792, 792, 793, - 794, 794, 794, 794, 795, 795, 796, 797, 797, 798, - 798, 799, 799, 799, 799, 799, 799, 799, 799, 799, - 799, 799, 799, 799, 799, 799, 799, 800, 800, 800, - 800, 800, 801, 801, 802, 802, 803, 803, 804, 805, - 805, 806, 807, 807, 808, 808, 809, 809, 810, 810, - 811, 811, 812, 812, 812, 812, 813, 813, 814, 814, - 815, 816, 817, 817, 818, 818, 819, 819, 819, 820, - 820, 820, 821, 822, 822, 823, 824, 824, 824, 824, - 825, 826, 826, 826, 826, 827, 827, 828, 828, 828, - 829, 829, 830, 831, 831, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 833, 833, 834, 834, - 835, 835, 835, 835, 836, 836, 836, 836, 836, 836, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 837, - 838, 838, 839, 839, 840, 840, 840, 840, 840, 841, - 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, - 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, - 841, 842, 843, 843, 844, 844, 845, 845, 845, 845, - 846, 847, 847, 848, 849, 849, 849, 849, 849, 849, - 850, 850, 851, 852, 852, 852, 853, 853, 854, 854, - 854, 854, 854, 855, 855, 856, 856, 856, 856, 857, - 857, 857, 858, 859, 859, 860, 861, 861, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 863, 863, 863, 864, 864, 864, 864, 864, - 865, 865, 865, 866, 866, 867, 867, 867, 867, 868, - 868, 868, 868, 869, 870, 871, 871, 872, 872, 873, - 873, 873, 874, 874, 874, 874, 874, 874, 874, 875, - 875, 876, 876, 876, 877, 878, 878, 879, 880, 880, - 881, 882, 882, 882, 882, 882, 882, 882, 883, 883, - 884, 885, 885, 885, 885, 885, 885, 886, 886, 887, - 888, 888, 888, 889, 889, 890, 890, 890, 890, 890, - 891, 891, 892, 892, 892, 892, 892, 893, 893, 894, - 894, 895, 895, 896, 896, 897, 897, 898, 898, 899, - 899, 899, 899, 900, 900, 900, 900, 900, 900, 900, - 900, 900, 901, 901, 902, 903, 903, 904, 904, 904, - 905, 906, 906, 907, 907, 907, 907, 908, 908, 909, - 909, 910, 910, 910, 910, 911, 912, 912, 913, 913, - 913, 913, 913, 914, 914, 915, 915, 916, 917, 917, - 917, 918, 918, 918, 919, 919, 920, 921, 921, 922, - 923, 923, 924, 924, 924, 924, 924, 924, 924, 924, - 925, 925, 926, 926, 926, 927, 928, 928, 929, 929, - 930, 931, 931, 932, 933, 934, 934, 934, 934, 934, - 935, 935, 935, 936, 936, 937, 937, 938, 938, 938, - 938, 938, 938, 938, 938, 939, 939, 940, 940, 940, - 940, 940, 940, 940, 941, 941, 941, 942, 942, 943, - 944, 944, 945, 945, 946, 946, 946, 946, 946, 946, - 946, 946, 946, 947, 947, 948, 948, 948, 949, 949, - 950, 950, 951, 951, 952, 953, 953, 954, 954, 955, - 955, 955, 955, 956, 956, 957, 957, 957, 958, 958, - 959, 959, 960, 961, 961, 961, 962, 963, 963, 964, - 964, 965, 965, 966, 966, 967, 967, 967, 967, 967, - 968, 969, 970, 971, 972, 972, 973, 973, 974, 974, - 975, 975, 976, 977, 977, 977, 977, 978, 978, 979, - 979, 980, 980, 981, 981, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 983, 983, 983, 983, 983, - 983, 984, 984, 984, 984, 985, 985, 986, 986, 986, - 986, 986, 987, 987, 987, 987, 988, 988, 989, 989, - 990, 990, 990, 990, 991, 991, 992, 992, 992, 993, - 994, 994, 995, 995, 996, 997, 997, 998, 998, 999, - 999, 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1003, 1003, - 1004, 1005, 1005, 1006, 1006, 1007, 1007, 1007, 1008, 1008, - 1009, 1009, 1009, 1009, 1010, 1010, 1011, 1011, 1012, 1012, - 1012, 1012, 1012, 1012, 1013, 1013, 1013, 1014, 1014, 1014, - 1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1016, 1016, - 1017, 1017, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, - 1018, 1018, 1018, 1019, 1019, 1020, 1020, 1021, 1021, 1022, - 1023, 1024, 1024, 1025, 1025, 1026, 1027, 1028, 1028, 1028, - 1028, 1028, 1028, 1029, 1029, 1030, 1030, 1030, 1030, 1031, - 1032, 1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 1033, - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, - 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, - 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, - 1039, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1043, 1043, 1043, - 1043, 1044, 1045, 1045, 1046, 1046, 1047, 1047, 1048, 1048, - 1048, 1049, 1049, 1049, 1049, 1050, 1050, 1051, 1051, 1052, - 1052, 1053, 1053, 1054, 1055, 1055, 1055, 1056, 1057, 1057, - 1058, 1058, 1059, 1059, 1059, 1060, 1060, 1061, 1061, 1061, - 1061, 1061, 1062, 1062, 1062, 1063, 1063, 1064, 1065, 1065, - 1065, 1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, - 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1069, 1069, 1070, - 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1072, 1072, 1073, - 1073, 1073, 1074, 1074, 1075, 1075, 1075, 1076, 1076, 1077, - 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, - 1079, 1080, 1081, 1081, 1082, 1082, 1082, 1082, 1082, 1082, - 1083, 1084, 1085, 1085, 1085, 1086, 1086, 1087, 1088, 1088, - 1089, 1090, 1090, 1091, 1091, 1092, 1092, 1093, 1093, 1093, - 1093, 1094, 1094, 1095, 1095, 1096, 1096, 1097, 1097, 1098, - 1098, 1099, 1099, 1100, 1100, 1100, 1100, 1101, 1101, 1102, - 1102, 1103, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, - 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, - 1111, 1111, 1111, 1111, 1112, 1113, 1114, 1114, 1114, 1115, - 1116, 1116, 1116, 1117, 1117, 1118, 1118, 1118, 1119, 1119, - 1119, 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121, 1121, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125 + -1, 52, 53, 54, 55, 1491, 2410, 2280, 3159, 3160, + 56, 57, 1487, 58, 59, 60, 61, 1410, 62, 993, + 1632, 2425, 63, 2121, 760, 761, 762, 1942, 1943, 2359, + 1944, 1932, 1296, 1769, 1431, 734, 735, 1392, 1432, 65, + 66, 1290, 1923, 67, 68, 69, 1461, 1537, 1462, 1404, + 1678, 4181, 4900, 2972, 2248, 3208, 2973, 2974, 3578, 3579, + 3654, 4915, 4921, 4916, 4917, 70, 1553, 1554, 71, 72, + 3124, 3120, 3699, 4518, 4519, 4752, 570, 2387, 4521, 4522, + 4738, 4739, 4933, 5071, 5072, 2426, 1624, 3202, 3787, 3150, + 4270, 3151, 4271, 3152, 4272, 3136, 3734, 3735, 4215, 3736, + 3153, 4231, 4781, 3154, 2140, 4950, 2467, 1791, 1789, 4765, + 4044, 4045, 5044, 4957, 4958, 4959, 5175, 4233, 4276, 4277, + 4810, 5111, 5112, 3206, 3794, 4282, 4536, 2861, 74, 666, + 1658, 3303, 667, 2470, 605, 668, 2427, 79, 2460, 4952, + 2461, 1512, 2289, 4918, 3283, 80, 1017, 3545, 4605, 4835, + 4836, 81, 222, 82, 1640, 83, 84, 2405, 3143, 85, + 2157, 2878, 86, 87, 2907, 2908, 2909, 88, 3570, 4458, + 1463, 2961, 2962, 2963, 2964, 3600, 89, 1635, 2434, 2435, + 90, 91, 92, 93, 2576, 2577, 94, 2346, 95, 96, + 97, 98, 3634, 4145, 4247, 3003, 3166, 3759, 4245, 99, + 2428, 1648, 2450, 2451, 4257, 4561, 4562, 4563, 4796, 5102, + 4565, 4798, 4980, 4800, 5273, 5274, 4527, 3524, 4058, 101, + 4224, 4225, 4964, 102, 2155, 103, 104, 105, 1608, 2397, + 2398, 3708, 1601, 2390, 2391, 3773, 3774, 106, 3077, 107, + 4121, 4122, 606, 4971, 4906, 5058, 108, 109, 4125, 4126, + 110, 111, 112, 113, 114, 658, 659, 660, 1105, 1106, + 2833, 1057, 115, 2040, 116, 956, 957, 3101, 117, 1183, + 2620, 2621, 4320, 118, 691, 1124, 1125, 2429, 120, 700, + 2596, 702, 1804, 3285, 3286, 3852, 121, 122, 2573, 2599, + 123, 1397, 2131, 2132, 4039, 2430, 607, 1664, 2474, 2856, + 4680, 4681, 4436, 4694, 2786, 3477, 125, 608, 1436, 2204, + 1077, 1078, 2477, 3216, 2100, 2101, 2102, 3811, 2103, 3218, + 2104, 1369, 2105, 1027, 1028, 3224, 3225, 3226, 3807, 3814, + 2419, 4594, 4595, 126, 1434, 2202, 127, 128, 129, 1475, + 878, 1087, 1088, 130, 620, 621, 131, 4757, 132, 1031, + 133, 4603, 134, 135, 725, 726, 1167, 1168, 136, 137, + 2218, 3581, 138, 139, 140, 2997, 2998, 4137, 141, 142, + 1627, 1628, 143, 144, 3042, 3043, 145, 146, 147, 5199, + 5253, 5254, 5255, 3821, 5124, 5201, 1155, 149, 150, 151, + 188, 916, 917, 918, 2431, 4587, 153, 154, 1393, 1394, + 1395, 1396, 2126, 155, 156, 157, 158, 159, 160, 161, + 1612, 162, 163, 4731, 164, 165, 1572, 166, 1326, 1327, + 167, 168, 564, 778, 1330, 1336, 169, 670, 1118, 1119, + 1120, 1771, 170, 1163, 959, 671, 1113, 172, 672, 2084, + 2808, 3489, 3490, 3491, 3494, 4421, 4018, 673, 2804, 175, + 1811, 2582, 2585, 2800, 674, 2813, 2814, 2815, 3497, 675, + 693, 1020, 2483, 676, 1257, 180, 181, 182, 787, 781, + 782, 184, 1916, 2748, 709, 1343, 747, 748, 795, 3462, + 2052, 2053, 2075, 2076, 1352, 1353, 2065, 2067, 2788, 2068, + 2796, 2058, 3995, 4664, 4665, 4666, 4667, 4668, 4669, 4404, + 2071, 2072, 1355, 1356, 1357, 2080, 185, 2752, 3441, 3442, + 3443, 3971, 3972, 3986, 3982, 4388, 4650, 3444, 1153, 1363, + 4396, 5225, 3445, 4639, 4640, 4852, 3990, 3453, 3485, 3190, + 3191, 3192, 3446, 5024, 5025, 5222, 5223, 4854, 4855, 2106, + 1708, 1059, 1258, 1060, 1720, 1259, 1692, 1062, 1260, 1261, + 1262, 1065, 1263, 1264, 1265, 1068, 1684, 1266, 1267, 1702, + 1717, 1718, 1331, 4856, 1269, 1270, 1271, 3448, 1272, 3925, + 4352, 4341, 2680, 2681, 1939, 3921, 3386, 1911, 2738, 4673, + 4874, 4875, 3425, 3950, 4368, 4637, 5016, 5131, 5132, 1273, + 1274, 1275, 2735, 1907, 881, 1276, 3710, 1909, 2674, 2760, + 2761, 1814, 1834, 2627, 2643, 2644, 2654, 3345, 2662, 2667, + 3373, 3374, 2675, 2704, 1277, 2629, 2630, 3329, 1836, 1278, + 1319, 1951, 1370, 1831, 2699, 1286, 1279, 1280, 1805, 771, + 4646, 1109, 837, 2989, 2031, 920, 706, 1281, 1282, 1283, + 1284, 1468, 852, 1080, 1081, 560, 831, 854, 2965, 561, + 562, 833, 2036 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -4583 +static const int yypact[] = +{ + 9436, 810, 12815, -4583, -4583, 810, -4583, 65551, 434, 654, + 1021, 165, 13899, 65999, 73167, 900, 828, 14963, 810, 73167, + 1568, 50319, 62415, 845, 73167, 1129, 858, 50319, 73167, 1778, + 73615, 1121, 1272, 886, 74063, 66447, 61071, 1442, 73167, 1247, + 1349, 74511, 66895, 1184, 67343, 858, 46763, 326, 1137, 74959, + 73167, 2388, 1699, 1312, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 434, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 1645, + -4583, 957, 1831, 1433, 978, 1140, -4583, -4583, -4583, 58831, + 73167, 73167, 73167, 1564, 73167, 1419, 73167, 320, 58831, 54799, + 67791, 1671, 1481, 43173, 75407, -4583, 73167, 53007, 73167, 73167, + 75855, 73167, 73167, 73167, 1361, 63759, 73167, 1607, 73167, 73167, + 53455, 76303, 1754, 1224, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 73167, 15410, 1129, -4583, -4583, 2388, + 73167, 1738, 58831, 73167, 1546, 76751, 1631, 73167, -4583, 73167, + 1648, 77199, 443, 1956, 54799, 2009, 43622, 1747, 73167, 73167, + 54799, 77647, 78095, 78543, 73167, 73167, -4583, -4583, 1741, 73167, + 73167, -4583, 1878, 55247, 1535, 1904, 2098, 2004, 1278, -4583, + 68239, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 57935, + 828, -4583, -4583, 1862, 59279, 73167, 2028, -4583, -4583, 78991, + 94153, 1838, -4583, 459, 59727, 55695, 2146, 1833, 44071, 2229, + -4583, -4583, 56143, -4583, -4583, -4583, -4583, -4583, 79439, -4583, + 79887, 1927, 2028, -4583, 94587, 56591, -4583, 2079, 80335, 80783, + 81231, -4583, 1819, 1515, 1403, 39108, -4583, -4583, -4583, 434, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 191, 1820, + 209, 206, 293, -4583, -4583, 208, 213, 215, 191, 2287, + 2287, -4583, 73167, -4583, -4583, 1820, 36, 1849, 1849, 1849, + 2103, -23, -4583, 1849, 1984, -4583, -4583, -4583, -4583, 67343, + -4583, 1902, 68687, 73167, 69135, 1129, 1909, 2356, 1917, -4583, + -4583, -4583, -4583, -4583, 1977, 73167, 73167, 73167, -4583, -4583, + 2365, 1992, 2206, 1946, -4583, -4583, -4583, 2159, 2167, 2213, + 98, 1129, 2066, -4583, 2325, -4583, 2240, 27638, 27638, 1129, + 69583, 81679, 258, 57935, 1129, 70031, 2102, 1200, 2255, -4583, + -4583, -4583, 650, -4583, 2513, 2115, 2349, 1946, 1224, 40460, + -4583, 2120, 785, 67343, -4583, -4583, -4583, 332, 2425, 29498, + 73167, 2126, -4583, 2124, 2126, 2142, 2161, 1433, -4583, 9436, + 73167, 1421, 1421, 2552, 1421, 1877, 1905, -4583, 2007, -4583, + 2458, 2426, 67343, 2170, 214, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 1476, 2176, + 785, -4583, 241, -4583, 1492, 2179, 1487, 967, -4583, -4583, + 234, 73167, 207, 2220, 70479, 6278, 2241, 785, 2245, -4583, + -4583, -4583, 2395, 1071, -4583, -4583, -4583, -4583, 2533, 2579, + 6185, 306, 70927, -4583, -4583, -4583, -4583, 73167, 73167, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 2259, 1077, + -4583, -4583, 2261, 2583, 2472, 776, 2560, 2430, 1031, 2485, + 1618, 2608, 9287, 1190, 1651, 889, 68687, 73167, 2574, 2612, + 7016, 1425, 709, 2503, 1202, 2560, 2633, 2476, 1031, 2657, + 9008, 73167, -4583, 2588, 2699, 677, -4583, 108, -4583, 2406, + 2553, 52, 2585, 58831, 2362, -4583, -4583, 73167, -4583, -4583, + 95021, 2434, -4583, 678, 58831, -4583, 2582, 2433, 44520, 73167, + -4583, -4583, 73167, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + 2518, 2709, 73167, 95021, -4583, 2656, 73167, 73167, -4583, 2401, + -4583, -4583, -4583, -4583, 1849, 73167, 2403, 2806, 95021, 2621, + 114, 73167, 1592, 2838, 73167, 2625, 1592, 2441, 82127, -4583, + -4583, 1592, -4583, -4583, -4583, 73167, 73167, 2411, 1503, 2613, + 2723, 1592, 2630, 2842, 2843, 2637, 2491, 2639, 2124, 2809, + 2614, 903, 1204, 175, 1952, 1592, 2474, 82575, 83023, 73167, + 2475, 73167, 2821, 58831, 73167, 2746, -4583, 2603, -4583, -4583, + 1134, -4583, -4583, -4583, -4583, -4583, 2760, -4583, 155, 229, + 2761, 2440, 2768, -4583, -4583, -4583, 2496, -4583, 2496, 2496, + 2450, 2450, 2627, 2452, 2777, -4583, -4583, -4583, 2154, 2496, + 2450, -4583, 95889, -4583, 1561, 1611, -4583, 182, -4583, 2890, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 2459, -4583, + 966, 1993, -4583, -4583, 2494, -4583, 2784, 185, -4583, 2786, + -4583, 2463, 83471, -4583, 83919, 84367, 2791, 269, -4583, 54799, + 2792, 2463, 2795, 229, 2797, -4583, 914, 2781, 2798, 182, + 2799, 1954, 2463, 58383, 2801, 288, -4583, 2807, 316, -4583, + 2808, 2688, 29498, -4583, 2580, -4583, 1137, -4583, 1737, -4583, + 49423, -4583, 1403, 1820, -4583, 73167, 1820, 73167, 1820, 73167, + 1820, 73167, 1820, 73167, 73167, 73167, 1820, -4583, -4583, -4583, + 73167, 2489, 73167, 73167, -4583, -4583, -4583, 62863, 54799, 63311, + -4583, 73167, -4583, 89, 1129, -4583, -4583, -4583, 1289, -4583, + 1946, -4583, 95021, 2923, 54799, 2821, -4583, 1764, -4583, -4583, + -4583, -4583, -4583, -4583, 2740, 73167, 2812, 2815, 62863, 54799, + -4583, 84815, 57935, 2697, 2498, -4583, -4583, -4583, -4583, -4583, + 2008, 2961, 192, 2968, 29498, 2507, 192, 192, 2509, 2824, + -4583, -4583, -4583, 244, 2515, 2516, -4583, 199, 199, -4583, + 2517, 2519, -4583, 220, 2520, 2523, 2980, 2987, 225, 2526, + 2527, 2529, 2154, 192, 29498, -4583, 2531, 199, 2534, 2536, + 2537, 3000, 2539, -4583, 3003, 2542, 318, 338, 2543, 2544, + -4583, 2517, -4583, 245, 2545, 2554, 2555, 2556, 2559, 2561, + 2562, 2563, 29498, 29498, 29498, -4583, 26243, 785, 1129, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, 262, 5583, -4583, + 2589, -4583, -4583, 2742, -4583, -4583, 29498, -4583, -4583, 87, + -4583, 264, -4583, -4583, -4583, 785, 2823, 2564, -4583, -4583, + 276, 2565, -4583, 376, -4583, -4583, -4583, -4583, -4583, -4583, + 57039, 2997, -4583, 349, 1129, 108, 1416, 2939, 48527, 48975, + -4583, -4583, 2814, -4583, 73167, -4583, -4583, 29498, 46315, -4583, + 785, 130, -4583, -4583, -4583, -4583, 1829, -4583, -4583, -4583, + 434, 13029, 1830, 2126, 73167, 73167, 3002, -4583, -4583, -4583, + 2124, -4583, -4583, 1433, 1433, 29498, 1433, 235, 1145, 28103, + 29498, 2881, 2779, 254, 742, 2883, -4583, 2782, 1877, 1905, + 67343, 73167, 85263, 2694, 29498, 2658, 2660, 2708, 47659, -4583, + 785, 2661, 2628, 2664, 2716, 51215, 2586, 2666, 2670, 2726, + -4583, 2840, -4583, -4583, 2672, 2741, 2678, 85711, -4583, -4583, + 864, -4583, -4583, -4583, 864, -4583, 2611, 1404, 976, 1354, + 2680, 255, 1127, 2986, -4583, 201, -4583, -4583, 2733, -4583, + 6034, 73167, 2926, 9835, 2810, 306, 2811, 2730, -4583, -4583, + 2857, 2693, 73167, 2700, 2833, 306, 802, 86159, -4583, -4583, + -4583, -4583, -4583, -4583, 4609, 25374, -4583, -38, 2702, 2681, + 2713, 73167, 60175, 350, 2828, 2829, 1682, 2097, 197, 2763, + 73167, 1551, 2836, 73167, 2632, 2712, 2717, 2928, 2634, 2038, + 3024, 2638, -4583, -4583, -4583, 1396, 1804, 2827, -4583, 2929, + 2966, 7801, 2704, 2705, 92851, -4583, 2735, 579, 44969, 73167, + 73167, 2736, 2744, 2743, 2745, 602, 3027, 1397, 2747, -4583, + -4583, -4583, 1397, 73167, 2748, 2749, 73167, 95889, 306, -4583, + 3081, 306, 306, 1765, 3085, 2753, 400, 2900, 81, 1592, + 2638, 1716, -4583, 2755, 2756, 279, -4583, 2876, 2769, 2770, + 2822, 1129, -4583, -4583, 2772, 2844, 2773, 631, -4583, -4583, + 2771, 67343, 2877, 2878, 178, 1287, 2638, -4583, 2776, 2778, + 2634, 2634, 73167, 73167, 73167, 73167, 73167, 195, 3123, 3125, + 2780, 161, 2837, 2706, -4583, 1397, 53903, 2785, -4583, 1397, + 73167, 2787, 1512, 2638, 1692, 110, -4583, -4583, -4583, 1224, + -4583, 73167, -4583, 73167, -4583, 2970, 95021, 2913, 2978, -4583, + 2752, -4583, 2981, 306, -4583, 73167, 73167, 2982, 2925, 2932, + 930, 95021, 2933, 2994, -4583, 2995, 2996, 2804, 2775, 2818, + 48093, -4583, 2411, 2739, 3177, 3072, 73167, 51215, -4583, 3194, + 864, -4583, 95021, 2955, 3079, -4583, 73167, 2974, 41, -4583, + 3115, 2816, -4583, -4583, 987, 73167, 246, 2800, -4583, -4583, + 3084, 54799, 1466, 3086, 1129, 2817, 3087, 2967, 1129, 54799, + 3006, 73167, 73167, 73167, 73167, -4583, -4583, 2975, 711, 122, + -4583, 53903, 2989, -4583, 73167, 2990, 1716, 2991, 3203, 94, + 1849, 86607, 3088, -4583, 87055, 2783, 3208, 95021, 3032, -4583, + 2063, -4583, 2907, -4583, 58831, -4583, -4583, 58831, -4583, -4583, + -4583, 95021, 73167, -4583, 2788, -4583, -4583, 29498, -4583, -4583, + -4583, 2287, -4583, 95021, 2496, 2496, -4583, -4583, 3214, 2863, + 2865, 2287, -4583, 2287, -4583, 95021, -4583, 2802, 2803, 2287, + 2868, 2872, 2882, -4583, 2805, 2885, 2287, -4583, -4583, 2074, + -4583, -4583, 58831, 58831, -4583, 54799, 54799, 3108, 288, 3119, + 2854, 3121, 2860, 44969, 44969, -4583, 442, 54799, 73167, -4583, + 73167, -4583, -4583, -4583, -4583, 95021, 95021, -4583, 54799, 53903, + 3129, 3130, 229, 73167, 73167, -4583, 73167, 73167, -4583, 73167, + 73167, 1843, 87503, 1403, 57487, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 73167, -4583, 73167, -4583, 73167, -4583, 73167, + -4583, 73167, -4583, -4583, -4583, 73167, -4583, 73167, 1844, -4583, + -4583, 1863, 121, 73167, 73167, 328, 58831, 73167, 3016, 73167, + 73167, 73167, 73167, 73167, 2889, 2565, 563, -4583, 1169, 450, + 67343, 3023, -4583, -4583, 1864, 2388, 1239, 73167, 1230, 1977, + -4583, -4583, 63311, 62415, 3117, 96, 73167, -4583, -4583, 4789, + 29498, 785, 27173, -4583, -4583, 13029, 2855, 29498, 29498, 2820, + 2287, 2287, -4583, 997, 29498, 29498, 29498, 2287, 2287, 4231, + 29498, 44969, 29498, 33683, 23540, 29498, 29498, 26708, -4583, 29498, + 3040, 34607, 29498, 1416, 3041, 29498, 1416, 4231, 3274, 3274, + 1824, 6368, 2825, 785, -4583, 2287, 1105, -4583, 416, 95021, + 29498, 29498, 29498, 29498, 51215, 2902, 240, 73167, 29498, 2826, + 1221, -4583, 29498, -4583, 2831, 29498, 2912, 805, 29498, 29498, + 29498, 29498, 29498, 29498, 29498, 29498, 29498, -4583, 35957, 418, + 3133, 3148, 33, 410, 71375, 27638, 3143, 22608, -4583, 193, + 3143, -4583, -4583, -4583, 73167, 2997, -4583, -4583, 2917, -4583, + -4583, -4583, -4583, -4583, 265, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 2839, -4583, -4583, -4583, -4583, 2839, -4583, 2841, + 11459, 2845, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 3134, 3136, + 229, 73167, 332, 64207, -4583, 29498, -4583, 1865, 2851, -4583, + 3106, -4583, 2850, -4583, 9364, 3106, -4583, -4583, 302, 2973, + 3118, 3064, -4583, -4583, -4583, 2861, 13029, -4583, 1910, 13029, + 1938, -4583, -4583, -4583, -4583, -4583, -4583, 1270, -4583, 73167, + 963, 2881, 742, 2922, 1073, 3299, 73167, -4583, 40910, 1873, + 54799, 73167, 73167, 3061, -4583, 3283, -4583, 95889, -4583, 2869, + -4583, 95455, 91535, -4583, -4583, 585, -4583, 921, 54799, -4583, + 73167, 73167, -4583, 51215, 54799, 73167, 73167, -4583, 54799, 73167, + 73167, -4583, -4583, -4583, -4583, -4583, 49871, 850, 62415, 3001, + 61519, -4583, -4583, 2874, 73167, 2931, 3135, 3137, 1310, -4583, + -4583, 87951, -4583, 3083, 54799, 73167, 73167, 29498, 3090, 73167, + 73167, -4583, 298, 2962, 2963, -4583, 73167, 2964, 3112, 58831, + 2886, 73167, 73167, 95021, 2969, 750, 58831, 2934, 45418, 73167, + 73167, 73167, 73167, 3015, 3199, 95021, 73167, 3147, 1408, 67343, + 174, 1612, 2638, 3104, -4583, 3217, 1215, -4583, 54799, -4583, + 73167, 3095, -4583, -4583, -4583, 71823, 3322, 3007, -4583, -4583, + 88399, -4583, -4583, -4583, 1881, -4583, 54799, 54799, 73167, 10484, + 88847, 1447, 3116, -4583, -4583, 95021, -4583, 73167, 73167, 73167, + 3222, 3150, 73167, 64655, 89295, 89743, 78, 1522, 3151, 73167, + 65103, 3152, -4583, 3042, 73167, -4583, -4583, 51663, 54799, 73167, + 814, 51215, -4583, -4583, 73167, -4583, 3110, 771, -4583, 73167, + 8184, -4583, -4583, 2985, 2999, 73167, 3120, 180, 1832, 2638, + 73167, 73167, 2910, 1887, 54799, 73167, 51215, -4583, 3122, 1065, + 67343, 67343, 54799, 73167, 67343, -4583, 73167, 81679, -4583, 54799, + 1057, -4583, 3063, 54799, 73167, 13282, -4583, -4583, -4583, 306, + -4583, -4583, -4583, -4583, -4583, 73167, 73167, 306, 73167, 73167, + 306, 1365, -4583, 54799, 73167, -4583, -4583, -4583, 54799, 73167, + 73167, -4583, 54799, 2800, 73167, 51215, -4583, 73167, 7535, 73167, + 73167, 73167, 73167, 73167, 73167, 54799, 73167, -4583, -4583, 1283, + 1405, 88, 1269, 718, 73167, 3204, 73167, 90191, 54799, 73167, + 73167, 1129, 73167, 364, -4583, -4583, 3038, -4583, 54799, 1057, + -4583, 11625, 73167, 73167, 3004, 3005, 230, 3080, -4583, -4583, + -4583, -4583, -4583, -4583, 282, 3354, 90639, 282, -4583, 282, + 3184, 2983, 2984, 282, 73167, 73167, -4583, -4583, -4583, -4583, + 3179, 73167, 282, 282, 282, 3093, 3138, 139, 3209, 2942, + 1891, -4583, -4583, 29498, 95021, 73167, -4583, 1906, -4583, 2943, + 711, -4583, -4583, 51215, 73167, 187, 643, 3255, 3140, 60623, + 1087, 3247, 73167, 2992, 73167, 3370, 3028, 67343, 2411, -4583, + 1087, 73167, -4583, 1870, 62415, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 73167, -4583, -4583, 3248, 73167, 29498, 3105, -4583, + 1129, 2411, 2411, 2411, 2411, -4583, -4583, -4583, -4583, 3153, + 1799, -4583, 2945, 2411, 73167, 3066, 3272, 1087, 2958, 3281, + -4583, 1716, 3282, 1285, 73167, 3167, 60623, 2137, 3009, 3185, + 3395, 1849, 1129, 3186, 3174, -4583, 25808, 6583, 3180, 3236, + 57935, 3275, 3277, 3293, -4583, 155, -4583, 3419, -4583, 29498, + 1913, 2993, 182, -4583, -4583, 2998, 2803, 3010, 3012, 3008, + 3011, -4583, 2287, 198, 3013, 1279, 150, 3128, 2287, 3226, + 3018, -4583, 185, -4583, 2463, -4583, 73167, -4583, 73167, 73167, + 73167, 73167, 269, -4583, -4583, 2463, 229, -4583, 3260, 182, + 2463, 3126, 3317, 57935, -4583, 288, -4583, 316, -4583, 3212, + 229, -4583, 3229, 1849, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 1914, -4583, 73167, -4583, 3302, 3303, 3305, 3020, + 3021, 3060, 73167, 3029, 3020, 306, 3020, 2565, 2565, 3020, + 3021, 54351, 3475, 3332, -4583, 3114, 3036, 3342, 137, -4583, + 692, 75, 3266, -4583, -4583, -4583, -4583, 95021, -4583, 54799, + 3076, 73167, 73167, -4583, 100, 3241, 3037, 54351, 3456, 229, + -4583, 58831, -4583, -4583, 95021, 3124, 3139, 58831, 3251, 3101, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, 95021, -4583, 3301, + 73167, 73167, 1918, -4583, -4583, 1776, -4583, 1795, 29498, 181, + -4583, 11966, 1920, 29498, 3050, 3057, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 3058, 3371, -4583, 1928, 1958, 1964, 3069, + 3070, 5235, 3071, 11591, 3073, 3067, 33683, 33683, 26243, 2075, + -4583, 33683, 3074, 3263, 1969, 11479, 3075, 3077, 12061, 28568, + 29498, 28568, 28568, 12326, 3075, 3082, 1970, 51215, 3257, 12364, + 1978, -4583, 29498, 51215, 5493, 29498, -4583, 29498, 3089, -4583, + -4583, 2624, 2624, 2624, 4231, -4583, 3094, -4583, 33683, 33683, + -4583, 2960, 26243, -4583, -4583, 3385, -4583, -4583, 1573, -4583, + 3091, -4583, -4583, 3109, 44969, 6717, 29498, 375, 29498, 2826, + 29498, 3160, 2624, 2624, 2624, 435, 435, 257, 257, 257, + 394, 410, -4583, -4583, -4583, 3096, 3098, 3107, 3276, 3111, + 29498, -4583, 2198, 2218, 73167, 2548, 2725, 2793, -4583, -4583, + -4583, 36858, 3146, 29498, 29498, 29498, 3113, -4583, 2351, 13029, + 84, -4583, 268, 3146, -4583, 1224, 2287, 1105, 49423, -4583, + -4583, 29498, -4583, -4583, -4583, 2124, -4583, -4583, -4583, 13029, + -4583, 2388, 29498, -4583, -4583, 907, 3099, 29498, 1910, -4583, + -4583, 3144, -4583, 29498, -4583, -4583, -4583, 2565, -4583, 3325, + -4583, -4583, -4583, 36858, 3156, 3145, 851, 40009, 3290, -4583, + 73167, -4583, 73167, 109, -4583, 3141, -4583, -4583, -4583, -4583, + -4583, -4583, 91535, 1993, -4583, 95455, -4583, 95455, -4583, 1993, + 3508, -4583, 91535, 1790, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, 54799, 54799, 3309, + 73167, 3310, 3326, 29498, 865, 73167, 3127, 3131, 1474, 3403, + 73167, -4583, 3451, 229, -4583, -4583, 3211, -4583, 13029, -4583, + -4583, -4583, -4583, -4583, 54799, 73167, -4583, 57935, -4583, 73167, + -4583, 95021, -4583, -4583, -4583, 73167, 3172, 73167, -4583, 73167, + 73167, 73167, -4583, -4583, -4583, -4583, -4583, 974, 95021, -4583, + -4583, 73167, 73167, 636, 3219, 3224, 73167, -4583, 1102, 2876, + 11994, 73167, 73167, 73167, 3414, 73167, -4583, -4583, -4583, -4583, + 3358, -4583, -4583, 91535, -4583, 2463, 1245, 3231, 2638, 3373, + -4583, 3476, 3352, -4583, 909, -4583, 73167, 3286, -4583, -4583, + -4583, -4583, 3484, 229, 3487, 229, 73167, 73167, 73167, 73167, + 3292, -4583, -4583, -4583, -4583, 3294, 3415, -4583, 51215, 51215, + 51215, 1979, -4583, -4583, 1129, -4583, -4583, -4583, -4583, -4583, + -4583, 3449, -4583, 2012, -4583, 1583, -4583, -4583, -4583, -4583, + -4583, -4583, 54799, 73167, 12317, 3491, 73167, 73167, 73167, 1706, + -4583, 945, 95021, -4583, 93285, -4583, -4583, 2016, -4583, 3188, + 73167, 3252, 54799, 3230, 3175, 3175, -4583, -4583, 3175, -4583, + -4583, -4583, 3423, 3360, -4583, 309, 3362, 54799, 3242, -4583, + 3264, -4583, -4583, 3265, 1990, 2638, 1716, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, 1010, -4583, -4583, 1375, 301, 2140, 2638, -4583, + 3494, -4583, 3267, -4583, 3268, -4583, -4583, -4583, 3429, 3430, + 3431, 3279, 3280, 3327, 3284, 3287, 3333, -4583, 3291, 3334, + 3295, 3337, 3416, 3304, 229, 95021, 3418, 1129, 3331, 3542, + 229, -4583, 3306, -4583, 3312, -4583, 3648, -4583, 73167, -4583, + 3313, 2152, 2638, -4583, -4583, 54799, 73167, -4583, -4583, -4583, + -4583, -4583, -4583, 95021, 73167, 3485, -4583, -4583, 282, 73167, + 73167, -4583, 3490, 3496, 73167, 3501, -4583, -4583, -4583, -4583, + 231, -4583, -4583, -4583, 3093, 3520, 42263, -4583, 3694, 6388, + 3240, 116, -4583, 51215, 42263, 1879, 2289, 138, 1592, -4583, + 57935, 73167, 57935, -4583, 643, 3352, 73167, 73167, 73167, 3243, + 3238, -4583, -4583, -4583, -4583, 54799, 212, 54799, 2287, -4583, + -4583, 3314, -4583, 73167, 1849, 3710, 3557, -4583, 3175, -4583, + 3672, 2843, 1466, 3396, 1650, 2491, 3612, 2124, 144, 51215, + 3009, -4583, -4583, -4583, -4583, 73167, 73167, 711, 1129, -4583, + 3253, 3249, -4583, 73167, 3565, 73167, 73167, 73167, 73167, 3076, + 3256, 73167, 3258, 95021, 67, 3460, 3464, 2634, 3697, 3589, + 2388, 3009, 3347, 3591, 73167, -4583, 2023, 166, -4583, 1129, + 57935, 92417, 3580, -4583, 5887, -4583, -4583, 1016, 73167, 3568, + -4583, -4583, 2388, -4583, 95021, 2029, -4583, -4583, -4583, 2287, + -4583, -4583, 1698, 1698, 3278, -4583, 3285, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 3270, -4583, -4583, -4583, 288, 3336, + 229, 3338, 229, -4583, -4583, 73167, -4583, 73167, 53903, 229, + -4583, -4583, 73167, -4583, 3598, -4583, -4583, 3408, 3411, 3417, + 73167, 3020, -4583, 3288, 54799, 1260, -4583, -4583, 3483, -4583, + -4583, 67343, 3406, -4583, -4583, -4583, -4583, 3613, 3614, -4583, + -4583, -4583, 247, -4583, -4583, -4583, 54799, 62863, 448, 54799, + -4583, 3549, 3554, -4583, -4583, 3559, 306, -4583, 3567, -4583, + 3570, 3571, -4583, -4583, -4583, 3315, 12636, 29498, -4583, 3638, + 95021, -4583, 7005, -4583, -4583, -4583, 29498, -4583, -4583, -4583, + -4583, -4583, 29498, -4583, 29498, 3616, -4583, 24006, 3770, 3770, + 3318, 95021, 33683, 33683, 33683, 33683, 1636, 2534, 33683, 33683, + 33683, 33683, 33683, 33683, 33683, 33683, 33683, 34148, 384, -4583, + 3506, 29498, 29498, 3628, 3616, -4583, 95021, 3320, 3075, 3323, + 3324, 29498, -4583, -4583, 2031, 35057, 3328, 51215, -4583, 29498, + 11499, 2036, 3364, 12948, 785, 7317, 1129, 29498, 3427, 3504, + 29498, 2040, 29498, 3631, -4583, -4583, -4583, 3330, -4583, -4583, + 95021, 29498, 3340, 3142, 33683, 33683, 3519, -4583, 3771, 29498, + 26243, -4583, 3518, 3367, 41360, -4583, 24472, 3335, 858, 858, + 858, 858, -4583, 73167, 73167, 73167, 37308, 3633, 3343, 36407, + 72271, 3341, 1364, -4583, 72271, 72719, 72271, -4583, 3345, -4583, + 3348, 785, 29498, 3630, 608, 608, 3518, -4583, 29498, 29498, + 29033, 3349, -4583, 3630, 108, 3351, -4583, -4583, 13029, 3350, + -4583, 3355, -4583, 3353, -4583, 3099, 1042, -4583, 7634, 3532, + -4583, -4583, -4583, 3341, 29963, 3498, -4583, -4583, -4583, 3393, + 2041, -4583, -4583, 3741, 3498, -4583, -4583, 2055, 40910, 3156, + 29498, 785, 2057, 1816, -4583, -4583, 91535, -4583, 3428, 2463, + 2463, 853, 3020, 3668, 853, 7893, -4583, -4583, 37758, 73167, + 73167, -4583, 73167, 2071, 1685, 73167, -4583, 73167, -4583, -4583, + -4583, -4583, 3792, -4583, 73167, -4583, -4583, 3420, 3422, 73167, + 73167, 73167, 73167, 3617, -4583, -4583, 2179, -4583, -4583, 54799, + 73167, -4583, -4583, -4583, 374, 2164, 2638, -4583, 3440, -4583, + -4583, -4583, 3634, -4583, 3781, 3455, 73167, 3691, 73167, 3372, + -4583, 1685, 3674, 1594, 2634, 400, 4603, -4583, 86, -4583, + -4583, 3443, -4583, -4583, 73167, -4583, 73167, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 3505, -4583, -4583, -4583, -4583, 51663, + -4583, -4583, 73167, -4583, 51215, 42263, 51215, -4583, 1376, 413, + 2267, 2638, 73167, -4583, 3450, -4583, 3458, 3463, 3521, 1035, + 224, 3471, 3472, 3527, 3375, 3397, 3398, -4583, 51215, 42724, + 3551, 73167, 2463, 3401, 3441, 191, 1129, -4583, -4583, 1129, + 2463, 1129, 73167, 73167, 73167, 51215, -4583, 3819, 3493, 73167, + 73167, 73167, 73167, 3459, -4583, 73167, 73167, 3718, 693, 1965, + 54799, 73167, 73167, 54799, 73167, 73167, 73167, 73167, 73167, 73167, + 3730, 73167, -4583, 3807, 3734, 2129, 3776, 3486, 73167, -4583, + 73167, 1129, 2876, 73167, 73167, -4583, -4583, 3425, 3685, 282, + -4583, 3688, 3690, 282, 282, 3693, 282, -4583, -4583, 1592, + -4583, 231, 73167, -4583, 3353, 1396, 1804, -4583, -4583, -4583, + -4583, -4583, -4583, 2942, -4583, -4583, 2160, 73167, -4583, -4583, + -4583, 73167, 3435, 73167, 73167, 33683, -4583, 1707, 793, 1178, + -4583, 3687, 73167, 2800, -4583, -4583, -4583, 3603, 73167, -4583, + -4583, -4583, -4583, -4583, 72, 3256, -4583, 3715, 60623, 2463, + 54799, 54799, 2463, -4583, 95021, 3444, 3009, -4583, 281, 3522, + 54799, 1466, 1616, 91087, 2817, 3473, 3642, 36858, 1010, -4583, + 3442, 3601, -4583, 3448, 3446, -4583, -4583, 73167, 3352, 53903, + 2078, 1716, 3877, 735, 1819, -4583, 61967, 3636, 3256, 3715, + -4583, -4583, -4583, 3841, 3543, -4583, 2388, 73167, 3076, 3543, + 1129, 73167, 2931, -4583, 91535, 29498, 29498, -4583, 3453, -4583, + 3461, 8497, -4583, 3524, 3454, -4583, -4583, -4583, -4583, -4583, + -4583, 3538, 3465, 73167, -4583, 3462, -4583, 3468, -4583, -4583, + -4583, -4583, -4583, -4583, 73167, -4583, 73167, -4583, 229, -4583, + 3584, -4583, 229, 73167, 73167, 73167, 73167, 3020, 306, -4583, + 3759, 54351, -4583, -4583, 2083, 73167, -4583, -4583, -4583, 3831, + 96, 3774, -4583, -4583, 523, 523, 523, 3731, 523, 523, + 523, -4583, 29498, 13029, -4583, 3470, -4583, 13029, 7950, 13029, + 3628, -4583, 2090, 29498, -4583, 622, 622, 622, 3569, 3777, + -4583, 1659, 3474, 622, 622, 622, 415, 415, 221, 221, + 221, 3770, 384, 13029, 13029, -4583, -4583, 3478, -4583, -4583, + -4583, 3075, -4583, 30428, 3635, 3887, -4583, -4583, -4583, 3514, + 3515, 3480, -4583, 29498, 30893, 3479, 95889, 3675, -4583, 1642, + 29498, 29498, 5202, -4583, 4342, 29498, 95021, 2105, 5202, 426, + 29498, 5320, 5354, 29498, 29498, 4648, 8272, 3489, 29498, 91969, + -4583, -4583, -4583, 2106, 29498, 73167, 73167, 73167, 73167, -4583, + -4583, -4583, 72271, 72719, 72271, 3488, 35507, 24923, 1364, 3500, + 73167, -4583, -4583, 3502, 36858, 3744, 3679, -4583, 36858, 3679, + 1797, 3679, 3752, 3596, 41810, -4583, -4583, 3516, -4583, 3711, + -4583, 22608, -38, 13029, 3932, 3812, 29498, 3525, 3529, 3530, + 13029, 13029, 29498, -4583, 1129, 3812, 1129, -4583, -4583, 44969, + -4583, -4583, -4583, -4583, -4583, 3726, 13029, 27638, -4583, 2388, + 1986, 73167, 785, 583, -4583, 3533, 73167, -4583, 3498, 13029, + -4583, 3597, 2117, -4583, -4583, -4583, -4583, -4583, -4583, 3611, + 62415, 3838, -4583, 29498, 2135, -4583, 3572, 3930, 141, 2147, + 2155, 1685, -4583, 2800, -4583, 1478, 3813, 359, -4583, 229, + -4583, 95021, -4583, 73167, 73167, -4583, -4583, -4583, -4583, 73167, + 2586, -4583, -4583, 73167, 73167, 73167, 73167, -4583, 54799, 73167, + -4583, 73167, -4583, 51215, 2289, 1707, 3825, 3749, -4583, 306, + -4583, 1707, 3750, 191, 73167, -4583, -4583, 2107, -4583, 95021, + 229, 229, -4583, -4583, -4583, -4583, -4583, 3552, 3954, 3632, + 73167, 73167, 73167, -4583, 73167, 54799, 73167, 73167, 2287, 2287, + 95021, 3540, -4583, 2287, 2287, 3544, -4583, 54799, 73167, 73167, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, 3625, -4583, 29498, 3952, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 54799, 73167, 3645, -4583, 3647, -4583, + 1869, -4583, -4583, 73167, 73167, 73167, 73167, 3875, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 73167, -4583, + 73167, -4583, -4583, 1129, 1129, 95021, 229, 229, -4583, -4583, + -4583, -4583, 3816, 282, -4583, 282, 282, -4583, -4583, 282, + -4583, 3573, 391, -4583, 1685, 1571, 3862, -4583, 3874, 29498, + -4583, 1002, 3569, -4583, 3927, 4006, -4583, -4583, -4583, -4583, + 2800, 1849, 3637, 58831, 353, -4583, 3857, 187, 3782, 60623, + 3494, 1639, 3577, 3698, -4583, 2463, 2463, 3639, 73167, 4011, + -4583, -4583, -4583, -4583, -4583, -4583, 54799, 3230, -4583, 3796, + 1009, 3890, 73167, 29498, 3341, -4583, 1691, 3894, -4583, 1129, + -4583, -4583, 3705, 3009, -4583, 2388, 73167, 3794, 60623, 3076, + 2156, -4583, -4583, -4583, 3626, 4005, 2137, -4583, 3494, 3636, + 1227, 73167, -4583, 3629, 4025, -4583, -4583, 3900, 3797, 3599, + -4583, 13029, 13029, 1129, 96323, 5887, 95021, 3907, 73167, 800, + 3878, 229, -4583, 229, 229, -4583, 73167, -4583, 3020, 3020, + 3020, -4583, 3798, -4583, -4583, 3864, -4583, 229, 54351, -4583, + -4583, -4583, -4583, -4583, 523, -4583, -4583, -4583, 13029, -4583, + -4583, -4583, -4583, 8631, 33683, 3910, -4583, 3606, 95021, -4583, + 3607, 2157, 2182, 34607, 3763, -4583, -4583, -4583, 8649, 3660, + 13029, 3714, 3615, 3618, 5202, 5202, 4342, 2184, -4583, 5202, + 29498, 29498, 5202, 5202, 29498, -4583, -4583, 8751, 3802, -4583, + -4583, 8793, -4583, -4583, -4583, -4583, -4583, -4583, -4583, 52111, + 3621, 3257, 72271, 3623, 73167, 1364, 36858, -4583, -4583, 1857, + -4583, 36858, 3882, -4583, 36858, 58831, -4583, 73167, 3627, 73167, + -4583, 84, 31358, 29498, 3663, -4583, -4583, -4583, 3518, -4583, + 3663, -4583, 3641, 73167, 2564, -4583, 851, -4583, -4583, 4010, + 37758, 3969, 29498, -4583, -4583, -4583, -4583, 54351, 3830, 54351, + 1685, 9820, 2800, 37758, 45867, 73167, 73167, 73167, 3785, 2800, + 3637, -4583, -4583, -4583, -4583, -4583, -4583, 3643, -4583, -4583, + -4583, -4583, 3713, -4583, -4583, 30, 3023, -4583, 2188, -4583, + 4064, 3958, -4583, -4583, -4583, -4583, -4583, -4583, 3807, -4583, + -4583, 42263, 54799, 73167, -4583, 3716, -4583, -4583, -4583, -4583, + -4583, 39559, 44969, -4583, 1035, 3646, 3649, 224, -4583, -4583, + -4583, 73167, 9839, 3652, 31, 3023, 73167, 73167, 3653, 3654, + 1654, 1472, 1647, 3020, 3948, -4583, -4583, -4583, -4583, 3807, + -4583, -4583, 282, -4583, -4583, -4583, -4583, 51215, -4583, 2352, + -4583, 1592, 3992, 58831, 4077, 4077, 73167, -4583, 9959, 3858, + -4583, -4583, 3937, 3637, 3889, 3936, -4583, 3661, 73167, 3827, + 3666, 73167, 3659, 3783, 1252, 1252, 73167, 73167, 73167, 2197, + 2388, 2463, 3441, 1466, 3990, 60623, 4034, 3352, 183, -4583, + -4583, 1691, -4583, 1530, 4009, 3717, -4583, 73167, 4109, 3076, + 3256, 73167, 3677, -4583, -4583, 61967, 3876, 2289, 96757, 3464, + 3636, 2137, 3814, -4583, 3815, -4583, 1350, -4583, 2388, 73167, + 73167, 37758, -4583, 95455, -4583, 2199, -4583, -4583, -4583, 3753, + 3146, 3789, 3791, 3686, 73167, 129, -4583, -4583, -4583, -4583, + -4583, 73167, -4583, 448, -4583, -4583, 5436, 33683, 95021, 2201, + 29498, -4583, 29498, -4583, 4102, -4583, -4583, -4583, 766, -4583, + -4583, -4583, 5202, 5202, 5202, -4583, 4103, 3518, -4583, -4583, + 2208, 4122, 32753, 4084, -4583, 73167, 2209, -4583, 29498, 3692, + -4583, -4583, 36858, 1857, 3696, 2210, 73167, 2214, 95021, 3701, + 3699, 45, 3704, 23074, 3689, -4583, -4583, -4583, -4583, -4583, + 13029, 13029, 73167, -4583, 3706, -4583, -4583, -4583, 3748, 73167, + 2215, -4583, 745, 13029, 1260, 853, 448, 3930, 3637, -4583, + 3708, -4583, -4583, -4583, 365, 365, 73167, 3637, -4583, -4583, + 73167, 3804, -4583, -4583, 51215, 3987, -4583, 3761, -4583, 532, + 3023, 73167, 95021, -4583, 74, 4019, -4583, 95021, 95021, -4583, + -4583, -4583, 29498, 3805, -4583, -4583, -4583, 809, 407, -4583, + -4583, 73167, 73167, 73167, 73167, 73167, 229, -4583, 2216, -4583, + 38658, -4583, -4583, 2838, 1129, 2838, 1679, -4583, -4583, 2838, + -4583, 2838, -4583, 3573, 1129, 4077, 1004, -4583, -4583, -4583, + 1538, 3929, 3719, -4583, 1026, 3916, 3808, 3721, -4583, 58831, + 4185, 3256, 3715, 73167, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 2223, 3352, 4040, 3009, 3629, -4583, 73167, + 3758, -4583, 36858, -4583, -4583, -4583, 2838, -4583, 1644, 3727, + 4049, 3352, 2388, -4583, 3636, 3256, 3715, -4583, -4583, -4583, + 3728, -4583, 3543, 2137, 3464, -4583, -4583, 4131, 3928, 4134, + 3076, -4583, 2931, 2230, -4583, 8497, 96323, 95021, 4075, 3772, + 3773, -4583, -4583, 3790, 73167, -4583, -4583, 3352, -4583, 5436, + 2238, -4583, 2252, 2264, 3892, 3795, -4583, 29498, 1623, 3345, + 52111, 3739, -4583, 33683, 2268, -4583, 3308, 73167, 2272, -4583, + 13029, 73167, -4583, -4583, 29498, -4583, 2307, -4583, -4583, 29498, + 3740, 29498, -4583, 31358, 3737, -4583, 4175, -4583, 2388, -4583, + 3146, 37758, -4583, 3865, -4583, 4050, -4583, 73167, 3787, 44969, + 3099, 3099, 1849, -4583, 1685, -4583, 73167, -4583, 3719, 29498, + -4583, 3837, -4583, -4583, 2309, 759, 3908, 3908, 2321, 2323, + 10331, 73167, -4583, -4583, -4583, -4583, 2328, -4583, -4583, -4583, + -4583, 2335, 3021, 1647, 3021, -4583, 3020, -4583, -4583, 51215, + -4583, 52559, -4583, -4583, -4583, 1129, -4583, 1129, 3963, 73167, + 47211, 1129, 1129, -4583, -4583, -4583, -4583, -4583, 4090, 4033, + -4583, 1716, -4583, -4583, -4583, -4583, 216, -4583, 3961, 3962, + 73167, -4583, 3757, -4583, 2339, 3494, 3888, 3352, -4583, -4583, + 73167, 4201, 4202, -4583, 1141, 73167, 3341, 73167, -4583, -4583, + -4583, 29498, 3938, -4583, 3629, 2137, 3494, 3636, 2289, 38208, + -4583, 3464, 3543, 3972, -4583, 3975, -4583, 3778, 3009, 5887, + -4583, -4583, 972, 4074, 4085, -4583, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 3075, 31823, 31823, 3784, -4583, -4583, 73167, + 3569, 3779, 32753, 51215, 2345, -4583, 93719, -4583, 2355, 2360, + -4583, 2367, 31358, 2368, -4583, 73167, 3786, -4583, -4583, -4583, + 40910, 54351, 365, 3793, -4583, 3800, -4583, -4583, 3889, 1685, + 3023, -4583, 13029, 73167, 58831, 4204, -4583, -4583, -4583, -4583, + -4583, -4583, -4583, 3023, 3866, 809, -4583, 407, 73167, -4583, + -4583, 2375, -4583, -4583, -4583, 73167, 3442, -4583, 3442, -4583, + -4583, 3925, -4583, 1186, 916, 916, 4143, -4583, 3852, -4583, + -4583, 3801, -4583, 4267, 3926, 73167, -4583, -4583, 1035, 2388, + 60623, 3352, -4583, -4583, 10456, 58831, -4583, 3464, 3636, 2137, + 29498, 2376, -4583, 3930, 141, 3543, -4583, -4583, -4583, 37758, + 3543, -4583, -4583, -4583, 2572, 58831, 58831, 33218, 3941, 194, + 11572, -4583, -4583, -4583, -4583, 2380, 34607, -4583, -4583, -4583, + 73167, 4002, 1020, -4583, 3956, -4583, 2381, -4583, -4583, -4583, + 1468, 448, 3099, 29498, 1685, -4583, 3916, -4583, 3023, -4583, + 73167, -4583, 3817, -4583, -4583, -4583, -4583, 52559, 3442, 3717, + -4583, -4583, 4258, -4583, 1070, -4583, -4583, -4583, -4583, 73167, + 3352, 3540, 3629, -4583, -4583, 3818, 3543, 2137, 3464, 10635, + -4583, 38208, 73167, 73167, -4583, 2382, 3146, -4583, 2330, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, 3810, 3811, 4254, -4583, + -4583, -4583, -4583, -4583, -4583, 3257, -4583, -4583, 33683, 33683, + 4031, -4583, 1020, -4583, 3821, -4583, -4583, -4583, -4583, -4583, + 10862, -4583, -4583, -4583, 809, -4583, 4145, -4583, -4583, -4583, + 3352, -4583, -4583, 50767, -4583, 3464, 3543, 3930, -4583, -4583, + -4583, 3009, -4583, 2174, -4583, -4583, 2190, 2161, 3902, 4130, + 32288, 4220, 3569, 3569, -4583, -4583, 29498, -4583, 1685, 2386, + 3995, -4583, -4583, 2391, -4583, -4583, -4583, -4583, 3543, -4583, + 73167, 3543, -4583, 2330, 3940, 3942, -4583, 73167, 10981, -4583, + 58831, -4583, 50767, -4583, -4583, 3146, -4583, 3868, 3869, 2392, + -4583, 3842, -4583, -4583, 4140, 4146, -4583, 50767, 58831, 58831, + 2396, -4583, -4583, -4583 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -4583, -4583, -4583, 3523, -4583, -862, 333, 2757, -689, -4583, + -4583, -4583, 1267, -4583, -4583, -4583, -4583, 3466, -4583, 1892, + -2354, -4583, -4583, 134, -383, -1279, 112, 3014, 1548, -4583, + -1110, -4583, -4583, -574, 90, -4583, -351, 250, -4583, -4583, + -4583, -4583, -4583, -4583, -4583, -4583, -761, 1996, 2067, 1386, + 4454, -2735, -4583, -4583, -1352, -3085, -4583, 717, -4583, 744, + -4054, -4476, -4583, -909, -738, -4583, -4583, 1985, -4583, -4583, + -4583, 1205, 629, -421, -4583, -4583, -4583, -4583, -4583, -4583, + -4583, -596, -4583, -4583, -833, 151, 35, -2367, -3620, -4583, + -4583, 587, -239, -1406, -4583, -3474, -4583, 127, -2520, -4583, + -4583, -4583, -206, -1361, 1486, -4583, -672, -1126, 1789, -702, + -4583, -86, -4583, -808, -610, -607, -725, -3654, -4127, -4583, + -4583, -4583, -837, -4144, -4389, -3684, -4157, 1497, -4583, 153, + -3024, -3112, 156, 559, -4583, 158, 159, -4583, 584, -532, + -890, -1488, -4583, -721, -4583, -4583, -4583, -2839, -4583, -4583, + -4583, -4583, 53, -4583, -4583, -4583, -4583, 628, -4583, -4583, + -4583, -4583, -4583, -4583, -2619, 1962, 1963, -4583, -3034, -4583, + -860, -4583, 772, -2876, 1411, -4583, -4583, 1197, 3482, 612, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -1588, -4583, -4583, + -4583, -4583, 143, -175, -4583, -4583, -4583, -4583, -4583, -4583, + 160, -4583, 1987, 1198, -4583, -4583, -173, -4583, -4583, -4583, + -4583, -4583, -4583, -778, -921, -900, -4583, -2881, -4583, -4583, + -4583, -143, -4583, -4583, -4583, -4583, -4583, -4583, -770, -4583, + 1263, -3049, -4583, -4583, 1265, -4583, -4583, -4583, -4583, -4583, + -699, -84, 2789, -4583, -314, -504, -4583, -4583, -4583, -83, + -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -1047, -57, + -805, -537, -4583, -4583, -4583, -4583, -4583, -2079, -4583, -4583, + -4583, -4583, -3570, -4583, 4378, 2011, -218, 163, -4583, -22, + 47, 3259, -1124, -2556, 555, -274, -4583, -4583, -4583, -2484, + -4583, -4583, -4583, -4583, -3406, 167, -4583, 3250, -4583, -3681, + -4396, -3432, -3941, -4291, -4450, -3396, -4583, -4583, -4583, -4583, + -783, -186, -4583, -4583, -1387, 2310, -1867, -4583, -2004, 610, + 1585, 3452, -2642, -129, 2750, -3688, -668, -3148, -4583, -4583, + -2213, -407, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -578, 2687, -199, -4583, -4583, 3803, -4583, -4196, -4583, 3769, + -4583, -4583, -4583, -4583, 2604, 2607, -4583, 2610, -4583, -4583, + -1396, 1348, -4583, -4583, -4583, -4583, 799, -4583, -4583, -4583, + -4583, -4583, -4583, -4583, 1251, 786, -4583, -4583, -4583, -4583, + -4583, -691, -849, -4583, -4583, 169, -4583, -4583, -4583, -4583, + 2270, -864, -693, 3667, 170, -4582, -4583, -4583, -1073, -4583, + 3045, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -2578, -4583, -4583, -4181, -4583, -4583, -4583, -4583, -4583, 2394, + 2397, 51, -50, -4583, -4583, -937, -4583, -544, -4583, 2677, + -4583, -4583, -4583, -4583, -1693, 171, 660, -4583, 3, -4583, + -4583, 29, -4583, 425, -4583, -4583, -3300, 6, -4583, -4583, + -4583, -4583, -4275, -4583, 7, -593, 950, -2703, -4583, 172, + 15, -4583, -4583, 59, 322, -36, -42, -19, 1, 124, + 3132, -4583, 3163, -4583, 27, 1898, -4583, -4583, -793, -163, + -4583, 1668, -617, 2369, 3103, 3149, -4583, 1664, -4583, -4583, + 1672, -4583, 996, -571, -411, -4583, -4583, -4583, -4583, 458, + -603, 2383, -4583, 3154, -4583, -4583, -4583, -1792, -2737, -3323, + 1028, -3318, -3245, 502, 488, -1277, -184, 49, -729, 3155, + -4583, -4583, 1034, -379, -4583, -4583, -377, -2720, 977, -4583, + -4213, -2233, 1039, -810, -662, -4583, -743, -4583, -541, 1022, + 2790, -1024, -4583, -4583, -985, 13038, -4583, -4583, -4583, 15135, + 15285, -4583, -4583, 15708, 16135, -4583, -856, 16558, 6393, -997, + -1734, -329, 13711, -1723, -1165, -2555, -4583, -3438, -2470, -4583, + -4583, -4583, -137, 1097, 370, -4583, -4237, -4583, -4583, 77, + -4583, -546, -4583, -545, -4583, -4583, -4583, -525, -4174, 2581, + -4583, -4583, -4583, -164, -4583, 17359, -2649, -4583, -730, -2650, + -2663, -3319, -1759, -4583, -4583, -4583, -4583, -4583, -4583, -4583, + -1469, -3171, -515, 1773, -4583, -4583, 1866, -4583, -4583, -4583, + -1246, 1723, -734, -2541, 1780, -4583, -731, 2587, -739, 7322, + -635, 6280, -472, -2173, -1210, -1514, -4583, 1580, -4583, 13, + -16, -8, -145, 140, -543, 2720, 13145, -587, -1298, 9508, + 12811, 12541, -3032 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -2568 +static const yytype_int16 yytable[] = +{ + 622, 183, 1511, 173, 879, 1358, 174, 176, 987, 707, + 1768, 1291, 845, 695, 739, 786, 1788, 1287, 796, 695, + 2032, 183, 558, 2302, 1108, 1144, 1145, 1146, 1698, 612, + 1376, 1150, 1023, 1516, 694, 1728, 2213, 2139, 1320, 880, + 694, 3308, 3149, 3463, 1321, 1021, 1558, 604, 2205, 1332, + 2758, 2225, 3571, 1570, 1824, 1688, 1689, 2361, 1704, 178, + 828, 1637, 887, 2455, 1305, 1697, 3483, 3551, 3172, 701, + 657, 669, 773, 2626, 2037, 907, 3815, 2032, 1121, 4010, + 4047, 2214, 3595, 740, 3597, 3720, 4046, 3785, 2991, 3289, + 64, 3937, 3456, 770, 3712, 3769, 4084, 2826, 2828, 1091, + 3040, 3074, 3712, 3454, 3455, 972, 2242, 4437, 4041, 3496, + 1610, 3743, 1102, 1437, 1615, 4286, 3968, 1099, 790, 1619, + 1115, 4289, 2588, 4295, 2037, 4230, 3799, 3985, 2763, 1629, + 2659, 1510, 4579, 834, 836, 4279, 3475, 840, 2323, 1536, + 1467, 798, 2689, 1653, 4643, 3394, 4695, 733, 2198, 1563, + 2475, 73, 4581, 75, 767, 894, 76, 1033, 77, 78, + 100, 2531, 904, 119, 799, 2112, 1023, 124, 4278, 148, + 152, 171, 177, 3782, 784, 759, 4543, 1433, 1351, 1298, + 3502, 4702, 1685, 1686, 4655, 2070, 4657, 1320, 2327, 2328, + 4812, 2037, 1354, 1696, 4024, 4823, 3447, -1844, -2190, 3983, + 677, 3988, 3905, 2339, -1811, 4973, -2316, 677, -2352, -2246, + 1649, 1675, 4435, -2375, 568, -2406, 2038, 1622, 677, -2218, + 4724, 912, 1688, 1689, 4580, -1824, 2226, -2218, -2218, 1406, + -1849, 4905, 3351, 1650, 2825, 1126, 618, 2334, 1675, 3162, + 1704, 1675, 1697, 3139, 4890, 4891, -2219, 2216, 3447, -2567, + -1839, 2216, 4920, 2216, -2219, -2219, 1398, -2567, -2567, 2452, + 1179, 2321, 3306, 618, 900, 2598, 1719, 618, 1879, 618, + 618, 2751, 2416, -2189, 1809, 3501, 1606, 3805, 3717, 2697, + 3293, 3449, 3737, 4698, 618, 1675, 2556, 618, 3106, 3552, + 3107, 1914, 1598, -2319, 3111, 4322, 4323, 1885, 4325, 4326, + 4327, 3122, 677, 3116, 3117, 3118, 3767, 4240, 3097, 2399, + 1464, 677, 2243, 3327, 618, 677, 913, 2123, -2187, 1130, + 4733, 4734, 179, -1852, 2151, 1675, 2408, 2872, 1887, 4758, + 1157, 3790, 5084, 3449, 2152, 1322, 1141, 1407, 2145, 853, + 1685, 1686, 179, -1852, 1675, 4792, 3260, 888, 3262, 3140, + 5210, 3858, 1929, 1464, 618, 2464, 793, 4228, 677, 914, + 908, 1156, 3, 4, 1399, 1148, 2739, 1696, 683, 1295, + 683, 683, 1675, 785, 2216, 683, 4763, 683, 4833, 2465, + 4701, 4723, 1761, 3750, 3649, 4538, 3086, 3251, 4123, 2056, + 1921, 684, 1548, 684, 684, 3351, 4870, 4241, 684, 1770, + 684, 2783, 5106, 2049, -132, 1879, 1347, 3068, 3297, -132, + 3575, 1464, 618, 2946, 2697, 915, 677, 2356, 2299, 1300, + -2373, 1879, 880, 2216, 843, 4992, 3351, 1317, 2453, -2190, + 2357, 1318, 2561, 2217, 1885, 4902, 4097, 4814, 3069, 981, + 1925, 1570, -2081, 4866, 2732, 991, 1879, 2216, 1149, -2081, + 1885, 2733, -2100, 4813, 2039, 683, 2358, 1922, 1005, -2100, + 1930, 2244, 1127, 1129, 1131, 1887, 2557, 1133, 1134, 1135, + 2578, 2947, 4444, 2286, 880, 1885, 1349, 1140, 684, 4242, + 1676, 1887, 2153, 2057, 3298, 2784, 2216, 5211, 2245, 776, + 3294, 1714, 4124, 1323, 1549, 1324, 3859, 4539, 1675, 2558, + 2740, 1726, 1726, 1142, 1675, 797, 1887, 1676, 2409, -424, + 1676, 2246, 1845, 2247, 1529, 1400, 1023, 1317, 970, 2227, + 2154, 1318, 973, 1873, 3141, 3552, 1872, 3123, 618, 1752, + 2228, 4888, 2229, 1023, 2241, 2305, 998, 2401, 3100, 4229, + 4893, 1474, 3751, 1003, 4834, 1528, 1736, 977, 2241, 2340, + 958, 1919, 1047, 1401, 1676, 3460, 4106, 1408, 1915, 4945, + 1810, 2466, 2911, 1074, 3738, 3637, 2322, 1726, 2986, 1149, + 183, 1149, 960, 3712, 1931, 961, 962, 2341, 1772, 1569, + 3498, 1607, 1933, 1607, 1402, 2623, 2695, 1945, 1945, 2454, + 2230, 5164, 5152, 2579, 1676, 1023, 5042, 4140, 3697, 3698, + 5242, 1810, 5115, 1022, 622, 1806, 1317, 2628, 1828, 3142, + 1318, 2335, 1683, 1676, 2698, 2045, 1409, 4357, 955, 1122, + 2873, 1816, 3806, 2417, 4243, 5085, 1677, 2037, 963, 786, + 1188, 3098, 569, 3351, 2089, 1359, 1825, -2568, -2568, -2568, + 4051, 1676, 1607, 2146, 2297, 3985, -2373, 2300, 1403, 689, + 690, 4385, 2182, 1705, 2045, 4389, 1723, 2307, 1317, -1844, + -2190, 2552, 1318, 4914, 3245, 183, 1687, 689, 690, 4991, + 1123, 4239, 1128, 2037, 1132, 2562, -2316, 4985, -2352, -2246, + 1136, -2218, 3517, -2375, 3366, -2406, 4285, 1691, 2660, 3650, + 4244, 694, -1849, 694, 2184, 694, 2678, 844, 1114, 1161, + 2047, 694, 1137, 1138, 2192, 2360, 2535, 1139, -2219, 4331, + 2259, -2567, -1839, 1023, -2373, 2275, 1117, 4376, 5186, 4378, + 1906, 1023, 1023, 5195, 982, 1180, 1927, -2373, 4424, 1875, + 982, 1917, 2766, 1288, 2511, -2189, 1297, 1022, 1299, 1587, + 1734, 2081, 5068, 982, 4261, 798, 4887, 2560, 1582, 3414, + 1699, 689, 690, 1325, 4614, 2082, 2570, 2316, 1152, 1754, + 689, 690, 4073, -2319, 1465, 1466, 2201, 1676, 799, 2787, + 1699, 1700, 4445, 1676, 880, 5157, -2081, 2287, 2734, 4319, + 2290, 2291, 1580, 2580, 2912, 1701, -2100, 1757, 5161, 1542, + 183, 1700, 173, 777, 1575, 174, 176, 4003, 1481, 5246, + 4577, 4110, 4520, 2581, 2930, 1703, 5135, 1465, 1466, 3547, + 1472, 1473, 1307, 1464, 618, 2032, 2902, 3761, 677, 3782, + 978, 3504, 1152, 3505, 733, 1158, 1160, 2446, 1328, 3646, + 1489, 1543, 2392, 618, 4204, 3295, 1075, 3072, 2493, 2494, + 2978, 5107, 3361, 3362, 3363, 3364, 3365, 3366, 178, 4419, + 4164, 1362, 2717, 1490, 2886, 563, 5278, 2830, -132, -132, + 5109, 2987, 2370, 4203, 4032, 1465, 1466, 1380, 1901, 1902, + 1903, 1904, 1905, 1906, 694, 3363, 3364, 3365, 3366, 64, + 793, 3447, 4901, 5232, 3447, 1294, 2758, 2758, 2758, 1302, + 3357, 179, 2903, 1413, 1347, 1903, 1904, 1905, 1906, 1595, + 2267, 5249, 5250, 2837, 1333, 1773, 1482, 4216, 1775, 2447, + 1777, 5094, 1779, 1726, 1781, 863, 2265, 2193, 1785, 3851, + 565, 2198, 864, 865, 866, 2968, 613, 1391, 1620, 1621, + 2133, 3572, 5108, 3348, 3349, 2315, 3691, 3692, 3368, 2512, + 73, 4641, 75, 2975, 1567, 76, 1381, 77, 78, 100, + 4804, 4022, 119, 5208, 1662, -1811, 124, 2490, 148, 152, + 171, 177, 4601, 3447, 1349, 5188, 3449, 3619, 2999, 3449, + 1380, 1521, 5171, 2302, 4217, 3398, 3399, 2969, 5261, 2274, + 4138, 5187, 4047, 1641, 4300, 2718, 179, 785, 2468, 5294, + 2719, 719, 1544, 2572, 1741, 4047, 4266, 4882, 1382, 5122, + 2636, 4046, 618, 1726, 704, 1350, 2135, 2194, 733, 1158, + 2376, 3816, 1522, 2563, 4165, 4845, 2845, 3044, 4034, 4619, + 4267, 3499, 1523, 5218, 2136, 1642, 2720, 1730, 1732, 3690, + 4254, 5055, -1811, 3466, 1726, 2979, 1742, 3073, 1308, 3573, + 619, 2133, 4946, 5245, 4912, 3296, 2266, 4913, 3449, 1381, + 4420, 3548, 2377, 2831, 3539, 1581, 2832, 1483, 2906, 2134, + 3011, 2567, 2568, 4647, 4644, 4914, 2970, 3722, 4651, 1607, + 1668, 4653, 1710, 1698, 720, 3620, -2568, -2568, -2568, 3996, + 3361, 3362, 3363, 3364, 3365, 3366, 5286, 1022, 3471, 3217, + 3011, 1545, 1383, 1406, 800, 1484, 3540, 791, 1607, 5056, + 2622, 1382, 2625, 2637, 1022, 3137, 1309, 2448, 2632, 797, + 3155, 179, 1568, 3725, 2646, 2647, 2648, 2135, 4966, 1175, + 2449, 2537, 3709, 183, 2664, 2666, 1485, 2887, 4990, 2676, + 3709, 5219, 3817, 694, 618, 2136, 1873, 4999, 1812, 3012, + 1774, 4997, 1776, 1711, 1778, 2122, 1780, 3815, 1782, 1783, + 1784, 4965, 4987, 4047, 4883, 1786, 2492, 4573, 2559, 792, + 2721, 4430, 2564, 2137, 2566, 5172, 1022, 2569, 3727, 3012, + 1524, 5123, 5192, 5193, 2638, 3473, 801, 1121, 4568, 1454, + 2847, 5238, 2514, 1669, 2805, 4986, 1643, 4947, 4602, 4953, + 614, 4035, 3013, -1811, 2525, 1383, 4011, 1743, 4036, 4118, + 186, 1407, 4268, 1712, 1525, 2530, 1713, 4459, 1526, 2529, + 2488, 1710, 3447, 2378, 3818, 4846, 1486, 3812, 2798, 2544, + 786, 1497, 3013, 721, 1547, 2971, 3621, 3487, 1645, 793, + 1548, 4037, 3574, 3575, 2639, 708, 1670, 2640, 2147, 1527, + 1498, 5173, 1874, 187, 1388, 615, 1389, 3014, 1384, 1646, + 1317, 1876, 4038, 4529, 1318, 1385, 4012, 3541, 3730, 3576, + 2848, 3488, 722, 723, 3622, 1918, 5174, 1465, 1466, 2138, + 2464, 5220, 3156, 2652, 2137, 2902, 5221, 3014, 4774, 4885, + 2043, 616, 1711, 617, 1022, 1644, 1386, 1935, 1936, 1499, + 35, 4218, 1022, 1022, 2465, 3623, 1744, 3449, 2413, 4840, + 3731, 2050, 2051, 4119, 2055, 3058, 5280, 1714, 5116, 2574, + 4954, 3059, 2379, 912, 880, 3732, 694, 1387, 566, -155, + 2799, 694, 694, 4423, 799, 799, 5239, 799, 4775, 4862, + 2916, 1671, 1549, 4003, 4988, 719, 4776, 912, 2641, 4408, + 2797, 4401, 1712, 4582, 3015, 1713, 2705, 1388, 2706, 1389, + -2209, 2903, 2806, 724, -155, 2059, 3542, 4583, 1476, 3819, + 794, 869, 870, 871, 4777, 872, 873, 874, 875, 876, + 877, 2707, -672, 1500, 3015, 745, 4317, -1811, 2148, 3384, + 2138, -155, 4955, 1672, 3001, 3391, -1811, 802, 1687, -1811, + 1375, 2575, -1811, 4904, 2060, 3026, 2236, 1390, 4908, 4909, + 2251, 717, 4266, 1647, 4120, 677, 3733, 4817, 913, 1362, + 2414, 186, 4641, 3060, 1715, 4818, 40, 3157, 720, 3447, + 2917, 1501, 4708, 3447, 1502, 3820, 4267, 1477, 694, 3198, + 4778, 5194, 913, 1716, 4219, 2301, 5196, 2141, 694, 3712, + 2418, 4779, 1013, 4047, 179, 2642, 1714, 1341, 2928, 5039, + 44, 914, 2061, 3002, 187, 3975, 3248, 4803, 744, 3016, + 1454, 1489, 3158, 2177, 2149, 2142, 1504, 3017, 2292, 3258, + 3018, 1513, 2708, 1673, 746, 914, 4555, 2709, 1137, 1138, + 2059, 3645, 2710, 1550, 1490, 2329, 2330, 2331, 2332, 3016, + 48, 2660, 2660, 663, 5046, 5047, 2660, 3017, 2062, 2306, + 3018, 1937, 5244, 49, 3449, 2311, 718, 915, 3449, 1514, + 1506, 694, 1833, 14, 694, 694, 3249, 2906, 2243, 2060, + 4222, 1551, 4584, 4791, 3025, 3564, 50, 3976, 2371, 2372, + 1507, 915, 1842, 2660, 2660, 2523, 3563, 2513, 2302, 1023, + 2807, 3004, 3005, 1938, 4260, 3008, 1342, 19, 2486, 2396, + 1509, 5113, 1552, 1715, 2063, 4255, 2423, 3048, 3977, 1304, + 3067, 2127, 5279, 1858, 3061, 4460, 3871, 721, 3027, 880, + 880, 4464, 2128, 3978, 768, 4819, 3030, 1391, 1870, 3033, + 2318, 2902, 1391, 3979, 2441, 2442, 2443, 2444, 3070, 2129, + 3092, 3019, 4441, 2758, 5293, 3565, 694, 5295, 3, 4, + 2293, 3709, 3062, 2294, 779, 2143, 722, 723, 5100, 3980, + 4194, 803, 1515, 1014, 4197, 4198, 2711, 4200, 2433, 3071, + 1714, 4780, 2438, 2062, 2324, 4136, 2712, 2589, 40, 3885, + 3886, 3887, 3888, 3063, 2424, 3893, 3894, 3895, 3896, 3897, + 3898, 3899, 3900, 3901, 3902, 1391, 4760, 2842, 3169, 1391, + 3651, 4054, 1058, 1879, 5170, 3647, 4108, 2903, 663, 4442, + 3019, 4303, 44, 4304, 2925, 797, 797, 2244, 797, 1015, + 583, 3181, 3182, 3183, 3184, 1016, 1058, 1308, 14, 2063, + 3840, 4047, 583, 3189, 896, 1385, 3064, 880, 3168, 2904, + 3850, 3941, 3942, 3981, 2245, 4948, 2347, 2536, 3403, 788, + 3404, 4972, 48, 2540, 2491, 2142, 1538, 3178, 4996, 2233, + 1726, 897, 19, 1887, 2499, 49, 2500, 2246, 32, 2247, + 35, 2859, 2504, 3405, 3065, 3648, 4109, 2905, 585, 2510, + 4055, 3851, 2130, 4707, 3523, 4523, 4213, 2278, 50, 741, + 585, 2234, 2281, 2243, 1539, 1309, 40, 2277, 1540, -572, + 4969, 1497, 51, 5113, 2241, 3066, 5229, 1365, 1175, 3235, + 4214, 3889, 4613, 3890, 183, 4832, 4524, 4983, 1377, 829, + 1498, 2422, 4086, 1371, 4736, 1541, 40, 2860, 846, 2439, + 44, 4544, 789, 583, 4335, -1606, 4336, 4056, 2546, 4057, + 2547, 2347, 2548, 4732, 2549, 1366, 2550, -1606, 4054, 3211, + 2551, 2595, -1606, 5007, 3009, 2344, 1378, 1372, 2252, 2350, + 44, 1373, 841, 677, -449, 1117, 183, 4894, 960, 1499, + 48, 961, 962, 2906, 3447, 4545, 1367, 2645, 4897, 3406, + 2700, 3447, 186, 49, 3407, 2399, 3447, 1379, 3470, 3447, + 4440, 585, 1374, 2243, 3282, 4087, 1006, -1606, 2511, 2353, + 48, 3815, 3791, 2634, 2635, 3795, 50, 2948, 2855, 2583, + 2649, 2650, 4542, 4794, 839, 3447, 2515, -1606, 2292, 2594, + 51, 4684, 1607, 4686, 963, 187, 3880, 4055, 3447, 1007, + 4828, 3044, 2619, 32, 596, 2859, 597, 3891, 2688, 2347, + 4448, 4449, 2244, 1023, 4553, 3452, 596, 3892, 597, 1494, + 51, 4572, 4729, 1500, 862, 3906, 3229, 4795, -1606, 3449, + 1623, 40, 1008, 5120, -1076, 2949, 3449, -1606, 2767, 2245, + 4337, 3449, 602, 2233, 3449, 4730, -449, 3281, 3350, 5014, + 4938, 861, 1518, 5096, 4056, 4939, 4057, 1495, 4559, 3498, + 3378, 3520, 2246, 1757, 2247, 44, 1023, 902, 3975, 2913, + 3449, 1501, 1578, 576, 1502, 2234, 4560, 5015, 1009, 3269, + 3976, 1006, 2420, 3449, -1606, 2301, 911, 3461, 3408, 2892, + 1519, -1605, 3401, 2354, 965, 1593, -1606, 4978, 3409, 2241, + 2888, -1606, 683, -1605, 4940, 48, 2457, 3616, -1605, 664, + 1604, 3977, 2244, 1699, 1007, 5006, 1504, 596, 49, 597, + 2293, 1520, 4212, 2294, 880, 684, 4391, 4533, 4052, 4979, + 3427, 2355, 5049, 968, 1700, 2221, 3979, 2222, 3503, 2245, + 3976, 50, 1489, 1623, 971, 3617, -1606, 3763, 1701, 1347, + 2880, 4498, 692, -1605, 1348, 665, 3447, 583, 692, 3605, + 1506, 974, 2246, 1699, 2247, 1490, -1606, 1945, -1606, 3553, + 2789, 3977, 3606, -1605, 4499, 4976, 3618, -1642, -1070, 3770, + 1507, 2924, -1642, 2243, 1700, 3186, 3978, 5183, 988, 3780, + 3187, 694, 3464, 1009, 3580, 2223, 3979, 4729, 1703, 2241, + 1509, 1001, 4597, 1188, 4729, 179, 3351, -1606, 4096, 3917, + 3352, 3353, 3354, 1328, -1605, 585, -1606, 3447, 1025, 1349, + 4730, 712, 3980, -1605, 2882, 2883, 2849, 4730, 2852, 1651, + 1022, 1749, -571, 2894, 4513, 2896, 4514, 4515, 2846, 2900, + 4516, 3449, 4166, 4648, 2758, 1757, 3981, -1642, 713, 2758, + 1699, 1652, 714, 1750, 3010, 2758, 3412, 179, 1010, 694, + 1350, 3173, 1497, 2809, 4167, 3721, 5241, 791, 2623, 3556, + 3187, 1700, 966, 4183, 3377, 1492, 3379, 3380, 4074, -1643, + 5038, 1498, 4082, 5154, -1643, 4935, 5281, 4937, -1642, 2988, + 2216, 4941, 1555, 4942, 4184, 1559, 3250, 3252, 3253, 1299, + 2224, 1023, 3449, 3861, 1813, 1011, 3981, 2660, 2660, 2660, + 2660, 4262, 1012, 2660, 2660, 2660, 2660, 2660, 2660, 2660, + 2660, 2660, 2660, 3089, 829, 1763, 5271, 1030, 1764, 792, + 1499, 2703, 2244, 4111, 846, 3512, 1694, 1695, 4977, 4688, + 3915, 2243, 4088, 3611, 4095, 1082, 4697, -1606, 2910, -1643, + 2818, 1073, 1818, 2682, -1605, 1819, 2685, 3447, 3028, 2245, + 3766, 3031, 3323, 2794, 2795, 3828, 3829, 2045, 2834, 2660, + 2660, 596, 3508, 597, 2838, 2623, 1083, 1687, 2841, 2113, + 3355, 3324, 2246, 599, 2247, 4416, 3325, 1096, 4649, 2243, + -1643, -1666, -1666, 4091, 601, 223, 3739, 1623, 4031, 793, + 567, 3356, 1089, 1687, 2865, 2113, 1112, 4288, 661, 1317, + 1023, 1103, 1337, 1318, 1500, 3447, 677, 2041, 2044, 2241, + 2042, 2045, 694, 3530, 3509, 3510, 2975, 742, 4107, 3105, + 694, 2541, 2553, 694, 2045, 2554, 1143, 3112, 3113, 1152, + 1152, 1151, 3449, 1152, 3115, 3084, 3447, 3644, 2918, 40, + 2999, 2555, 2586, 2780, 2554, 2587, 1757, 979, 3131, 980, + 1165, 2817, 1501, 3357, 2045, 1502, 982, 3044, 3102, 2922, + 5268, 3102, 2923, 3102, 3722, 2993, 2301, 3102, 2994, 3127, + 3723, 3718, 3128, 44, 3458, 3459, 3102, 3102, 3102, 1147, + 2244, 2243, 3724, 1154, 3132, 4785, 1162, 3133, 2966, 3177, + 3449, 3236, 3275, 2243, 2045, 2554, 3322, 1504, 3331, 2045, + 983, 2045, 984, 4049, 4050, 2243, 3337, 2245, 1166, 2045, + 3725, 4741, 3726, 48, 2995, 3707, 179, 3200, 1172, 1164, + 794, 3449, 3006, 3707, 1174, 1175, 49, 3217, 2244, 982, + 2246, 3315, 2247, 3021, 3180, 4273, 3338, 4593, 1176, 2045, + 5227, 1506, 3339, 4737, 3447, 2045, 1177, 3370, 3383, 50, + 2045, 2045, 1173, 3034, 4742, 2245, 3388, 3598, 3036, 3389, + 3599, 1507, 3039, 51, 1181, 3727, 3212, 2241, 3174, 3632, + 1687, 3259, 1375, 3261, 1022, 3056, 1152, 3709, 2246, 4743, + 2247, 1509, 3311, 1832, 3640, 51, 5252, 3652, 3081, 1178, + 3603, 3728, 1182, 3604, 3627, 5151, 4744, 3628, 982, 3684, + 4745, 3803, 3756, 2481, 3804, 2482, 2263, 3826, 2243, 3912, + 2045, 4075, 3913, 829, 3922, 2241, 1184, 3923, 3933, 4020, + 4746, 2045, 4021, 4747, 846, 3244, 3246, 1022, 2511, 3449, + 2244, 3254, 3199, 4025, 1306, 4030, 4026, 4748, 2832, 3358, + 3359, 3360, 2244, 3361, 3362, 3363, 3364, 3365, 3366, 4053, + 3729, 1687, 2554, 2113, 2244, 3730, 4263, 2245, -2473, 2554, + 880, 4314, 1303, 1023, 1810, 1023, 1310, 1312, 4332, 2245, + 2660, 2045, 3854, 3320, 3447, 1311, 3740, 3204, 3742, 3205, + 2246, 2245, 2247, 4358, 4370, 5303, 2587, 2045, 694, 3428, + 1316, 3429, 2246, 28, 2247, 4426, 1329, 3731, 2832, 4824, + 4205, 1335, 4206, 1665, 2246, 3867, 2247, 1334, 2365, 3430, + 1570, 3431, 3732, 4432, 4112, 1345, 4433, 2241, 4749, 4096, + 1337, 4616, 3749, 2380, 3752, 4438, 4750, 3882, 2554, 2241, + 1360, 3474, 786, 4439, 4574, 4621, 2554, 4575, 4622, 1338, + 1361, 2241, 1878, 1023, 2402, 1879, 3447, 1364, -2473, -2568, + -2568, -2568, 5282, 1368, 5283, 3847, 3809, 2244, 1375, 3449, + 4623, 3911, 4631, 2045, 1411, 2587, 4703, 4751, 1337, 4704, + -1594, 3997, 3998, 3999, 1885, 4786, 786, 4825, 2554, 4841, + 4826, 1886, 2587, 40, 2245, 4457, 4849, 4859, 4865, 4850, + 1757, 3777, 4867, 4880, 4928, 3777, 4881, 4929, -2473, 2479, + 1344, 4968, 1346, 3733, 1924, 1887, 3953, 2246, 4998, 2247, + -2473, 4881, 4390, 2487, 4393, -2473, 5008, 44, 1435, 2587, + -2473, 3287, -2220, 4089, 1438, 1058, -2473, 3992, 1440, -2473, + 5009, 3449, -2473, 3389, 1441, -2475, 1474, 2501, 1479, 3301, + 1478, 40, 5010, 4572, 2241, 2045, 5021, 3287, 1480, 5022, + 5027, 4070, 703, 1757, 705, 1486, 2037, 48, 711, 1488, + -2473, 1493, 1022, 1496, 728, 736, 703, 1531, 743, 1530, + 49, 736, 736, 3860, 772, 44, 775, 2528, 1058, 1546, + -2473, 786, 3433, 3434, 3435, 5030, 2623, 5054, 3777, 3465, + 2587, 694, 183, 50, 960, 179, 5121, 961, 962, 5060, + 1556, 5061, 2587, -2489, 2587, 1557, 5064, 51, -1374, 5065, + -1374, 4381, 1560, 5066, 1888, 48, 5067, 5092, 1565, 1889, + 5093, -2473, 1566, 5139, -2473, -2475, 5140, 1571, 49, 1573, + -2473, 1574, 4189, 5143, 5197, 28, 1757, 1579, 5144, 1576, + 3535, 2045, 3536, 3537, 3538, 5145, 5147, 4201, 2045, 2045, + 963, 50, 1583, 5166, 5190, 1892, 5167, 5191, 5214, 5226, + 5251, 3777, 4873, 4881, 5289, 51, 1584, 5065, 1590, 5291, + 5306, 1022, 5292, 5140, 5313, -2475, 1591, 5292, 1594, 1597, + 1600, 1603, 1605, 1611, -2473, 1616, 1614, -2475, 1607, 1625, + 1626, 1630, -2475, -2489, 3707, 1631, -175, -2475, 1633, 1634, + 1636, 1638, 1894, -2475, 4839, 1639, -2475, 1654, 1661, -2475, + 1663, 2690, 4353, 1667, 205, 1674, 1680, 1681, 4135, 830, + 835, 835, 838, 1682, 835, 40, 1683, 1687, 847, 1691, + 772, 1690, 1693, 882, 1707, 708, 1709, -2475, 1721, 1722, + 772, 1725, 835, -2489, 1726, 772, 1733, 1737, 1745, 835, + 1738, 772, 1740, 1746, 1748, -2489, 1753, -2475, 3601, 44, + -2489, -2473, 1756, 1759, 1760, -2489, 1787, 1762, 1815, 4593, + 1820, -2489, 3474, 1829, -2489, 1830, -1815, -2489, 1878, 1822, + 3474, 1879, 1823, -1822, 1837, -2473, 1838, -2473, -2473, 1896, + 1870, 1839, 1840, 1841, 51, -1812, 1843, 1844, -2475, 48, + 1845, -2475, -1813, 1846, 1847, -2489, 1848, -2475, 1850, 3638, + 1885, 1851, 49, 1852, 1853, -1816, 1854, -2568, -1814, 1855, + 1856, 1857, 1859, -2473, 3528, -2489, -2473, -2473, -2473, 1912, + 1910, 1860, 1861, 1862, 1870, 50, 1863, 1914, 1864, 1865, + 1866, 1887, 1928, 1940, 1948, 1915, 1924, 2048, 1348, 5198, + 2077, 2703, 1350, 2079, 2088, 2092, 2090, 3688, 2091, 2108, + 2109, -2475, 2110, 2111, 2114, 2113, -2489, 3421, 2115, -2489, + 2118, 3675, 2117, 2116, 712, -2489, 2119, 2125, 2144, 2150, + 2156, 2179, 2186, 3440, 2187, 1897, 2183, 2185, -2568, -2568, + -2568, 2188, 1901, 1902, 1903, 1904, 1905, 1906, 2190, 2191, + 2206, 2207, 3102, 2208, 2219, 2220, 2231, 2235, 3400, 2237, + 2238, 2241, 708, 179, 3700, 2239, 2240, 2249, 2253, 2250, + 3711, 2255, 4549, 2270, 2254, 2260, 2261, 1878, 3711, -2489, + 1879, 2271, 3607, 2264, 1022, 3440, 1022, 4311, -2475, 785, + 5020, 2272, 2276, 2273, 2288, 2279, 2283, 2284, 2295, 694, + -2568, 2296, 2298, 2303, 2304, -2568, 1454, 694, 2313, 1885, + 1878, 2317, -2475, 1879, -2475, -2475, -2568, 2308, 2309, 2310, + 2312, 2314, 2319, 2320, 2325, 2336, 2326, 2337, 2338, 2660, + 708, 3753, 3775, 2348, 2342, 2352, 2364, 2343, 4624, 2366, + 1887, -2568, 1885, 4342, 2367, 2884, 2368, 2369, 2373, -2568, + -2475, 2374, 2385, -2475, -2475, -2475, -2489, 2899, 2375, 2381, + 2382, 2383, 2384, 3808, 1022, 2386, 2393, 4235, 4236, 4308, + 4309, 4310, 2394, 1887, 4273, 3842, 2388, 2395, 2400, 4740, + -2489, 2403, -2489, -2489, 2404, 2407, 578, 2412, 1894, 2421, + 2418, 2432, 2436, 2437, 2440, 3685, 2445, 2932, 2463, 1515, + 2456, 2459, 2462, 2478, 2480, 2472, 2484, 3411, 2495, 2497, + 2476, 2498, 3827, 2516, 829, 2489, 2505, 829, -2489, 3947, + 2506, -2489, -2489, -2489, 2518, 2519, 2520, 2502, 2503, 3798, + 2507, 2521, 2508, 2509, 2532, 2533, 2565, 2571, 2584, 2597, + 3940, 2628, 2677, 2683, 921, 1879, 4414, 2633, 2696, -2568, + 772, 3824, 830, 2702, -2568, 835, 2687, 838, 2714, 835, + 2716, 2737, 846, 846, 2736, 2751, 882, 2765, 792, 2769, + 2768, 994, 2772, 835, 2773, -2568, 1188, 2771, 2781, 3351, + 835, 2782, -2568, 3352, 3353, 3354, 2790, -2568, 2791, 694, + -2568, 2792, 2793, 2803, 2810, 2821, 2822, 2824, 2850, 2864, + 1152, 2853, 2855, 5023, 830, 2857, 2869, 2858, 2879, 838, + 2874, 2875, 2877, 2881, 847, 2897, 2898, 2889, 882, 2901, + 2914, 2920, 2885, -2568, 2915, 1300, 1304, 2931, 4463, 2936, + 2937, 2950, 2955, 2982, 2977, 2956, 846, 1894, 835, 2983, + 3928, 2992, 3020, 3076, 786, 3088, 2985, 3099, 3000, 3103, + 3108, 3114, 3095, 3096, 3109, 3110, 3119, 3125, 3126, 3134, + 3146, 3147, 3121, 786, 3161, 3165, 3167, 3176, 2347, 3179, + 1894, -2568, 3188, 3193, 3185, 3163, 3130, 3194, 1901, 1902, + 1903, 1904, 1905, 1906, 3849, 3195, 3196, 3197, 3201, 772, + 3210, 4412, 736, 736, 736, 1188, 3209, 3213, 3351, 3207, + 3214, 3474, 3352, 3353, 3354, 772, 3227, 1171, 3228, 3863, + 3232, 3230, 2660, 3231, 3234, 3955, 3956, 3957, 3958, 3930, + 3240, 3237, 3241, 3239, -2568, 3474, 3255, 1285, 1285, 1714, + 772, 736, 3265, 3267, 3268, 736, 3242, 2660, 3272, 3243, + 3274, 3247, 4065, 4066, 4067, 4068, 3256, 3277, 3278, 772, + 3279, 1757, 1754, 772, 3280, 5262, 5263, -2568, 3288, 1285, + 1723, 2598, 3290, 3291, 3292, 3299, 3302, 3307, 1149, 3309, + 772, 3316, 1188, 3319, 3356, 3351, 3314, 3313, 3333, 3352, + 3353, 3354, 772, 4558, 3317, 3334, 3335, 1878, 4500, 4501, + 1879, 4503, 179, 3336, 3347, 4455, 3931, 3340, 3341, 3343, + -2073, 3346, 3369, 3385, 3397, 3375, 2045, 3402, 3419, 4534, + 3382, 3476, 3424, 3480, 179, 3482, 3493, 3396, 3410, 1885, + -2568, 3506, 3486, 3420, 772, 3422, -2568, 1901, 1902, 1903, + 1904, 1905, 1906, 3452, 3423, 3511, 3357, 1188, 3426, 3513, + 3351, 3457, 772, 3484, 3352, 3353, 3354, 835, 835, 3711, + 1887, 3522, 3514, -2568, 3518, 2302, 3525, 3500, 3519, 3527, + 1901, 1902, 1903, 1904, 1905, 1906, 3534, 3549, 4659, 3300, + 3560, 4494, 3550, 4139, 3562, 4674, 736, 736, 694, 3566, + 4147, 3568, 3569, 4148, 3567, 4149, 3312, 4146, 3583, 3584, + 4932, 4740, 3586, 3356, 3592, 3594, 3593, 3602, 3612, 3318, + 3631, 3633, 694, 830, 3629, 3635, 1810, 3636, 694, 3639, + 3641, 3653, 3642, 3643, 847, 3655, 3656, 3943, 882, 4753, + 4207, 3657, 3658, 3659, 3662, 4188, 4210, 3660, 3661, 3674, + 3665, 3667, 3663, 3102, 3669, 3664, 835, 3102, 3102, 3666, + 3102, 3676, 3670, 3668, 4922, 3700, 4924, 3678, 2660, 4071, + 2334, 3689, 3671, 3702, 3680, 3357, 3693, 3713, 772, -2568, + 3681, 3683, 3694, 4551, -2568, 835, 835, 3696, 3716, 3748, + 3356, 3747, 3754, 3757, 3758, 3760, 3765, 3762, 1137, 1138, + 3777, 3776, 3779, 3786, 3792, 5138, 3789, 772, 772, 772, + 3793, 835, 3796, 830, 3797, 3800, 3801, 3813, 3832, 829, + -2568, 3823, 1870, 3843, 3830, 3844, 846, 3834, 3845, 3836, + 3707, 3831, 3853, 3855, 3846, 3864, 3856, 3857, 3962, 3848, + 3865, 3967, 3358, 3359, 3360, 3866, 3361, 3362, 3363, 3364, + 3365, 3366, 3357, 3868, 3874, 3356, 3869, 3870, 3372, 1878, + 1832, 3351, 1879, -2072, 4287, 3371, 3924, 1894, 3908, 3883, + 793, 3909, 3910, 3935, 3948, 3965, 3916, 3936, 3989, 4014, + 4168, 3994, 835, 4171, 835, 835, 3954, 4783, 3939, 4019, + 3966, 1885, 3974, 5076, 5078, 3991, 4007, 4004, -2568, 4006, + 4009, 5070, 4023, 4008, 4017, 4040, 4033, 4061, 4076, 4069, + 4077, 4063, 1285, 4064, 4078, 4079, 4081, 3357, 4114, 4083, + 4085, 4099, 1887, 4130, 4848, 880, 4115, 4102, 4321, 4321, + 4321, 4116, 4321, 4321, 4321, 4283, 4691, 2660, 4117, 4127, + 4128, 694, 1790, 1790, 4129, 4131, 4132, 772, 4143, 703, + 4141, 4144, 4154, 4155, -2568, 4163, 4160, 4178, 4180, 4182, + 4090, 3358, 3359, 3360, 4185, 3361, 3362, 3363, 3364, 3365, + 3366, 4193, 4843, 4192, 4195, 1821, 4196, 4220, 772, 4199, + 4248, 1827, 4209, 3532, 4714, 4223, 4232, 4252, 4253, 3944, + 4246, 4238, 4265, 2554, 1285, 4256, 4258, 4259, 4280, 2347, + 3543, 4275, 4296, 4281, 4293, 4297, 4298, 4312, 4294, 4709, + 4301, 4306, 4299, 1872, 4302, 4316, 4318, 4324, 4329, 4334, + 4344, 4338, 4345, 4346, 1285, 5277, 4339, 4343, 4347, 5168, + 4351, -2568, -2074, 4386, 4387, 4379, -2568, 4366, 3358, 3359, + 3360, 4394, 3361, 3362, 3363, 3364, 3365, 3366, 4382, 4384, + -2568, 5215, 1285, 1285, 1285, 4395, 1285, 1901, 1902, 1903, + 1904, 1905, 1906, 4399, 4400, 4402, 4403, 4413, 4409, 4422, + 4411, 3287, -2568, 4405, 5277, 4425, 1285, 4406, 4407, 4427, + 4429, 4435, 4434, 4443, 4461, 4462, 4465, 4472, 4471, 5277, + 4858, 4484, 4473, 4491, 3624, 4487, 3626, 4493, 4428, 4934, + 4504, 4858, 4512, 3358, 3359, 3360, 4525, 3361, 3362, 3363, + 3364, 3365, 3366, 4496, 772, 4497, 4526, 1285, 4531, 1894, + 4517, 4532, 4540, 4541, 4546, 4547, 4550, 4554, 4535, 4556, + 4548, 4564, 4567, 2660, 2660, 4571, 4576, 5070, 4578, 4586, + 4588, 5083, 4589, 4590, 4599, 1285, 4591, 4610, 4611, 1285, + 1285, 4604, 4617, 4618, 4620, 4625, 4627, 4628, 4415, 4417, + 772, 772, 2087, 4629, 1285, 4466, 4630, 4636, 4642, 3440, + 4645, 4652, 4672, 4679, 4656, 4682, 4685, 3673, 4696, 4705, + 4926, 4700, 694, 4706, 4711, 4735, 694, 736, 4502, 4676, + 4754, 4699, 4756, 4717, 4219, 4762, 4718, 5013, 179, 4722, + 4727, 4728, 4764, 4506, 4766, 3687, -2568, 4772, 4767, 4769, + 4773, 4481, 4482, 4770, 5029, 4789, 4485, 4486, 4790, 5031, + 4797, 5033, 2189, 4799, 4802, 4806, 4808, 736, 4815, 4816, + 4829, 4827, 4830, 1023, 4831, 4844, 4847, 4851, 4857, 4861, + 4873, 772, 2215, 4864, 4878, 4898, 4869, 4507, 4508, 4868, + 772, 4871, 4899, 835, 4877, 4889, 4905, 3102, 4949, 3102, + 3102, 829, 4956, 3102, 4896, 4911, 4951, 846, 4960, 4961, + 4963, 4970, 4975, 4982, 4981, 4989, 4993, 4994, 882, 4995, + 772, 5002, 5003, 5004, 5011, 5005, 5019, 5032, 5035, 4570, + 5036, 5012, 5041, 772, 5043, 5040, 772, 5053, 5057, 5075, + 5048, 5081, -2568, 5082, 5091, 2932, 5028, 5086, 5088, 1901, + 1902, 1903, 1904, 1905, 1906, 5095, 5098, 5099, 5125, 1878, + 5105, 5117, 1879, 4566, 5118, 5119, 1880, 1881, 1882, 5126, + 5136, 772, 5134, 3949, 5162, 4478, 3825, 5160, 5169, 5084, + 5153, 5085, 835, 835, 835, 835, 772, 4488, 5155, 5177, + 880, 1885, 5178, 5179, 5209, 5217, 5224, 4592, 1886, 5237, + 772, 5258, 5259, 4715, 5234, 5243, 5260, 5264, 5266, 5270, + 5284, 2362, 5285, 772, 5287, 4713, 3440, 5290, 5304, 5305, + 3440, 5297, 1887, 5298, 5308, 835, 835, 3474, 4321, 5307, + 5309, 5045, 1339, 3170, 3049, 2349, 3467, 2981, 880, 1439, + 3577, 4105, 4098, 1947, 4569, 5269, 835, 5163, 3087, 3701, + 4202, 3450, 4943, 5069, 5235, 4234, 4807, 4755, 4530, 4782, + 3516, 179, 179, 3276, 1023, 772, 5156, 4689, 5231, 5089, + 1878, 5087, 3875, 1879, 5248, 3521, 4284, 1880, 1881, 1882, + 5176, 835, 835, 835, 835, 4264, 5051, 4227, 3144, 3145, + 3596, 4103, 3764, 3884, 772, 1517, 4251, 4788, 4692, 4693, + 4693, 772, 1885, 3450, 2362, 3772, 5310, 3135, 4793, 1886, + 4552, 5236, 5302, 3714, 830, 4768, 3719, 830, 3907, 5181, + 4716, 4907, 838, 5059, 4719, 710, 4313, 1285, 1807, 2411, + 4884, 1888, 2827, 1887, 4290, 1817, 1889, 3507, 1602, 5000, + 2522, 1097, 2591, 1024, 2485, 2592, 3677, 4133, 4677, 2593, + 3768, 4153, 1813, 5200, 5296, 1313, 2776, 1890, 1891, 2124, + 2777, 2545, 847, 847, 4269, 4678, 4418, 5150, 4027, 1920, + 3472, 2802, 1892, 882, 882, 3711, 2074, 3481, 3287, 4005, + 3479, 5146, 5034, 4410, 2801, 4377, 2046, 3969, 4392, 4863, + 3963, 5018, 5017, 835, 835, 3964, 4028, 5299, 5216, 5265, + 835, 5137, 772, 4842, 694, 1893, 3918, 4675, 2496, 5148, + 5133, 5149, 3417, 2741, 3469, 3328, 3102, 3415, 0, 1894, + 0, 2073, 2750, 0, 0, 0, 0, 1790, 0, 2078, + 0, 0, 0, 0, 835, 2083, 847, 0, 0, 0, + 772, 772, 1888, 835, 0, 0, 0, 1889, 0, 0, + 772, 0, 4821, 0, 0, 0, 0, 772, 0, 0, + 0, 0, 703, 703, 0, 0, 2600, 0, -2568, -2568, + 1285, 0, 1285, 0, 0, 0, 0, 1285, 1285, 0, + 0, 0, 0, 1892, 1285, 1285, 1285, 3287, 0, 3287, + 1285, 882, 1285, 1285, 1285, 1285, 1285, 1285, 0, 1285, + 1023, 1285, 1285, 0, 0, 1285, 1896, 179, 0, 0, + 0, 0, 0, 0, 0, 0, -2568, 0, 0, 0, + 1285, 1285, 1285, 1285, 0, 0, 0, 835, 1285, 4787, + 1894, 0, 1285, 0, 0, 1285, 0, 0, 1285, 1285, + 1285, 1285, 1285, 1285, 1285, 1285, 1285, 786, 1285, 0, + 0, 0, 0, 0, 772, 1285, 0, 1285, 1497, 0, + 0, 0, 0, 0, 772, 0, 0, 4820, 0, 0, + 0, 0, 0, 0, 0, 0, 1878, 1498, 0, 1879, + 0, 0, 0, 0, 1414, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4923, 0, 4925, 0, 0, + 0, 0, 1897, 0, 0, 1898, 1899, 1900, 1885, 1901, + 1902, 1903, 1904, 1905, 1906, -2568, 0, 1896, 1415, 0, + 0, 0, 0, 0, 0, 0, 1499, 4090, 3440, 0, + 0, 4919, 4919, 3440, 2147, 0, 3440, 0, 0, 1887, + 0, 0, 0, 0, 1022, 880, 0, 0, 4936, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4944, 0, + 694, 694, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 694, 0, 0, 0, 1417, 0, 0, + 0, 772, 0, 772, 0, 1285, 0, 0, 0, 4091, + 0, 0, 0, 0, 0, 0, 4237, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4364, 0, 0, 0, + 1500, 1418, 0, 1897, 0, 0, 1898, 1899, 1900, 772, + 1901, 1902, 1903, 1904, 1905, 1906, 2811, 0, 2816, 0, + 0, 0, 0, 0, 2601, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1419, 0, -2568, 0, + 4693, 0, 0, -2568, 0, 0, 0, 0, 1501, 838, + 0, 1502, 0, 0, 0, 0, 0, 0, 703, 0, + 703, 0, 2301, 0, 4092, 0, 0, 0, 0, 0, + 1420, 4984, 2602, 0, 0, 0, 0, 1285, 5159, -2568, + 0, 0, 179, 0, 0, 0, 0, 0, 0, 830, + 0, 835, 835, 1504, 0, 0, 847, 0, 882, 0, + 835, 1422, 835, 0, 2603, 0, 835, 1385, 0, 772, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 179, 0, 0, 5097, 0, 1022, 1894, 2604, 0, 5073, + 736, 5074, 0, 0, 0, 5079, 5080, 1506, 2605, 0, + 2215, 0, 35, 0, 2199, 0, 1424, 5037, 2934, 5206, + 5207, 0, 0, 1425, 0, 2945, 0, 1507, 2606, 0, + 0, 1426, 0, 2607, 772, 0, 0, 0, 1813, 2200, + 0, 0, 0, 0, 0, 0, 0, 1509, 0, 4093, + 0, 1428, 4094, 0, 3440, 772, 0, 0, 0, 1429, + 2990, 2990, 0, 0, 0, 1870, 0, 0, 0, 0, + 772, 772, 0, 0, 772, 0, 838, 736, 0, 0, + 0, 0, 2608, -2568, 0, 0, 0, 0, 0, 0, + 0, 5165, 0, 0, 0, 835, 3450, 0, 835, 3450, + 0, 0, 0, 2609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1430, 0, 0, 0, 0, 772, + 772, 0, 0, 0, 0, 0, 0, 0, 0, 4919, + 0, 4919, 0, 0, 3075, 0, 3078, 3080, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2241, 0, 0, 0, 0, 0, 0, 0, 694, 0, + 694, 0, 0, 4447, 0, 0, 835, 0, 0, 0, + 205, 0, 0, 2610, 835, 835, 0, 0, 3450, -2568, + 0, 835, 0, 5233, 0, 0, 1901, 1902, 1903, 1904, + 1905, 1906, 0, 1285, 3440, 835, 0, 0, 0, 2611, + 0, 4468, 5311, 5312, 179, 183, 2612, 5202, 0, 2215, + 5203, 5204, 2990, 2613, 772, 4693, 4693, 772, 0, 0, + 0, 3171, 4483, 0, 703, 0, 0, 0, 0, 0, + 0, 1022, 0, 0, 0, 0, 835, 1285, 5182, 0, + 0, 2614, 5257, 0, 0, 0, 2615, 0, 0, 2616, + 0, 0, 0, 0, 3075, 0, 0, 0, 0, 0, + 0, 3287, 0, 5205, 835, 0, 3203, 2617, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, + 179, 5202, 0, 0, 5203, 5204, 0, 4509, 0, 1285, + 1878, 0, 2618, 1879, 0, 0, 0, 0, 4919, 0, + 0, 0, 0, 4693, 0, 0, 0, 5276, 0, 0, + 0, 0, 0, 0, 0, 0, 835, 0, 835, 2990, + 835, 2990, 1885, 1878, 0, 0, 1879, 694, 0, -2568, + 1880, 1881, 1882, 0, 0, 0, 5275, 5205, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1883, 0, 0, + 0, 0, 0, 1887, 1790, 1885, 5276, 0, 0, 0, + 0, 0, 1886, 0, 183, 0, 5202, 0, 0, 5203, + 5204, 5276, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5275, 1887, 0, 0, 0, + 0, 772, 0, 0, 0, 0, 0, 0, 4598, 0, + 5275, 830, 0, 0, 0, 0, 0, 847, 1188, 0, + 0, 3351, 0, 0, 0, 3352, 3353, 3354, 0, 0, + 835, 0, 5205, 0, 0, 0, 0, 3450, 1285, 0, + 0, 0, 4360, 1285, 0, 0, 0, 0, 0, 0, + 1813, 0, 1188, 0, 0, 3351, 0, 0, 0, 3352, + 3353, 3354, 0, 0, 0, 0, 1285, 1285, 1285, 0, + 0, 1285, -2568, 0, 0, 0, 4361, -2568, 0, 1285, + 1285, 1285, 1285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1285, 0, 0, 1285, 0, 1285, 0, 0, + 0, 0, 0, 0, 0, 1888, 0, 0, 1285, 1285, + 1889, 179, 1285, -2568, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 882, 0, 1285, 0, 1285, 0, + 1285, 1890, 1891, 0, 1188, 0, 179, 3351, 0, 0, + 0, 3352, 3353, 3354, 0, 0, 1892, 0, 0, 0, + 1285, 0, 0, 0, 772, 0, 0, 0, 0, 0, + 1894, 3451, 0, 1285, 1285, 1285, 0, 0, 0, 0, + 0, 0, 0, 1679, 0, 0, 0, 0, 0, 1893, + 0, 1285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1878, 1285, 1894, 1879, 0, 1895, 1285, 1880, 1881, + 1882, 1706, 0, 1285, 0, 0, 0, 0, 0, 0, + 5256, 0, 0, 3451, 0, 1883, 3356, 3492, 0, 0, + 3495, 1724, 2816, 1885, 0, 0, 0, 0, 0, 0, + 1886, 1735, 0, 0, 0, 0, 0, 1739, 0, 0, + 0, 0, 0, 1747, 3450, 0, 0, -2568, 3450, 1755, + 3356, 0, 1758, 0, 1887, 0, 0, 0, 0, 0, + 0, 0, 0, 1285, 0, 2990, 0, 0, 0, 0, + 1790, 0, 0, 0, 0, 0, 1877, 0, 3357, 0, + 1896, 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, + 1882, 0, 0, 0, 0, 179, 0, 835, 0, 835, + 835, 835, 0, 0, 0, 1883, 0, 0, 1884, 0, + 0, 0, 3357, 1885, 0, 0, 0, 0, 0, 0, + 1886, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1813, 0, -2568, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -2568, 1887, 0, 0, 0, 0, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, + 0, 0, 0, 1888, 0, 0, 0, 0, 1889, 0, + 3673, 0, 0, 0, 0, 0, 1897, 0, 0, 1898, + 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1890, + 1891, 0, 0, 0, 3357, 0, 3342, 0, 0, 0, + 0, 0, 0, 0, 1892, 0, 0, 0, 0, 0, + 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1813, 0, 0, 0, 0, 1813, + 1813, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1894, 0, 1888, 1895, 0, 0, 0, 1889, 0, + 0, 0, 0, 0, 3358, 3359, 3360, 0, 3361, 3362, + 3363, 3364, 3365, 3366, 0, 0, 0, 0, 0, 1890, + 1891, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4537, 1892, 0, 0, 0, 3358, 3359, + 3360, 0, 3361, 3362, 3363, 3364, 3365, 3366, 0, 0, + 0, 0, 0, 0, 835, 0, 0, 0, 0, 2990, + 2990, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1896, 5001, + 0, 1894, 0, 0, 1895, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 772, 772, 772, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 772, 0, 0, 0, 0, 0, 0, + 3358, 3359, 3360, 0, 3361, 3362, 3363, 3364, 3365, 3366, + 0, 0, 0, 0, 0, 1790, 772, 0, 0, 0, + 0, 0, 0, 0, 0, 1790, 772, 772, 0, 0, + 0, 772, 3219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 772, 0, 0, 0, 1896, 0, + 0, 0, 1414, 0, 1897, 0, 0, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 3450, + 0, 0, 0, 0, 3392, 0, 3450, 0, 0, 0, + 0, 3450, 0, 0, 3450, 4654, 1415, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, + 3450, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 772, 0, 3450, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 772, 0, 0, + 0, 0, 0, 0, 1897, 1417, 0, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 1285, 5142, 0, + 0, 0, 0, 0, 2158, 0, 1285, 0, 0, 2159, + 0, 846, 1285, 0, 1285, 0, 0, 1285, 0, 1418, + 0, 0, 1285, 1285, 1285, 1285, 0, 0, 1285, 1285, + 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 0, 0, + 0, 1285, 1285, 2160, 0, 0, 0, 0, 0, 3220, + 0, 1285, 0, 846, 1419, 1285, 2161, 0, 0, 1285, + 0, 0, 0, 0, 0, 0, 0, 1285, 0, 0, + 1285, 2162, 1285, 0, 0, 0, 0, 0, 0, 0, + 0, 1285, 0, 0, 1285, 1285, 0, 0, 1420, 1285, + 1285, 0, 0, 0, 3951, 0, 1285, 0, 0, 0, + 0, 0, 0, 772, 772, 772, 830, 0, 0, 3451, + 3973, 0, 2163, 0, 3973, 3987, 3973, 0, 0, 1422, + 0, 3450, 1285, 2164, 0, 1385, 0, 0, 1285, 1285, + 1285, 0, 2517, 0, 0, 0, 0, 0, 0, 0, + 2524, 0, 0, 2165, 0, 0, 0, 0, 2166, 0, + 0, 0, 0, 0, 1285, 0, 2534, 1442, 0, 0, + 35, 0, 0, 1443, 1424, 0, 0, 0, 2816, 0, + 1285, 1425, 0, 0, 0, 0, 0, 0, 0, 1426, + 0, 0, 3450, 0, 0, 0, 0, 2200, 4048, 1790, + 1790, 0, 2362, 0, 0, 0, 0, 0, 0, 1428, + 0, 0, 0, 0, 1444, 0, 0, 1429, 0, 835, + 835, 835, 835, 0, 0, 0, 0, 0, 2167, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3222, 0, + 0, 0, 0, 0, 0, 0, 0, 559, 2215, 0, + 0, 0, 0, 611, 559, 0, 0, 0, 0, 662, + 0, 559, 2168, 0, 1445, 0, 4101, 559, 1446, 0, + 716, 0, 1430, 0, 0, 1447, 3223, 2418, 1448, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 783, + 783, 0, 0, 1414, 0, 205, 0, 0, 0, 0, + 0, 0, 0, 1449, 0, 0, 0, 0, 0, 4962, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1415, 0, 0, + 0, 2169, 3450, 0, 0, 1450, 1878, 0, 2170, 1879, + 0, 2171, 0, 1880, 1881, 1882, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1878, 1416, 4186, 1879, + 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, 0, + 0, 2172, 0, 0, 0, 1886, 0, 0, 2173, 0, + 1883, 0, 0, 0, 0, 2174, 1417, 0, 1885, 0, + 3450, 0, 2175, 0, 1451, 1886, 1452, 835, 0, 1887, + 0, 772, 0, 835, 0, 1285, 1453, 0, 0, 0, + 0, 0, 772, 0, 0, 1454, 0, 2176, 4226, 1887, + 1418, 3450, 0, 0, 0, 0, 1455, 0, 2215, 0, + 0, 0, 0, 0, 0, 0, 842, 0, 0, 0, + 0, 0, 0, 772, 884, 0, 885, 3451, 889, 890, + 0, 893, 0, 895, 2774, 1419, 901, 3075, 903, 0, + 0, 0, 0, 0, 1456, 0, 4274, 1457, 1458, 0, + 0, 0, 0, 0, 0, 0, 0, 772, 0, 0, + 0, 2362, 0, 0, 0, 1285, 1285, 0, 0, 1420, + 0, 0, 0, 0, 0, 1459, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1888, 0, + 0, 0, 0, 1889, 2990, 0, 2990, 0, 0, 1421, + 1422, 0, 0, 772, 0, 0, 1385, 0, 1888, 3450, + 0, 0, 0, 1889, 1890, 1891, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1892, + 0, 0, 1285, 0, 1890, 1891, 0, 1423, 0, 1460, + 0, 35, 0, 1285, 0, 1424, 0, 0, 0, 1892, + 0, 0, 1425, 0, 0, 0, 0, 0, 3219, 0, + 1426, 0, 1893, 0, 0, 0, 0, 0, 1427, 0, + 0, 0, 0, 1285, 846, 0, 1894, 0, 1414, 1895, + 1428, 0, 1893, 1285, 1285, 0, 0, 0, 1429, 0, + 1285, 1285, 0, 0, 0, 1285, 1894, 0, 0, 1895, + 1285, 0, 0, 1285, 1285, 0, 0, 0, 1285, 4369, + 0, 0, 1415, 0, 1285, 772, 772, 772, 772, 0, + 0, 0, 3973, 3987, 3973, 5185, 1285, 3973, 0, 0, + 4383, 0, 0, 0, 3451, 0, 0, 0, 3451, 3450, + 0, 0, 0, 1430, 4398, 846, 846, 0, 0, 0, + 0, 1285, 0, 0, 0, 0, 1285, 0, 0, 0, + 0, 0, 1285, 1896, 0, 1878, 0, 0, 1879, 882, + 0, 1417, 1880, 1881, 1882, 0, 0, 1285, 0, 0, + 0, 3492, 0, 1896, 0, 0, 2816, 0, 0, 1883, + 0, 0, 0, 0, 0, 0, 0, 1885, 0, 0, + 703, 0, 0, 1285, 1886, 1418, 0, 0, 0, 0, + 0, 3450, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2990, 2990, 0, 0, 0, 1887, 0, + 0, 0, 0, 0, 0, 3220, 0, 0, 0, 0, + 1419, 2215, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4467, 0, 0, 0, 0, 1897, + 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, + 1905, 1906, 0, 0, 1420, 0, 2686, 0, 0, 1897, + 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, + 1905, 1906, 0, 967, 0, 0, 3715, 0, 0, 0, + 0, 976, 0, 1285, 0, 1422, 0, 0, 989, 990, + 5301, 1385, 996, 0, 999, 1000, 0, 0, 0, 1002, + 0, 0, 0, 0, 0, 835, 0, 0, 846, 846, + 1019, 0, 0, 0, 0, 0, 0, 1888, 0, 0, + 835, 0, 1889, 0, 0, 1029, 35, 0, 0, 0, + 3221, 0, 0, 0, 0, 0, 0, 1425, 0, 0, + 0, 0, 0, 1890, 1891, 1426, 0, 0, 1093, 1285, + 1095, 0, 0, 2200, 0, 0, 0, 0, 1892, 3233, + 1111, 0, 0, 830, 0, 1428, 3238, 0, 0, 2215, + 0, 0, 0, 1429, 0, 0, 0, 0, 1790, 0, + 0, 0, 0, 0, 0, 0, 3257, 0, 0, 0, + 0, 1893, 559, 1285, 3222, 0, 3263, 0, 0, 0, + 3264, 0, 0, 3266, 0, 1894, 835, 0, 3203, 3270, + 0, 3271, 0, 0, 3273, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1170, 0, 1430, 0, + 0, 0, 3223, 1878, 0, 0, 1879, 0, 772, 0, + 1880, 1881, 1882, 1070, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1883, 1442, 0, + 0, 0, 0, 0, 1443, 1885, 0, 1070, 0, 0, + 0, 0, 1886, 3310, 1285, 0, 0, 1532, 0, 0, + 783, 0, 0, 1285, 0, 0, 0, 0, 0, 0, + 0, 0, 1896, 0, 0, 0, 1887, 0, 0, 0, + 1285, 1285, 0, 0, 1285, 1444, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, + 0, 0, 3973, 0, 0, 0, 3451, 0, 0, 0, + 0, 3451, 0, 0, 3451, 830, 0, 3075, 0, 4658, + 0, 1405, 1285, 1285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1533, 0, 1446, + 4048, 0, 1285, 0, 0, 0, 1447, 0, 0, 1448, + 0, 0, 0, 4048, 882, 835, 835, 835, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1897, 0, + 0, 1898, 1899, 1900, 1449, 1901, 1902, 1903, 1904, 1905, + 1906, 0, 0, 0, 0, 1888, 0, 0, 0, 0, + 1889, 1564, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 847, 882, 0, 0, 0, 1450, 1577, 0, 0, + 0, 1890, 1891, 0, 0, 0, 0, 0, 0, 1588, + 0, 0, 1589, 0, 0, 0, 1892, 0, 0, 0, + 0, 0, 1592, 0, 0, 0, 0, 1596, 0, 0, + 0, 0, 0, 847, 0, 1599, 772, 0, 0, 0, + 0, 1609, 0, 0, 1613, 0, 0, 0, 4226, 1893, + 0, 772, 0, 0, 0, 1451, 772, 1452, 2990, 0, + 0, 0, 0, 1894, 0, 2215, 1895, 1453, 0, 0, + 0, 0, 0, 0, 0, 0, 1454, 0, 0, 0, + 0, 772, 0, 0, 1666, 4274, 0, 1455, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, + 772, 4048, 0, 0, 0, 0, 0, 3526, 0, 0, + 0, 0, 0, 1070, 0, 1878, 0, 0, 1879, 0, + 0, 0, 1880, 1881, 1882, 1534, 0, 1285, 1457, 1458, + 1285, 0, 1285, 0, 0, 0, 1070, 0, 0, 1883, + 0, 0, 0, 0, 0, 0, 0, 1885, 0, 0, + 1896, 1070, 1285, 0, 1886, 0, 1535, 0, 1285, 0, + 0, 0, 3451, 0, 0, 0, 4658, 0, 0, 0, + 0, 0, 0, 1285, 0, 0, 0, 0, 1887, 0, + 0, 0, 4876, 0, 0, 0, 0, 3585, 0, 3587, + 0, 0, 0, 0, 0, 559, 0, 559, 0, 559, + 0, 559, 0, 559, 559, 559, 772, 0, 0, 0, + 559, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1460, 1808, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1285, 0, 0, 1070, 0, 0, 0, 0, + 0, 835, 835, 835, 835, 0, 1897, 0, 0, 1898, + 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, + 0, 0, 0, 3876, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, + 0, 0, 0, 0, 0, 0, 0, 1888, 0, 0, + 0, 0, 1889, 0, 0, 0, 0, 0, 0, 772, + 0, 0, 3451, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 860, 1890, 1891, 0, 0, 0, 3672, 0, + 0, 0, 892, 0, 3679, 0, 0, 0, 1892, 0, + 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1070, 0, 1442, 0, 0, + 0, 0, 0, 1443, 0, 0, 0, 1285, 0, 0, + 830, 1893, 0, 1285, 0, 0, 1532, 5026, 0, 0, + 0, 0, 0, 0, 1285, 1894, 0, 0, 1895, 1285, + 0, 1285, 0, 1285, 0, 0, 0, 0, 0, 0, + 0, 4048, 0, 0, 1444, 0, 0, 835, 0, 882, + 0, 0, 0, 0, 783, 0, 0, 0, 0, 1285, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1878, 0, 0, 1879, 0, 0, 0, 1880, + 1881, 1882, 0, 0, 0, 0, 1533, 0, 1446, 1790, + 1790, 0, 0, 0, 0, 1447, 1883, 0, 1448, 0, + 0, 0, 1896, 0, 1885, 0, 0, 0, 0, 0, + 0, 1886, 0, 0, 0, 0, 0, 0, 0, 0, + 835, 2178, 0, 1449, 0, 0, 1934, 5103, 0, 0, + 0, 1285, 0, 0, 0, 1887, 0, 0, 0, 5114, + 0, 0, 3833, 0, 3835, 0, 3837, 0, 0, 0, + 0, 0, 0, 3841, 0, 1450, 0, 0, 0, 0, + 0, 0, 0, 0, 1285, 1285, 0, 0, 0, 3075, + 0, 0, 1285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1285, 0, 0, 4876, 0, 0, 0, 2268, + 2816, 1070, 3862, 0, 0, 0, 0, 0, 1897, 0, + 0, 1898, 1899, 1900, 847, 1901, 1902, 1903, 1904, 1905, + 1906, 0, 0, 0, 1451, 3927, 1452, 0, 835, 0, + 0, 0, 0, 0, 0, 1790, 1453, 0, 0, 0, + 0, 0, 0, 0, 0, 1454, 0, 0, 0, 0, + 0, 0, 0, 0, 1888, 0, 1455, 0, 0, 1889, + 2215, 0, 0, 1442, 0, 830, 0, 0, 1070, 1443, + 1285, 0, 0, 0, 0, 0, 0, 0, 0, 4048, + 1890, 1891, 0, 0, 0, 847, 847, 1285, 0, 0, + 0, 0, 0, 0, 3046, 1892, 1285, 1457, 1458, 0, + 5026, 0, 0, 0, 0, 0, 0, 1070, 0, 0, + 1444, 0, 0, 1285, 0, 0, 0, 0, 0, 0, + 835, 0, 0, 0, 0, 3047, 919, 0, 1893, 0, + 1070, 0, 964, 0, 0, 0, 2406, 0, 0, 0, + 0, 1878, 1894, 0, 1879, 1895, 0, 0, 1880, 1881, + 1882, 5114, 835, 835, 0, 0, 0, 0, 0, 0, + 2256, 0, 0, 0, 1446, 1883, 0, 0, 0, 0, + 0, 1447, 0, 1885, 1448, 0, 0, 0, 1285, 1285, + 1886, 0, 0, 0, 0, 0, 0, 0, 0, 1460, + 0, 0, 0, 0, 0, 0, 0, 0, 1878, 1449, + 0, 1879, 0, 0, 1887, 1880, 1881, 1882, 0, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1285, 0, 1883, 0, 1070, 0, 1285, 0, 0, 1896, + 1885, 1450, 0, 1070, 0, 0, 0, 1886, 0, 0, + 835, 0, 0, 0, 0, 1070, 0, 5026, 0, 0, + 830, 0, 0, 0, 0, 0, 0, 0, 2526, 0, + 2527, 1887, 0, 0, 0, 0, 0, 0, 847, 847, + 0, 0, 0, 0, 0, 0, 0, 2538, 0, 2539, + 0, 0, 0, 0, 0, 0, 0, 1169, 0, 0, + 1451, 0, 1452, 559, 0, 559, 0, 559, 0, 559, + 1070, 559, 1453, 0, 0, 559, 0, 0, 0, 0, + 0, 1454, 1292, 1888, 1070, 0, 0, 0, 1889, 0, + 0, 0, 1455, 0, 0, 1897, 1070, 0, 1898, 1899, + 1900, 1315, 1901, 1902, 1903, 1904, 1905, 1906, 1070, 1890, + 1891, 0, 4013, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1340, 0, 1892, 0, 0, 0, 0, 0, + 2257, 0, 0, 1457, 1458, 0, 0, 0, 0, 0, + 1888, 0, 0, 0, 0, 1889, 0, 0, 1070, 1070, + 0, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 2258, 0, 0, 0, 0, 1890, 1891, 0, 0, + 0, 1894, 0, 0, 1895, 0, 0, 0, 0, 0, + 0, 1892, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1471, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1893, 0, 1442, 0, 0, 0, + 0, 0, 1443, 0, 0, 1460, 0, 0, 1894, 0, + 0, 1895, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1896, 0, + 0, 0, 0, 1444, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1070, 0, 0, 0, 0, 0, 0, 0, + 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, + 0, 0, 4305, 0, 0, 0, 4307, 0, 0, 0, + 1618, 0, 0, 0, 1883, 1896, 0, 1446, 0, 0, + 0, 0, 1885, 0, 1447, 0, 0, 1448, 0, 1886, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1656, + 1659, 1660, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1449, 1887, 1897, 0, 0, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, + 0, 4042, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2819, 2820, 0, 1450, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2835, 2836, 0, 0, 0, 2839, 2840, 0, 0, 0, + 2843, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, + 1903, 1904, 1905, 1906, 2854, 0, 0, 0, 4330, 0, + 0, 2863, 0, 0, 0, 2866, 2867, 0, 0, 2870, + 2871, 0, 0, 1451, 0, 1452, 2876, 0, 0, 0, + 0, 0, 0, 0, 0, 1453, 0, 0, 0, 2893, + 0, 2895, 1888, 0, 1454, 0, 0, 1889, 0, 0, + 0, 0, 0, 0, 0, 1455, 0, 0, 0, 1292, + 2919, 0, 0, 0, 0, 2921, 0, 0, 1890, 1891, + 0, 0, 0, 0, 0, 0, 0, 0, 2926, 0, + 1070, 0, 0, 1892, 1070, 1070, 0, 2933, 0, 2935, + 1292, 0, 2938, 2941, 2943, 0, 1457, 1458, 0, 2951, + 2954, 0, 0, 4446, 0, 0, 0, 0, 0, 2967, + 0, 0, 0, 0, 2976, 0, 1893, 0, 0, 2980, + 0, 0, 3219, 0, 1459, 0, 0, 0, 0, 0, + 1894, 0, 0, 1895, 0, 2996, 0, 0, 0, 0, + 0, 0, 1414, 3007, 4469, 4470, 1070, 0, 0, 0, + 0, 0, 0, 0, 3022, 0, 0, 0, 1070, 0, + 0, 0, 0, 0, 0, 0, 3029, 0, 0, 3032, + 0, 0, 0, 0, 3035, 0, 1415, 0, 0, 3037, + 3038, 0, 0, 0, 3041, 0, 0, 3045, 1460, 0, + 0, 3052, 3053, 3054, 3055, 0, 3057, 0, 1070, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3082, + 3083, 0, 3085, 0, 0, 0, 0, 1896, 0, 0, + 0, 0, 3093, 3094, 0, 0, 1949, 0, 0, 1878, + 4510, 4511, 1879, 0, 0, 1417, 1880, 1881, 1882, 0, + 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 0, 0, 1883, 1880, 1881, 1882, 0, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 1418, + 0, 1883, 0, 2085, 3138, 0, 0, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 0, 0, 1887, 0, 0, 0, 0, 0, 0, 3220, + 0, 0, 3175, 0, 1419, 0, 0, 0, 0, 0, + 1887, 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, + 4365, 0, 0, 0, 0, 0, 0, 0, 1420, 0, + 0, 0, 0, 0, 0, 4606, 0, 4607, 4608, 1878, + 0, 0, 1879, 2209, 0, 0, 1880, 1881, 1882, 0, + 0, 4612, 2232, 0, 0, 0, 0, 0, 0, 1422, + 0, 0, 0, 1883, 0, 1385, 0, 1070, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, + 0, 1878, 2269, 0, 1879, 0, 0, 0, 1880, 1881, + 1882, 1888, 0, 0, 0, 2282, 1889, 0, 2285, 0, + 35, 0, 1887, 0, 1424, 1883, 0, 0, 0, 1888, + 0, 1425, 0, 1885, 1889, 0, 0, 1890, 1891, 1426, + 1886, 0, 0, 0, 0, 0, 0, 2200, 0, 0, + 0, 0, 1892, 0, 0, 1890, 1891, 0, 0, 1428, + 0, 0, 0, 0, 1887, 0, 0, 1429, 2333, 1070, + 1892, 0, 3305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2351, 0, 0, 1893, 0, 0, 3222, 0, + 0, 0, 0, 0, 0, 2363, 0, 0, 0, 1894, + 0, 3321, 1895, 1893, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, + 1895, 0, 1430, 0, 0, 0, 3223, 0, 0, 0, + 0, 1888, 0, 0, 0, 0, 1889, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1890, 1891, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1892, 1888, 0, 0, 2458, 0, 1889, 0, + 1070, 0, 0, 2471, 0, 0, 1896, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1070, 0, 1890, + 1891, 0, 0, 0, 1896, 1893, 0, 0, 0, 0, + 1070, 0, 0, 0, 1892, 0, 0, 0, 0, 1894, + 0, 0, 1895, 0, 0, 0, 0, 0, 0, 0, + 1442, 0, 0, 0, 0, 0, 1443, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1893, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1894, 0, 0, 1895, 0, 0, 4838, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1444, 0, 0, + 0, 0, 1897, 0, 2543, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 4615, + 1897, 0, 0, 1898, 1899, 1900, 1896, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 4626, 0, 0, + 0, 0, 1292, 1292, 0, 0, 0, 0, 0, 0, + 0, 1446, 0, 0, 0, 0, 0, 0, 1447, 2590, + 4886, 1448, 0, 0, 0, 0, 0, 0, 1896, 0, + 0, 0, 0, 0, 0, 3529, 0, 0, 0, 3531, + 0, 0, 0, 0, 0, 3533, 1449, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3544, 3546, 0, 0, 0, 3546, 0, 0, 0, + 4927, 3557, 3558, 3559, 0, 3561, 0, 0, 1450, 0, + 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 1070, 3582, 0, 1070, 4635, + 1070, 0, 0, 0, 0, 1070, 3588, 3589, 3590, 3591, + 0, 0, 0, 0, 0, 0, 2749, 0, 0, 0, + 0, 0, 0, 0, 1897, 0, 2764, 1898, 1899, 1900, + 0, 1901, 1902, 1903, 1904, 1905, 1906, 1451, 0, 1452, + 0, 4638, 0, 3608, 0, 0, 3613, 3614, 3615, 1453, + 0, 0, 0, 0, 1070, 0, 0, 0, 1454, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1455, + 0, 1070, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1442, + 0, 0, 0, 0, 0, 1443, 1070, 0, 0, 0, + 0, 0, 1497, 0, 0, 0, 0, 1561, 0, 0, + 1457, 1458, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1498, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1444, 0, 1562, 0, + 0, 0, 0, 2775, 0, 2778, 0, 0, 3682, 0, + 0, 0, 1878, 0, 0, 1879, 3686, 0, 0, 1880, + 1881, 1882, 0, 0, 0, 1070, 0, 1070, 0, 0, + 1499, 0, 0, 0, 3695, 0, 1883, 0, 0, 0, + 2783, 1292, 0, 0, 1885, 0, 0, 0, 0, 0, + 1446, 1886, 0, 0, 0, 0, 0, 1447, 0, 0, + 1448, 3741, 1460, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1887, -128, 0, 0, 0, + 0, 0, 0, 0, 0, 1449, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 3, 4, 1070, 0, + 0, 0, 0, 3778, 1500, 0, 0, 1450, 3784, 0, + 0, 0, 5, 0, 2784, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1070, 0, 0, 0, + 0, 0, 6, 0, 7, 8, 0, 0, 3822, 0, + 0, 9, 0, 10, 0, 0, 0, 0, 0, 1070, + 0, 0, 1501, 0, 11, 1502, 12, 1070, 0, 0, + 0, 0, 0, 0, 0, 0, 1503, 0, 1452, 0, + 0, 0, 0, 13, 1888, 3838, 14, 3839, 1453, 1889, + 0, 0, 0, 0, 0, 0, 2957, 1454, 0, 0, + 15, 0, 16, 0, 0, 0, 17, 1504, 1455, 0, + 1890, 1891, 18, 0, 0, 0, 0, 2984, 0, 0, + 19, 0, 20, 0, 0, 1892, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 1070, 0, 0, 0, + 0, 0, 0, 0, 22, 5228, 1505, 0, 0, 1457, + 1458, 1506, 0, 0, 1070, 0, 0, 0, 1893, 0, + 23, 0, 0, 0, 0, 0, 0, 1070, 0, 0, + 0, 1507, 1894, 0, 0, 1895, 0, 1508, 0, 0, + 0, 3050, 3051, 0, 0, 0, 0, 0, 0, 0, + 0, 1509, 0, 0, 0, 0, 0, 0, 0, 24, + 25, 0, 0, 0, 0, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 0, 1460, 0, 0, 0, 0, 832, 855, 0, 0, + 0, 0, 0, 0, 0, 855, 0, 0, 0, 1896, + 0, 0, 0, 1070, 29, 0, 0, 0, 855, 0, + 0, 0, 30, 0, 0, 0, 3164, 0, 0, 0, + 0, 0, 0, 0, 1070, 31, 0, 0, 0, 0, + 0, 32, 33, 0, 34, 0, 0, 0, 0, 35, + 0, 0, 0, 0, 36, 0, 0, 37, 0, 1070, + 0, 0, 38, 0, 0, 2785, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, + 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 1070, 0, 4059, 0, 4060, 0, 0, + 0, 0, 0, 44, 4062, 1897, 0, 0, 1898, 1899, + 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1878, 0, + 4072, 1879, 45, 0, 0, 1880, 1881, 1882, 0, 0, + 0, 0, 46, 0, 0, 0, 4080, 1878, 47, 0, + 1879, 0, 1883, 48, 1880, 1881, 1882, 1442, 0, 0, + 1885, 0, 0, 1443, 4100, 0, 49, 1886, 0, 0, + 0, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, + 0, 0, 4104, 0, 0, 0, 1886, 0, 0, 50, + 0, 1887, 4113, 0, 0, 0, 0, 0, 0, 1070, + 0, 0, 0, 51, 1444, 0, -128, 0, 0, 0, + 1887, 4142, 0, 3304, 0, 0, 0, 0, 0, 0, + 0, 0, 4150, 4151, 4152, 0, 0, 0, 0, 4156, + 4157, 4158, 4159, 0, 0, 4161, 4162, 0, 0, 0, + 0, 4169, 4170, 0, 4172, 4173, 4174, 4175, 4176, 4177, + 0, 4179, 0, 0, 0, 0, 0, 0, 1446, 0, + 4187, 0, 0, 4190, 4191, 1447, 0, 1878, 1448, 0, + 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 0, + 0, 0, 3546, 0, 0, 0, 0, 0, 0, 0, + 0, 1883, 0, 1449, 0, 0, 0, 0, 1070, 1885, + 1888, 0, 0, 0, 4211, 1889, 1886, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1888, + 0, 0, 1070, 0, 1889, 1450, 1890, 1891, 0, 0, + 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1892, 0, 0, 0, 1890, 1891, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1892, 0, 0, 0, 0, 0, 3432, 0, 0, 0, + 0, 0, 0, 0, 1893, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 1451, 0, 1452, 0, 1894, 0, + 0, 1895, 855, 1893, 0, 0, 1453, 0, 855, 0, + 0, 0, 0, 3546, 0, 1454, 0, 1894, 0, 0, + 1895, 855, 0, 0, 0, 0, 1455, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, + 0, 0, 832, 0, 0, 4315, 0, 0, 1072, 1888, + 0, 0, 832, 855, 1889, 0, 0, 1070, 0, 0, + 855, 0, 0, 0, 2180, 0, 0, 1457, 1458, 0, + 0, 0, 1072, 855, 0, 1890, 1891, 0, 0, 0, + 0, 0, 0, 855, 0, 1896, 0, 0, 0, 0, + 1892, 0, 0, 0, 0, 2181, 0, 0, 0, 0, + 0, 0, 0, 0, 1896, 0, 0, 1070, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1893, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, + 1895, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1460, + 0, 0, 0, 0, 0, 832, 832, 0, 0, 0, + 0, 855, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, + 1903, 1904, 1905, 1906, 0, 0, 0, 832, 4687, 0, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 4721, 0, 0, + 0, 0, 0, 0, 1896, 0, 0, 0, 0, 1070, + 0, 0, 3630, 0, 0, 0, 0, 0, 0, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1878, + 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, 4450, + 0, 0, 0, 4451, 4452, 4453, 4454, 0, 0, 4456, + 0, 0, 0, 1883, 0, 0, 0, 0, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4474, 4475, 4476, 0, 4477, 0, 4479, 4480, 0, 0, + 0, 0, 1887, 0, 0, 0, 0, 0, 4489, 4490, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 4761, 0, 0, + 0, 832, 0, 0, 0, 4495, 0, 0, 1072, 0, + 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1070, 0, 0, 0, 4505, 0, + 0, 1072, 0, 0, 1878, 0, 0, 1879, 3744, 3745, + 3746, 1880, 1881, 1882, 0, 0, 1072, 0, 0, 0, + 0, 0, 0, 0, 0, 3755, 0, 0, 1883, 0, + 0, 0, 1070, 0, 0, 0, 1885, 0, 0, 0, + 0, 0, 0, 1886, 0, 0, 1442, 0, 3771, 0, + 0, 1888, 1443, 1070, 0, 0, 1889, 0, 3781, 3783, + 0, 832, 0, 3788, 0, 0, 0, 1887, 0, 0, + 0, 0, 4557, 0, 0, 0, 3802, 1890, 1891, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1892, 1444, 0, 0, 0, 0, 0, 0, + 1072, 4585, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1070, 0, + 0, 0, 0, 0, 0, 1893, 4609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 1894, + 0, 0, 1895, 0, 0, 0, 0, 1446, 0, 0, + 0, 855, 0, 0, 1447, 0, 0, 1448, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 855, 1292, + 0, 0, 0, 0, 0, 0, 1888, 0, 0, 0, + 0, 1889, 1449, 1878, 0, 0, 1879, 0, 0, 0, + 1880, 1881, 1882, 0, 0, 0, 855, 0, 0, 0, + 0, 0, 1890, 1891, 0, 0, 0, 1883, 0, 0, + 1072, 0, 855, 0, 1450, 1885, 0, 1892, 0, 0, + 0, 0, 1886, 0, 0, 0, 1896, 855, 0, 1070, + 855, 0, 0, 559, 0, 0, 0, 0, 0, 0, + 0, 0, 832, 0, 0, 0, 1887, 0, 0, 0, + 1893, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1894, 0, 0, 1895, 0, 0, + 0, 1070, 832, 1451, 0, 1452, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1453, 0, 0, 0, 0, + 0, 0, 0, 4710, 1454, 3959, 3960, 3961, 0, 0, + 832, 832, 832, 0, 832, 1455, 0, 0, 0, 0, + 0, 4720, 0, 0, 0, 0, 4725, 4726, 0, 0, + 0, 0, 1897, 0, 832, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 5062, + 0, 0, 0, 2927, 0, 0, 1457, 1458, 855, 0, + 0, 1896, 0, 0, 0, 1888, 855, 855, 0, 0, + 1889, 0, 0, 0, 0, 832, 2033, 4784, 0, 0, + 0, 0, 0, 0, 1459, 0, 0, 0, 0, 0, + 0, 1890, 1891, 0, 0, 0, 0, 4801, 0, 0, + 0, 0, 0, 832, 0, 0, 1892, 832, 832, 0, + 0, 0, 0, 0, 1070, 0, 0, 0, 0, 0, + 1878, 0, 832, 1879, 0, 0, 1072, 1880, 1881, 1882, + 0, 0, 0, 2033, 3546, 0, 0, 0, 0, 1893, + 0, 4837, 0, 0, 1883, 0, 0, 0, 1460, 0, + 0, 0, 1885, 1894, 0, 0, 1895, 1897, 0, 1886, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 0, 0, 0, 0, 5184, 0, 0, 0, 0, 0, + 0, 0, 0, 1887, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1072, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4879, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4895, 0, 1072, 0, 0, 0, 1070, 0, 0, 1878, + 1896, 4903, 1879, 0, 0, 0, 1880, 1881, 1882, 0, + 0, 0, 0, 0, 0, 1072, 0, 0, 0, 0, + 0, 1070, 0, 1883, 0, 0, 0, 0, 0, 0, + 0, 1885, 0, 0, 0, 0, 0, 0, 1886, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1888, 4208, 0, 0, 0, 1889, 0, 0, + 0, 1070, 1887, 4967, 4221, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 855, 0, 0, 0, 1890, 1891, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1892, 1072, 4250, 1897, 0, 0, 1898, + 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, 1072, + 0, 0, 0, 5247, 0, 1070, 0, 0, 1072, 0, + 1070, 1070, 0, 0, 3546, 2033, 1893, 0, 0, 2471, + 1072, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1894, 0, 0, 1895, 0, 0, 0, 0, 0, 855, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 855, + 0, 1888, 0, 0, 0, 2543, 1889, 0, 0, 0, + 0, 0, 0, 0, 0, 1072, 5050, 0, 0, 0, + 0, 0, 832, 0, 0, 832, 0, 1890, 1891, 1072, + 0, 5063, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 1072, 1892, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1072, 0, 0, 0, 1896, 0, 0, + 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 832, 832, 0, 855, 855, 1893, 0, 0, 0, 0, + 5090, 0, 0, 0, 0, 855, 0, 0, 0, 1894, + 0, 0, 1895, 1072, 1072, 5101, 855, 855, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 855, 0, 0, 0, 0, 4372, 4373, 4374, + 4375, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, + 0, 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, + 5267, 0, 0, 5158, 0, 0, 1896, 0, 832, 0, + 832, 0, 0, 0, 0, 832, 832, 0, 0, 0, + 0, 0, 832, 832, 832, 0, 0, 0, 832, 0, + 832, 832, 832, 832, 832, 832, 0, 832, 0, 832, + 832, 0, 0, 832, 0, 5180, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1072, 832, 832, + 832, 832, 2033, 0, 0, 0, 832, 0, 0, 0, + 832, 0, 0, 832, 0, 0, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 0, 832, 0, 0, 1070, + 0, 0, 0, 832, 0, 832, 0, 0, 0, 0, + 0, 0, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 5300, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5240, + 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 1878, 0, 0, + 1879, 1883, 0, 0, 1880, 1881, 1882, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 1887, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 1887, 0, 0, 832, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1878, 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, + 0, 0, 0, 0, 0, 0, 0, 0, 855, 1878, + 0, 0, 1879, 0, 1883, 1072, 1880, 1881, 1882, 1072, + 1072, 0, 1885, 0, 0, 0, 855, 0, 0, 1886, + 4600, 2033, 855, 1883, 0, 0, 855, 0, 0, 0, + 0, 1885, 0, 0, 855, 0, 3371, 0, 1886, 1888, + 0, 3372, 0, 1887, 1889, 0, 0, 1442, 0, 0, + 0, 0, 855, 1443, 0, 832, 0, 0, 0, 1888, + 0, 0, 1887, 0, 1889, 1890, 1891, 832, 0, 0, + 0, 1072, 0, 0, 832, 0, 0, 0, 0, 1888, + 1892, 0, 0, 1072, 1889, 1890, 1891, 0, 0, 0, + 0, 0, 0, 0, 1444, 0, 855, 0, 0, 0, + 1892, 0, 0, 0, 0, 1890, 1891, 0, 0, 0, + 0, 0, 0, 1893, 855, 855, 0, 0, 0, 0, + 1892, 0, 0, 1072, 0, 0, 0, 1894, 5212, 0, + 1895, 0, 0, 1893, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2033, 855, 1894, 1446, 2033, + 1895, 0, 1888, 1893, 0, 1447, 0, 1889, 1448, 0, + 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, + 1895, 1888, 855, 0, 2033, 0, 1889, 0, 1890, 1891, + 855, 0, 0, 1449, 0, 0, 0, 855, 0, 0, + 0, 855, 0, 1892, 3919, 0, 0, 1890, 1891, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 855, 1892, 0, 1896, 1450, 855, 0, 0, 0, + 855, 0, 0, 2033, 0, 0, 1893, 0, 0, 0, + 0, 0, 0, 855, 1896, 0, 0, 0, 0, 0, + 1894, 0, 0, 1895, 0, 1893, 855, 0, 4759, 0, + 0, 0, 0, 0, 1896, 0, 855, 0, 0, 1894, + 0, 0, 1895, 4771, 0, 5213, 0, 0, 1292, 0, + 3920, 0, 0, 0, 1451, 0, 1452, 0, 0, 0, + 3344, 0, 0, 0, 0, 0, 1453, 0, 0, 0, + 0, 0, 0, 4805, 0, 1454, 0, 0, 0, 0, + 0, 832, 1072, 0, 0, 0, 1455, 0, 0, 0, + 1897, 2033, 4822, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 2770, 0, 1896, 0, 0, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 3090, 832, 1896, 1457, 1458, 0, + 1897, 0, 0, 1898, 1899, 1900, 0, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1878, 3091, 0, 1879, 0, 0, + 0, 1880, 1881, 1882, 1072, 0, 0, 0, 855, 0, + 0, 0, 0, 0, 0, 0, 0, 832, 1883, 0, + 0, 3330, 0, 0, 0, 0, 1885, 0, 0, 0, + 0, 0, 0, 1886, 0, 0, 1442, 0, 4892, 0, + 0, 0, 1443, 1897, 0, 0, 1898, 1899, 1900, 0, + 1901, 1902, 1903, 1904, 1905, 1906, 0, 1887, 0, 1460, + 0, 855, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 0, 0, 0, 0, 0, + 0, 0, 0, 1444, 0, 0, 0, 0, 0, 1878, + 0, 0, 1879, 0, 0, 0, 1880, 1881, 1882, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1883, 0, 1072, 3376, 855, 0, 0, + 0, 1885, 0, 0, 0, 855, 0, 0, 1886, 832, + 0, 4974, 1072, 0, 0, 832, 0, 1446, 0, 0, + 0, 0, 0, 0, 1447, 1072, 0, 1448, 0, 0, + 0, 0, 1887, 0, 0, 0, 832, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 1888, 0, 0, 0, + 0, 1889, 1449, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 832, 832, 832, 0, 0, 832, + 0, 0, 1890, 1891, 0, 0, 0, 832, 832, 832, + 832, 0, 0, 0, 1450, 2033, 0, 1892, 0, 0, + 832, 2033, 0, 832, 0, 832, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 832, 832, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1893, 0, 0, 0, 832, 0, 832, 0, 832, 0, + 0, 0, 0, 0, 1894, 0, 0, 1895, 0, 0, + 0, 1888, 0, 1451, 0, 1452, 1889, 0, 832, 0, + 0, 0, 0, 0, 0, 1453, 0, 0, 0, 832, + 0, 832, 832, 832, 1454, 0, 0, 1890, 1891, 0, + 0, 0, 0, 0, 0, 1455, 855, 0, 0, 832, + 0, 0, 1892, 0, 0, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 832, 0, 3554, 0, 1893, 1457, 1458, 0, 0, + 0, 1896, 0, 0, 0, 0, 0, 0, 0, 1894, + 1072, 0, 1895, 1072, 1878, 1072, 0, 1879, 0, 1442, + 1072, 1880, 1881, 1882, 3555, 1443, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 855, 855, 0, 1883, 0, + 0, 832, 0, 0, 0, 0, 1885, 0, 0, 0, + 0, 0, 1878, 1886, 0, 1879, 0, 0, 0, 1880, + 1881, 1882, 855, 0, 0, 855, 1444, 0, 0, 1072, + 0, 0, 0, 0, 0, 0, 1883, 1887, 0, 3387, + 0, 0, 0, 0, 1885, 0, 1072, 0, 1460, 0, + 0, 1886, 0, 0, 0, 0, 1896, 1897, 0, 0, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 0, 1072, 0, 0, 0, 1887, 0, 0, 0, 0, + 1446, 0, 0, 0, 0, 0, 0, 1447, 0, 0, + 1448, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2033, 2033, 2033, 0, + 0, 0, 0, 0, 0, 1449, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3381, 0, + 855, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1072, 0, 1072, 0, 0, 0, 1888, 1450, 0, 0, + 855, 1889, 1897, 0, 0, 1898, 1899, 1900, 0, 1901, + 1902, 1903, 1904, 1905, 1906, 855, 0, 0, 0, 0, + 0, 0, 1890, 1891, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1888, 0, 0, 1892, 0, 1889, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1451, 0, 1452, 0, + 1890, 1891, 0, 0, 0, 0, 0, 0, 1453, 0, + 1893, 0, 0, 1072, 0, 1892, 0, 1454, 0, 0, + 0, 0, 0, 0, 1894, 0, 0, 1895, 1455, 0, + 0, 0, 0, 855, 0, 0, 0, 0, 0, 0, + 0, 1072, 0, 0, 0, 0, 0, 0, 1893, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1894, 0, 1072, 1895, 3609, 0, 0, 1457, + 1458, 2033, 1072, 0, 1878, 0, 0, 1879, 855, 0, + 855, 1880, 1881, 1882, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 855, 0, 855, 0, 3610, 1883, 0, + 0, 0, 0, 0, 0, 0, 1885, 0, 0, 0, + 0, 1896, 0, 1886, 0, 0, 0, 2033, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1887, 0, 0, + 0, 1072, 0, 0, 0, 0, 0, 0, 0, 1896, + 0, 0, 0, 0, 0, 0, 0, 0, 855, 1072, + 0, 1460, 0, 0, 0, 0, 0, 0, 0, 848, + 857, 0, 1072, 0, 0, 0, 0, 0, 857, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 1897, 0, 0, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 0, 0, 855, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 855, 1897, 1888, 855, 1898, 1899, + 1900, 1889, 1901, 1902, 1903, 1904, 1905, 1906, 0, 0, + 0, 0, 0, 0, 0, 832, 0, 0, 1072, 0, + 189, 0, 1890, 1891, 832, 0, 0, 0, 0, 0, + 832, 0, 832, 0, 0, 832, 0, 1892, 0, 1072, + 832, 832, 832, 832, 0, 0, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 0, 0, 0, 832, + 832, 0, 0, 0, 1072, 0, 0, 190, 0, 832, + 1893, 0, 0, 832, 0, 2033, 0, 832, 0, 0, + 0, 0, 191, 0, 1894, 832, 0, 1895, 832, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 1072, 832, + 192, 0, 832, 832, 0, 0, 193, 832, 832, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 832, 0, 0, 832, 0, 0, + 0, 0, 0, 0, 195, 0, 1878, 0, 0, 1879, + 832, 0, 196, 1880, 1881, 1882, 832, 832, 832, 0, + 0, 0, 0, 0, 197, 0, 0, 0, 0, 198, + 1883, 0, 0, 3926, 0, 0, 199, 0, 1885, 0, + 0, 1896, 832, 0, 0, 1886, 0, 0, 0, 0, + 0, 0, 0, 200, 0, 0, 0, 0, 832, 0, + 856, 0, 0, 0, 1072, 0, 0, 0, 856, 1887, + 0, 3872, 0, 0, 0, 0, 832, 0, 201, 0, + 0, 856, 0, 0, 0, 0, 0, 1878, 0, 0, + 1879, 0, 0, 0, 1880, 1881, 1882, 0, 0, 202, + 0, 0, 0, 0, 0, 0, 0, 855, 0, 0, + 0, 1883, 0, 0, 0, 0, 0, 0, 0, 1885, + 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, + 0, 0, 0, 203, 0, 0, 0, 1897, 0, 0, + 1898, 1899, 1900, 0, 1901, 1902, 1903, 1904, 1905, 1906, + 1887, 0, 0, 0, 0, 0, 204, 2033, 0, 0, + 0, 0, 2033, 1072, 2033, 0, 205, 0, 0, 206, + 0, 0, 0, 0, 0, 857, 0, 0, 1888, 0, + 0, 857, 0, 1889, 0, 0, 2033, 1072, 0, 0, + 0, 0, 0, 0, 857, 207, 0, 0, 0, 0, + 208, 0, 209, 2033, 1890, 1891, 0, 0, 0, 210, + 857, 0, 211, 0, 0, 0, 0, 0, 855, 1892, + 0, 855, 0, 0, 0, 848, 857, 0, 0, 0, + 0, 212, 0, 857, 0, 0, 0, 213, 0, 0, + 0, 214, 215, 0, 0, 216, 857, 0, 0, 217, + 0, 0, 1893, 0, 0, 0, 857, 0, 218, 1888, + 0, 0, 0, 219, 1889, 0, 1894, 0, 0, 1895, + 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, + 0, 0, 0, 832, 0, 1890, 1891, 0, 221, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1892, 0, 0, 0, 0, 0, 0, 0, 855, 855, + 0, 0, 1072, 0, 0, 0, 0, 0, 855, 0, + 0, 0, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 0, 0, 1893, 0, 0, 0, 855, 0, 0, + 0, 0, 0, 0, 857, 0, 0, 1894, 0, 0, + 1895, 0, 0, 1896, 1442, 0, 0, 0, 0, 0, + 1443, 0, 1072, 832, 832, 0, 0, 1497, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1498, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1444, 0, 0, 0, 0, 0, 0, 0, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 1896, 1499, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 856, 0, 0, 0, 1897, + 0, 856, 1898, 1899, 1900, 1446, 1901, 1902, 1903, 1904, + 1905, 1906, 1447, 0, 856, 1448, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 832, 832, 0, 1072, 0, 0, 0, 832, 832, + 1449, 0, 0, 832, 1072, 0, 856, 0, 832, 0, + 0, 832, 832, 856, 0, 0, 832, 0, 0, 0, + 0, 0, 832, 0, 0, 0, 856, 0, 0, 1500, + 0, 0, 1450, 0, 832, 848, 856, 0, 0, 0, + 1897, 0, 832, 1898, 1899, 1900, 832, 1901, 1902, 1903, + 1904, 1905, 1906, 0, 0, 0, 0, 0, 0, 832, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 1501, 0, 0, + 1502, 0, 0, 0, 0, 832, 0, 0, 0, 0, + 0, 1503, 0, 1452, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1453, 0, 0, 0, 0, 0, 0, + 0, 832, 1454, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1504, 1455, 856, 0, 0, 0, 0, 1072, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 0, 0, 0, + 0, 2033, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3023, 0, 0, 1457, 1458, 1506, 1072, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 855, 0, 0, 1507, 0, 1072, 0, + 857, 0, 3024, 0, 0, 855, 0, 0, 0, 0, + 0, 0, 0, 0, 857, 0, 1509, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 855, 0, 0, 0, 0, 0, 1061, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 1061, 1072, 0, 0, 1460, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 857, 0, 0, 857, 0, 0, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 855, 0, 0, 0, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, + 0, 0, 1072, 0, 1072, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 832, 0, 0, 0, 1072, 0, 0, 857, + 857, 832, 0, 0, 0, 0, 0, 0, 0, 2035, + 0, 0, 0, 0, 0, 0, 0, 0, 832, 832, + 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 0, 832, + 856, 0, 832, 832, 0, 0, 0, 0, 0, 0, + 832, 832, 0, 0, 856, 0, 2035, 0, 0, 571, + 0, 0, 0, 0, 572, 0, 0, 0, 832, 0, + 832, 856, 0, 0, 0, 855, 573, 855, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, + 0, 575, 0, 0, 0, 856, 0, 0, 0, 1072, + 855, 0, 576, 0, 0, 0, -850, 0, 0, 832, + 856, 1061, 0, 856, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 577, 0, 1061, 0, 0, 0, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2033, 0, 579, 0, 0, + 0, 832, 0, 0, 0, 0, 0, 0, 580, 0, + 0, 0, 0, 0, 0, 0, 581, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 582, 0, + 0, 0, 0, 0, 0, 0, 583, 0, 0, 0, + 584, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4811, -1070, 0, 0, + 1061, 0, 0, 0, 0, 0, 0, 857, 1071, 832, + 0, 1072, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 1071, 0, 0, 0, 0, 0, 856, + 856, 0, 0, 0, 585, 832, 1072, 0, 832, 2034, + 832, 0, 0, -572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, + 832, 0, 0, 0, 0, 0, 832, 0, 0, 0, + 832, 0, 0, 0, 0, 0, 1072, 586, 0, 0, + 587, 832, 857, 0, 0, 0, 0, 0, 0, 0, + 857, 0, 0, 0, 0, 0, 2034, 0, 0, 0, + 588, 0, 857, 0, 0, 0, 0, 1071, 0, 0, + 1061, 0, 0, 589, 0, 0, 0, 0, 0, 0, + -449, 0, 2033, 0, 0, 0, 0, 0, 0, 0, + 1072, 0, 0, 0, 0, 1072, 1072, 0, 0, 590, + 832, 0, 0, 0, 0, 0, 591, 0, 0, 0, + 0, 0, 0, -449, 0, 0, 592, 0, 855, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 848, 848, 593, 857, 857, 0, 0, + 0, 594, 0, 0, 0, 0, -449, 832, 857, 595, + 596, 0, 597, 598, 0, 0, 0, 0, 0, 857, + 857, 0, 599, 0, 0, 0, 0, 600, 0, 0, + 832, 0, 0, 601, 0, 857, 602, 1071, 0, 603, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -449, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1072, 1072, 0, 848, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 832, 0, 0, 832, 0, + 0, 832, 0, 0, 0, 0, 0, 856, 0, 0, + 0, 0, 832, 0, 0, 0, 0, 832, 0, 832, + 0, 832, 0, 0, 0, 0, 0, 0, 0, 832, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1061, 832, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2034, 0, + 0, 0, 0, 0, 0, 2035, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2033, 0, 855, + 0, 0, 856, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 1268, 1268, + 0, 0, 856, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 832, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1061, 2107, 0, 0, 0, 0, 0, 0, + 0, 0, 832, 832, 0, 0, 0, 0, 0, 0, + 832, 2033, 0, 0, 1072, 1061, 856, 856, 0, 0, + 832, 0, 0, 0, 0, 0, 0, 0, 856, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, + 856, 0, 832, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, + 2107, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 832, 1061, 0, 0, 0, 832, 1071, + 0, 0, 0, 0, 0, 0, 0, 832, 0, 1061, + 0, 857, 0, 832, 832, 832, 0, 0, 1061, 0, + 0, 0, 1071, 0, 832, 0, 0, 0, 0, 857, + 1061, 0, 0, 0, 2035, 857, 0, 0, 0, 857, + 0, 832, 0, 0, 0, 0, 0, 857, 0, 0, + 0, 0, 0, 0, 0, 855, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2034, 0, 0, 0, 832, + 0, 0, 0, 0, 0, 1061, 0, 848, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, + 0, 1071, 0, 0, 0, 0, 832, 832, 0, 857, + 0, 1061, 0, 0, 0, 0, 1071, 0, 0, 0, + 0, 0, 0, 1061, 0, 2107, 0, 857, 857, 0, + 0, 2033, 0, 0, 0, 0, 0, 1071, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, + 0, 0, 0, 0, 832, 0, 0, 0, 2035, 857, + 0, 0, 2035, 1061, 1061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, + 2033, 0, 0, 0, 0, 857, 0, 2035, 0, 0, + 0, 0, 1071, 857, 0, 2033, 832, 832, 0, 0, + 857, 0, 0, 0, 857, 0, 1071, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, + 0, 0, 0, 0, 857, 0, 0, 0, 0, 857, + 1071, 0, 0, 857, 0, 0, 2035, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 857, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 1071, 1071, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 0, 0, 1835, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1061, 0, 856, + 0, 0, 0, 0, 2034, 856, 0, 0, 0, 856, + 0, 0, 0, 0, 0, 1849, 0, 856, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, + 0, 0, 0, 1867, 1868, 1869, 0, 1871, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 623, 0, 0, 0, 1913, 624, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, + 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 856, 856, 0, + 0, 857, 626, 0, 1071, 0, 0, 0, 1950, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2034, 856, + 628, 0, 2034, 0, 0, 0, 2054, 0, 0, 0, + 2066, 2069, 2762, 0, 0, 0, 0, 0, 629, 0, + 0, 0, 0, 0, 857, 856, 0, 2034, 0, 0, + 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, + 856, 630, 0, 0, 856, 0, 0, 0, 0, 0, + 0, 0, 631, 0, 0, 0, 0, 0, 0, 0, + 632, 0, 857, 0, 856, 0, 0, 0, 0, 856, + 0, 0, 633, 856, 0, 0, 2034, 634, 0, 0, + 857, 0, 0, 0, 635, 1061, 856, 0, 857, 1061, + 1061, 0, 0, 0, 0, 0, 0, 0, 848, 856, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 2034, 0, 0, 0, 2035, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2823, 639, 0, 0, 2107, 2829, 0, 0, + 0, 0, 0, 1061, 640, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 205, 0, 0, 641, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 642, 0, 0, 0, 0, 643, 0, + 644, 0, 0, 0, 0, 0, 0, 645, 1071, 857, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1071, 0, 0, 0, 0, 0, 0, 0, 0, 647, + 0, 0, 0, 0, 0, 648, 0, 0, 0, 0, + 649, 0, 0, 650, 856, 0, 0, 651, 0, 0, + 0, 0, 0, 0, 652, 0, 653, 0, 0, 0, + 1071, 654, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, + 0, 0, 856, 0, 0, 0, 656, 0, 857, 857, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 857, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 922, 0, 1061, 0, 0, 923, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 925, 926, 0, 0, 0, 0, 2034, 0, + 0, 0, 0, 927, 2034, 0, 0, 928, 0, 2035, + 2035, 2035, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 929, 0, 0, 0, 0, + 0, 0, 0, 857, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 930, 1071, + 0, 0, 0, 857, 0, 0, 0, 0, 2631, 931, + 0, 0, 0, 0, 0, 0, 0, 932, 857, 0, + 0, 2651, 0, 2653, 0, 0, 2665, 2668, 2673, 933, + 0, 0, 0, 2679, 934, 0, 2684, 0, 0, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2691, 2692, 2693, 2694, 0, 0, 0, 935, 2701, + 0, 0, 0, 2713, 0, 0, 2715, 0, 0, 2722, + 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 0, 2731, + 0, 2107, 0, 936, 0, 1061, 1268, 0, 2759, 0, + 0, 0, 0, 0, 0, 0, 857, 0, 0, 0, + 0, 0, 1061, 0, 937, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1061, 0, 0, 856, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 938, 0, + 0, 857, 0, 857, 0, 856, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 0, 857, 0, 857, 0, + 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 205, 0, 0, 940, 0, 0, 0, 0, 0, + 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, + 941, 0, 0, 0, 0, 942, 0, 943, 0, 1071, + 0, 0, 0, 0, 944, 0, 2779, 945, 0, 0, + 0, 857, 1071, 0, 0, 1063, 0, 0, 0, 2034, + 2034, 2034, 0, 0, 0, 0, 946, 0, 0, 0, + 0, 0, 947, 0, 0, 0, 0, 948, 0, 1063, + 949, 0, 0, 856, 950, 0, 0, 0, 0, 0, + 0, 951, 0, 952, 0, 0, 0, 0, 953, 857, + 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 856, 0, + 0, 0, 0, 954, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 857, 0, 0, + 857, 0, 0, 0, 0, 0, 0, 0, 2868, 0, + 1061, 0, 0, 1061, 0, 1061, 0, 0, 0, 0, + 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2762, 2762, + 2762, 0, 0, 0, 0, 0, 856, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 0, 0, 0, 1061, + 0, 0, 0, 0, 0, 0, 0, 0, 2035, 0, + 0, 0, 0, 0, 0, 0, 1061, 0, 0, 1064, + 0, 0, 0, 0, 2034, 0, 0, 0, 0, 0, + 0, 856, 0, 856, 0, 0, 0, 0, 0, 0, + 0, 1061, 0, 0, 0, 0, 856, 2107, 856, 0, + 2829, 0, 2829, 0, 0, 0, 0, 2107, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, + 1061, 856, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1063, 0, 0, 2107, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, + 857, 0, 0, 0, 0, 856, 0, 0, 0, 0, + 0, 0, 0, 1063, 3129, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 0, 0, 0, 856, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1071, 0, 1071, + 2035, 1061, 0, 0, 0, 2035, 0, 2035, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 0, 0, 0, 0, 2035, + 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2035, 1063, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2034, 0, + 0, 857, 0, 0, 857, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, + 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, + 0, 1061, 0, 0, 0, 0, 0, 0, 1071, 0, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 1061, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2829, 1061, 0, 0, 0, 0, 0, 0, 2829, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 857, 0, 0, 0, 0, 1063, 0, 0, + 0, 857, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 857, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1064, 1066, 3326, + 0, 0, 0, 0, 3332, 0, 0, 0, 1071, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 1066, 0, 0, 0, 2829, 0, 1061, 1871, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, + 2673, 0, 2673, 2673, 0, 0, 0, 0, 0, 1061, + 0, 0, 857, 3390, 0, 0, 3393, 0, 3395, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2034, 0, 0, 0, 1061, 2034, 0, 2034, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3413, 0, 3416, + 0, 3418, 0, 0, 0, 0, 0, 0, 0, 2034, + 0, 0, 0, 0, 0, 0, 0, 1064, 1061, 0, + 0, 0, 0, 0, 0, 0, 2034, 0, 0, 0, + 0, 0, 0, 0, 2759, 2759, 2759, 0, 0, 0, + 0, 856, 0, 0, 856, 1071, 0, 0, 0, 0, + 0, 0, 3468, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2054, 0, 0, 1071, 0, 3478, 0, + 0, 0, 0, 1063, 2069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 856, 856, 0, 3515, 0, 0, 0, 0, 0, + 1063, 856, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2762, 0, 0, 0, 1063, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 0, 0, 1066, 0, + 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, + 0, 2107, 0, 1064, 0, 0, 857, 0, 0, 0, + 0, 1066, 856, 0, 0, 0, 0, 1061, 857, 0, + 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 1064, 0, 0, 0, 0, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, + 2829, 0, 0, 0, 0, 0, 0, 0, 0, 1064, + 1066, 0, 0, 0, 0, 1067, 0, 0, 0, 0, + 0, 0, 0, 0, 2829, 0, 0, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 0, 857, 0, 1067, + 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1063, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 1063, 1063, 0, 0, 0, 1064, 0, 0, 0, 856, + 0, 0, 0, 0, 2034, 0, 0, 1064, 0, 1071, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 856, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2107, + 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1061, 856, 1064, 0, 857, 0, + 857, 0, 0, 0, 1061, 0, 0, 0, 1064, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 857, 1063, 0, 0, 0, 0, 0, + 0, 0, 848, 0, 0, 0, 0, 0, 0, 0, + 1064, 1064, 0, 0, 0, 0, 0, 0, 3873, 0, + 0, 0, 0, 0, 0, 0, 0, 3877, 0, 0, + 0, 0, 0, 3878, 0, 3879, 0, 856, 2035, 0, + 0, 0, 0, 0, 848, 1067, 0, 0, 0, 0, + 0, 1071, 0, 0, 0, 0, 1066, 0, 0, 0, + 0, 1071, 3903, 3904, 0, 0, 0, 0, 1067, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, + 2679, 0, 0, 1067, 0, 0, 0, 0, 3929, 0, + 0, 3932, 0, 3934, 0, 0, 0, 0, 0, 0, + 0, 0, 3938, 0, 0, 0, 0, 0, 0, 856, + 3945, 3946, 0, 0, 0, 0, 2762, 1061, 0, 0, + 0, 2762, 0, 1066, 0, 0, 0, 2762, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, + 0, 0, 0, 3993, 1064, 0, 0, 0, 0, 4000, + 4001, 2759, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1066, 0, 0, 0, 0, 1067, 1069, 0, + 0, 0, 0, 0, 0, 4016, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 1071, 0, 0, 0, + 0, 4029, 1069, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 1063, 1063, 856, 0, + 856, 0, 0, 0, 1071, 2035, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 857, 0, 856, 1066, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1067, 1063, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 0, 0, 0, 2034, 0, + 1071, 0, 0, 0, 1061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 1061, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 1064, 1064, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4596, + 0, 1071, 0, 0, 0, 0, 0, 0, 1064, 0, + 0, 0, 0, 1066, 1066, 0, 0, 0, 0, 0, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2035, 0, 857, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1071, 0, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1064, 0, 0, 1067, 0, 0, 0, 0, 0, 1061, + 0, 1069, 0, 0, 0, 2034, 4291, 4292, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 1063, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 856, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 857, 4328, 0, 0, 0, 1066, 0, 0, + 0, 0, 0, 0, 4333, 848, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, + 1069, 1063, 0, 0, 0, 0, 2829, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1061, 1067, 0, 4348, 4350, 0, 0, 0, 0, + 0, 4354, 4355, 0, 0, 0, 4356, 0, 0, 0, + 0, 4359, 0, 0, 4362, 4363, 1061, 0, 0, 4367, + 0, 0, 0, 0, 0, 4371, 848, 848, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, + 0, 0, 2759, 0, 0, 0, 0, 2759, 857, 0, + 0, 1067, 0, 2759, 0, 0, 0, 0, 0, 0, + 1069, 0, 1063, 0, 0, 0, 1067, 0, 1268, 0, + 0, 0, 0, 0, 0, 1067, 0, 0, 2829, 1063, + 2034, 0, 856, 0, 0, 0, 0, 1067, 0, 0, + 1061, 0, 1063, 0, 4431, 1061, 1061, 0, 0, 0, + 0, 1064, 0, 1071, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1067, 1071, 0, 1066, 0, 0, 0, 1066, + 1066, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0, + 0, 0, 0, 2035, 2034, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 0, 0, 2035, 848, + 848, 0, 856, 0, 4492, 0, 0, 1071, 0, 0, + 0, 0, 1071, 1071, 0, 1061, 0, 0, 0, 0, + 0, 1066, 1064, 0, 0, 0, 0, 0, 0, 0, + 1067, 1067, 0, 1066, 0, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4528, 0, 0, 1066, 0, 0, 1069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, + 1063, 0, 1063, 0, 0, 0, 0, 1063, 0, 0, + 0, 4596, 1071, 0, 0, 0, 0, 0, 856, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1067, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 1063, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2034, 1069, 0, 0, 1063, 0, + 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, + 0, 4632, 4633, 0, 0, 4634, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1066, 2034, 0, 0, 0, 1064, 0, 0, + 1064, 0, 1064, 4670, 4671, 0, 0, 1064, 2034, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 1063, + 0, 0, 0, 4683, 1069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 1069, 1071, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1064, 1066, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, + 0, 0, 1067, 0, 0, 0, 1067, 1067, 1063, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 1069, 0, 0, 0, 0, 0, 1063, + 0, 0, 0, 0, 0, 0, 0, 1064, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 0, 0, 1067, 0, + 0, 0, 0, 1069, 1069, 0, 0, 0, 0, 0, + 1067, 0, 1066, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, + 0, 2679, 0, 0, 0, 0, 0, 0, 1063, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 1063, 0, 0, 4860, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 1063, + 0, 0, 0, 0, 1871, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4910, 0, 0, 0, 1069, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1063, 0, 1064, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, + 1066, 0, 0, 1066, 0, 1066, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 1063, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4670, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, + 5052, 1067, 0, 0, 0, 1064, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 1066, 0, 0, 0, 0, 1064, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 1069, + 1069, 1064, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1908, 0, 5104, 0, 0, 1064, 0, 0, 0, 0, + 1066, 0, 1066, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1069, 1067, 0, 0, 5130, 5130, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 1067, + 1063, 0, 0, 4670, 0, 0, 0, 0, 0, 0, + 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1066, 0, 0, 0, 5130, 0, + 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5230, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, + 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1066, 0, 0, 1064, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, + 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 0, 1067, 0, 0, + 1067, 0, 1067, 0, 0, 0, 0, 1067, 0, 0, + 0, 5130, 0, 0, 0, 0, 0, 5288, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1067, 1069, 0, 0, 0, 1066, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1067, 1066, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1066, 0, 0, 0, 0, 1064, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, + 0, 0, 0, 0, 0, 0, 0, 1067, 0, 1067, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1908, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, + 1067, 1064, 2661, 0, 1066, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 1908, 1908, 1908, 0, + 1908, 0, 0, 0, 1063, 0, 0, 0, 1067, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, + 0, 1067, 0, 0, 0, 0, 0, 0, 0, 1067, + 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1066, 1067, 0, + 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1069, 0, 0, 1069, 1064, 1069, 0, 0, 0, 0, + 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, + 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1908, 0, 0, 1908, 0, + 0, 1063, 0, 0, 0, 0, 0, 0, 0, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, + 0, 0, 1066, 0, 0, 1067, 0, 0, 0, 0, + 1064, 0, 0, 1063, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1067, 1066, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, + 1069, 0, 1069, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 1066, 0, 0, 0, 0, 0, + 0, 1067, 0, 0, 1066, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1063, 0, 0, 1064, 0, 0, 0, + 0, 1069, 0, 0, 1067, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 1063, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, + 0, 0, 1063, 1063, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1069, 1067, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 1067, + 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1063, 0, 0, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1908, 0, 0, 0, 0, 0, 0, 1064, 0, 0, + 0, 0, 1064, 1064, 1066, 0, 0, 0, 0, 0, + 1908, 0, 1908, 0, 0, 2661, 2661, 0, 3367, 0, + 2661, 0, 0, 0, 1908, 0, 0, 1908, 0, 0, + 0, 0, 1908, 0, 0, 0, 0, 0, 1908, 0, + 0, 0, 0, 1908, 0, 0, 1066, 0, 0, 0, + 1908, 1908, 1908, 1908, 0, 0, 0, 2661, 2661, 0, + 1908, 1067, 0, 0, 1069, 0, 0, 0, 0, 0, + 0, 1067, 1908, 0, 1908, 0, 0, 0, 0, 0, + 0, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1064, 0, 0, 0, 0, 0, 1908, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1063, 0, 1069, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, + 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 1069, 0, 0, 0, 0, 0, 0, 0, + 1067, 0, 0, 0, 0, 0, 1066, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1069, 0, 0, 0, 1066, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1066, 0, 0, 0, 0, 1066, 1066, 0, 0, 0, + 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 1908, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1069, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, + 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3367, 3367, 0, + 0, 2661, 2661, 2661, 2661, 0, 0, 2661, 2661, 2661, + 2661, 2661, 2661, 2661, 2661, 2661, 2661, 3367, 1067, 0, + 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, + 0, 0, 0, 1069, 0, 0, 0, 0, 0, 1908, + 0, 0, 1908, 1067, 1908, 0, 0, 3367, 3367, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 2661, 2661, 1908, 0, 1908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0, + 0, 0, 1067, 1067, 1069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1067, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2661, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 0, 0, 0, 1908, 1908, 1908, 0, + 0, 0, 0, 0, 3367, 3367, 3367, 3367, 0, 0, + 0, 0, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, + 3367, 3367, 1908, 1908, 0, 0, 0, 0, 0, 0, + 1069, 0, 0, 0, 0, 1069, 1069, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, + 0, 1908, 0, 1908, 0, 0, 0, 1908, 0, 0, + 3367, 3367, 0, 0, 1908, 1908, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 0, 0, 0, 0, 0, 0, 1908, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1908, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 1908, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3367, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1908, 1908, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 1908, 2661, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 1908, + 0, 0, 0, 1908, 1908, 1908, 0, 0, 1908, 0, + 0, 1908, 1908, 0, 0, 0, 1908, 0, 0, 0, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3367, 2661, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1908, 1908, 1908, 0, 0, 0, 0, 0, 0, + 0, 2661, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3367, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2661, 0, 0, 3367, 0, 0, 0, 1908, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3367, + 0, 2661, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2661, 2661, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 3367, 3367, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 2753, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 1908, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 2754, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 2755, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 2756, 0, + 0, 0, 0, 0, 0, 1256, 2757, 804, 1185, 618, + 1186, 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, + 0, 0, 225, 226, 227, 228, 229, 230, 231, 232, + 0, 234, 235, 236, 0, 0, 0, 0, 1190, 0, + 0, 237, 238, 0, 239, 240, 241, 805, 242, 243, + 244, 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, + 252, 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, + 259, 260, 261, 262, 1198, 0, 1199, 0, 264, 265, + 266, 267, 268, 808, 269, 270, 271, 0, 272, 273, + 274, 275, 276, 277, 0, 809, 278, 279, 280, 1200, + 1201, 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, + 285, 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, + 293, 294, 295, 296, 0, 297, 298, 299, 300, 0, + 0, 301, 302, 1042, 304, 305, 0, 306, 307, 308, + 0, 309, 310, 311, 0, 312, 313, 314, 315, 1210, + 317, 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, + 325, 0, 326, 0, 327, 811, 0, 812, 328, 329, + 330, 331, 0, 332, 1214, 0, 1215, 335, 0, 336, + 337, 338, 339, 340, 813, 341, 342, 343, 344, 0, + 345, 346, 347, 348, 349, 350, 0, 351, 814, 352, + 353, 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, + 815, 816, 361, 817, 362, 363, 364, 365, 366, 0, + 0, 367, 1219, 818, 369, 819, 0, 370, 371, 372, + 1220, 1221, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 1222, 820, + 1223, 391, 392, 393, 394, 1224, 395, 396, 821, 397, + 1225, 1226, 399, 1227, 401, 402, 403, 0, 404, 405, + 0, 0, 1228, 407, 408, 0, 0, 409, 410, 822, + 411, 823, 1229, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 0, 0, 422, 423, 1230, 425, 426, 427, + 428, 429, 0, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 1231, 440, 441, 442, 443, 0, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 0, 456, 457, 824, 458, 459, 460, 1232, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 40, 471, 472, + 473, 474, 475, 1233, 476, 477, 478, 479, 480, 825, + 481, 482, 1234, 484, 0, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 1235, 0, 498, + 499, 44, 500, 826, 501, 502, 503, 504, 505, 0, + 1236, 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, + 513, 514, 515, 516, 517, 518, 519, 0, 1241, 520, + 521, 522, 523, 524, 1242, 0, 525, 526, 527, 528, + 529, 1116, 1243, 0, 532, 827, 533, 534, 535, 536, + 0, 0, 537, 0, 49, 538, 539, 540, 541, 542, + 543, 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, + 1251, 554, 555, 556, 557, 1252, 0, 50, 0, 0, + 0, 0, 1253, 1254, 0, 0, 0, 0, 0, 0, + 0, 1256, 4872, 804, 1185, 618, 1186, 1187, 1188, 677, + 1189, 0, 0, 0, 0, 0, 0, 0, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 1190, 0, 0, 237, 238, 0, + 239, 240, 241, 805, 242, 243, 244, 245, 1191, 806, + 1192, 1193, 0, 249, 250, 251, 252, 253, 1194, 1195, + 254, 255, 1196, 1197, 258, 0, 259, 260, 261, 262, + 1198, 0, 1199, 0, 264, 265, 266, 267, 268, 808, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 809, 278, 279, 280, 1200, 1201, 1202, 1203, 1204, + 1205, 1206, 281, 282, 283, 284, 285, 286, 1207, 1208, + 289, 1209, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 1042, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 1210, 317, 318, 319, 1211, + 1212, 321, 0, 322, 323, 1213, 325, 0, 326, 0, + 327, 811, 0, 812, 328, 329, 330, 331, 0, 332, + 1214, 0, 1215, 335, 0, 336, 337, 338, 339, 340, + 813, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 814, 352, 353, 354, 355, 356, + 1216, 1217, 0, 1218, 0, 360, 815, 816, 361, 817, + 362, 363, 364, 365, 366, 0, 0, 367, 1219, 818, + 369, 819, 0, 370, 371, 372, 1220, 1221, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 1222, 820, 1223, 391, 392, 393, + 394, 1224, 395, 396, 821, 397, 1225, 1226, 399, 1227, + 401, 402, 403, 0, 404, 405, 0, 0, 1228, 407, + 408, 0, 0, 409, 410, 822, 411, 823, 1229, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 1230, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 1231, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 824, + 458, 459, 460, 1232, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 1233, + 476, 477, 478, 479, 480, 825, 481, 482, 1234, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 1235, 0, 498, 499, 0, 500, 826, + 501, 502, 503, 504, 505, 0, 1236, 1237, 0, 0, + 508, 509, 1238, 511, 1239, 1240, 513, 514, 515, 516, + 517, 518, 519, 0, 1241, 520, 521, 522, 523, 524, + 1242, 0, 525, 526, 527, 528, 529, 530, 1243, 0, + 532, 827, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 1244, 1245, + 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, 555, 556, + 557, 1252, 0, 0, 0, 0, 0, 0, 1253, 1254, + 0, 0, 0, 0, 0, 0, 0, 1256, 2663, 804, + 1185, 618, 1186, 1187, 1188, 677, 1189, 0, 0, 0, + 0, 0, 0, 0, 225, 226, 227, 228, 229, 230, + 231, 232, 0, 234, 235, 236, 0, 0, 0, 0, + 1190, 0, 0, 237, 238, 0, 239, 240, 241, 805, + 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, 249, + 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, 1197, + 258, 0, 259, 260, 261, 262, 1198, 0, 1199, 0, + 264, 265, 266, 267, 268, 808, 269, 270, 271, 0, + 272, 273, 274, 275, 276, 277, 0, 809, 278, 279, + 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, 282, + 283, 284, 285, 286, 1207, 1208, 289, 1209, 290, 0, + 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, + 300, 0, 0, 301, 302, 1042, 304, 305, 0, 306, + 307, 308, 0, 309, 310, 311, 0, 312, 313, 314, + 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, 322, + 323, 1213, 325, 0, 326, 0, 327, 811, 0, 812, + 328, 329, 330, 331, 0, 332, 1214, 0, 1215, 335, + 0, 336, 337, 338, 339, 340, 813, 341, 342, 343, + 344, 0, 345, 346, 347, 348, 349, 350, 0, 351, + 814, 352, 353, 354, 355, 356, 1216, 1217, 0, 1218, + 0, 360, 815, 816, 361, 817, 362, 363, 364, 365, + 366, 0, 0, 367, 1219, 818, 369, 819, 0, 370, + 371, 372, 1220, 1221, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 1222, 820, 1223, 391, 392, 393, 394, 1224, 395, 396, + 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, 0, + 404, 405, 0, 0, 1228, 407, 408, 0, 0, 409, + 410, 822, 411, 823, 1229, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 0, 0, 422, 423, 1230, 425, + 426, 427, 428, 429, 0, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 1231, 440, 441, 442, 443, 0, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 0, 456, 457, 824, 458, 459, 460, 1232, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 0, + 471, 472, 473, 474, 475, 1233, 476, 477, 478, 479, + 480, 825, 481, 482, 1234, 484, 0, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 1235, + 0, 498, 499, 0, 500, 826, 501, 502, 503, 504, + 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, 511, + 1239, 1240, 513, 514, 515, 516, 517, 518, 519, 0, + 1241, 520, 521, 522, 523, 524, 1242, 0, 525, 526, + 527, 528, 529, 530, 1243, 0, 532, 827, 533, 534, + 535, 536, 0, 0, 537, 0, 0, 538, 539, 540, + 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, 1248, + 1249, 1250, 1251, 554, 555, 556, 557, 1252, 0, 0, + 0, 0, 0, 0, 1253, 1254, 0, 0, 0, 0, + 0, 0, 0, 1256, 3881, 804, 1185, 618, 1186, 1187, + 1188, 677, 1189, 0, 0, 0, 0, 0, 0, 0, + 225, 226, 227, 228, 229, 230, 231, 232, 0, 234, + 235, 236, 0, 0, 0, 0, 1190, 0, 0, 237, + 238, 0, 239, 240, 241, 805, 242, 243, 244, 245, + 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, 253, + 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, 260, + 261, 262, 1198, 0, 1199, 0, 264, 265, 266, 267, + 268, 808, 269, 270, 271, 0, 272, 273, 274, 275, + 276, 277, 0, 809, 278, 279, 280, 1200, 1201, 1202, + 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, 286, + 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, 294, + 295, 296, 0, 297, 298, 299, 300, 0, 0, 301, + 302, 1042, 304, 305, 0, 306, 307, 308, 0, 309, + 310, 311, 0, 312, 313, 314, 315, 1210, 317, 318, + 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, 0, + 326, 0, 327, 811, 0, 812, 328, 329, 330, 331, + 0, 332, 1214, 0, 1215, 335, 0, 336, 337, 338, + 339, 340, 813, 341, 342, 343, 344, 0, 345, 346, + 347, 348, 349, 350, 0, 351, 814, 352, 353, 354, + 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, 816, + 361, 817, 362, 363, 364, 365, 366, 0, 0, 367, + 1219, 818, 369, 819, 0, 370, 371, 372, 1220, 1221, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 1222, 820, 1223, 391, + 392, 393, 394, 1224, 395, 396, 821, 397, 1225, 1226, + 399, 1227, 401, 402, 403, 0, 404, 405, 0, 0, + 1228, 407, 408, 0, 0, 409, 410, 822, 411, 823, + 1229, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 0, 0, 422, 423, 1230, 425, 426, 427, 428, 429, + 0, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 1231, 440, 441, 442, 443, 0, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 0, 456, + 457, 824, 458, 459, 460, 1232, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, + 475, 1233, 476, 477, 478, 479, 480, 825, 481, 482, + 1234, 484, 0, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 1235, 0, 498, 499, 0, + 500, 826, 501, 502, 503, 504, 505, 0, 1236, 1237, + 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, 514, + 515, 516, 517, 518, 519, 0, 1241, 520, 521, 522, + 523, 524, 1242, 0, 525, 526, 527, 528, 529, 530, + 1243, 0, 532, 827, 533, 534, 535, 536, 0, 0, + 537, 0, 0, 538, 539, 540, 541, 542, 543, 544, + 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, + 555, 556, 557, 1252, 0, 0, 224, 0, 0, 0, + 1253, 1254, 0, 0, 0, 0, 0, 0, 0, 1256, + 3952, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 3970, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, -1726, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, -1726, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, -1726, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, -1726, 362, 363, 364, 365, 366, 0, 0, + 367, 368, -1726, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, -1726, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, -1726, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 0, 0, 0, 1034, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1337, 225, 226, 227, 228, 229, 230, 231, 232, + 0, 234, 235, 236, 0, 0, 0, 0, 0, 0, + 0, 237, 238, 0, 239, 240, 241, 805, 242, 243, + 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, + 252, 253, 0, 0, 254, 255, 1038, 1039, 258, 0, + 259, 260, 261, 262, 0, 0, 807, 0, 264, 265, + 266, 267, 268, 808, 269, 270, 271, 0, 272, 273, + 274, 275, 276, 277, 0, 809, 278, 279, 280, 0, + 0, 0, 810, 0, 0, 0, 281, 282, 283, 284, + 285, 286, 1040, 1041, 289, 0, 290, 0, 291, 292, + 293, 294, 295, 296, 0, 297, 298, 299, 300, 0, + 0, 301, 302, 1042, 304, 305, 0, 306, 307, 308, + 0, 309, 310, 311, 0, 312, 313, 314, 315, 0, + 317, 318, 319, 0, 0, 321, 0, 322, 323, 1043, + 325, 0, 326, 0, 327, 811, 0, 812, 328, 329, + 330, 331, 0, 332, 0, 0, 0, 335, 0, 336, + 337, 338, 339, 340, 813, 341, 342, 343, 344, 2093, + 345, 346, 347, 348, 349, 350, 0, 351, 814, 2094, + 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, + 815, 816, 361, 817, 362, 363, 364, 365, 366, 0, + 0, 367, 0, 818, 369, 819, 0, 370, 371, 372, + 0, 0, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 1048, 820, + 1049, 391, 392, 393, 0, 0, 395, 396, 821, 397, + 0, 0, 399, 1050, 401, 402, 403, 0, 404, 405, + 0, 0, 406, 407, 408, 0, 0, 409, 2096, 822, + 411, 823, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 0, 0, 422, 423, 0, 425, 0, 427, + 428, 429, 0, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 1051, 440, 441, 442, 443, 0, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 0, 456, 457, 824, 458, 459, 460, 0, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 0, 471, 472, + 473, 474, 475, 0, 476, 477, 2097, 479, 480, 825, + 481, 482, 1053, 484, 0, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 0, 0, 498, + 499, 0, 500, 826, 501, 502, 503, 504, 505, 0, + 1054, 1055, 0, 0, 508, 509, 0, 511, 0, 0, + 513, 514, 515, 516, 517, 518, 519, 0, 0, 520, + 521, 522, 523, 524, 0, 0, 525, 526, 527, 528, + 529, 0, 1056, 2098, 532, 827, 533, 534, 535, 536, + 0, 0, 537, 0, 0, 538, 539, 540, 541, 542, + 543, 1034, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 555, 556, 557, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 2203, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 1038, 1039, 258, 0, 259, 260, 261, 262, 0, 0, + 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 1040, 1041, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 0, 317, 318, 319, 0, 0, 321, + 0, 322, 323, 1043, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 0, 0, + 0, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 2093, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 2094, 353, 354, 355, 356, 1045, 1046, + 0, 1047, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 0, 818, 369, 819, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1048, 820, 1049, 391, 392, 393, 0, 0, + 395, 396, 821, 397, 0, 0, 399, 1050, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 2096, 822, 411, 823, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 0, 425, 0, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1051, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 0, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, + 2097, 479, 480, 825, 481, 482, 1053, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 0, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1054, 1055, 0, 0, 508, 509, + 0, 511, 0, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 0, 1056, 2098, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 0, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 555, 556, 557, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 3215, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 40, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 44, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 1116, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 49, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 50, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 2669, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 2670, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 2671, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 2672, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 1832, 2624, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 1255, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 2064, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 2670, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 4002, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 4015, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 4340, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 4349, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 4660, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 4661, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 4662, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 4663, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 5127, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 5128, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 1209, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 1224, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 1232, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 5129, 518, 519, 0, 1241, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 1252, 0, 0, 0, 0, 0, + 0, 1253, 1254, 0, 0, 0, 0, 0, 0, 0, + 1256, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 5128, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 5129, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 1252, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 4853, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 2655, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 0, 0, 0, 0, 0, 0, + 0, 2656, 2657, 0, 0, 0, 0, 0, 0, 0, + 2658, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, -2568, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 5128, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, -2568, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 0, 0, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, -2568, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, + 395, 396, 0, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 1232, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, -2568, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 5129, 518, + 519, 0, 1241, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, -2568, + 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, + 0, 0, 0, 0, 0, 1256, 804, 1185, 618, 1186, + 1187, 1188, 677, 1189, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 1190, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 1191, 806, 1192, 1193, 0, 249, 250, 251, 252, + 253, 1194, 1195, 254, 255, 1196, 1197, 258, 0, 259, + 260, 261, 262, 1198, 0, 1199, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 281, 282, 283, 284, 285, + 286, 1207, 1208, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 1210, 317, + 318, 319, 1211, 1212, 321, 0, 322, 323, 1213, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 1214, 0, 1215, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 1216, 1217, 0, 1218, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 1219, 818, 369, 819, 0, 370, 371, 372, 1220, + 1221, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1222, 820, 1223, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 1225, + 1226, 399, 1227, 401, 402, 403, 0, 404, 405, 0, + 0, 1228, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 1229, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 1230, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1231, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 2655, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 1233, 476, 477, 478, 479, 480, 825, 481, + 482, 1234, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 1235, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1236, + 1237, 0, 0, 508, 509, 1238, 511, 1239, 1240, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 1242, 0, 525, 526, 527, 528, 529, + 530, 1243, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 1244, 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, + 554, 555, 556, 557, 0, 0, 0, 0, 0, 0, + 0, 2656, 2657, 0, 0, 0, 0, 0, 0, 0, + 2658, 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, + 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 1190, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, + 0, 249, 250, 251, 252, 253, 1194, 1195, 254, 255, + 1196, 1197, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 1207, 1208, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 1042, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, + 0, 322, 323, 1213, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 1215, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 1216, 1217, + 0, 1218, 0, 360, 0, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 1222, 820, 1223, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, + 403, 0, 404, 405, 0, 0, 1228, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 1231, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 2655, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 1234, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 1236, 1237, 0, 0, 508, 509, + 1238, 511, 1239, 1240, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 1243, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, + 0, 0, 0, 0, 0, 0, 2656, 2657, 0, 0, + 804, 1185, 618, 1186, 1187, 2658, 677, 1189, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, + 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 1185, 618, 1186, 1187, 0, 677, 1189, 0, 0, + 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, + 3914, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 1185, 618, 1186, 1187, 0, 677, 1189, 0, 0, + 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 1191, 806, 1192, 1193, 0, + 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 2655, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 4380, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 1185, 618, 1186, 1187, 1188, 677, 1189, 0, 0, + 0, 0, 0, 0, 2658, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 1190, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 0, 1191, 806, 1192, 1193, 0, + 249, 250, 251, 252, 253, 1194, 1195, 254, 255, 1196, + 1197, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 1207, 1208, 289, 1209, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 0, 311, 0, 312, 313, + 314, 315, 1210, 317, 318, 319, 1211, 1212, 321, 0, + 322, 323, 1213, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 1215, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 1216, 1217, 0, + 1218, 0, 360, 0, 0, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 1219, 818, 369, 0, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1222, 820, 1223, 391, 392, 393, 394, 1224, 395, + 396, 0, 397, 1225, 1226, 399, 1227, 401, 402, 403, + 0, 404, 405, 0, 0, 1228, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1231, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 1232, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 0, 481, 482, 1234, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1236, 1237, 0, 0, 508, 509, 1238, + 511, 1239, 1240, 513, 514, 515, 516, 517, 518, 519, + 0, 1241, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 530, 1243, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, 0, + 804, 0, 0, 0, 0, 1253, 1254, 0, 0, 0, + 0, 0, 0, 0, 1256, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 1195, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 1198, 0, 1199, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 1211, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 1214, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 3436, 0, 367, 1219, 818, 369, 819, 0, + 370, 371, 372, 1220, 1221, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 1226, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 769, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 1229, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 1230, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 3437, 463, 464, 465, 466, 467, 468, 469, 470, + 40, 471, 472, 473, 474, 475, 1233, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 1235, 0, 498, 499, 44, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 1238, + 511, 1239, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 1242, 0, 525, + 526, 527, 528, 529, 1116, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 49, 538, 539, + 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, 549, + 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, 0, + 50, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3439, 0, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 3436, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 769, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 3437, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3439, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 3437, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 3438, 555, 556, 557, 0, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4043, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 1195, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 1198, 0, + 1199, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 1211, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 1214, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 1219, 818, 369, 819, + 0, 370, 371, 372, 1220, 1221, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 1226, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 1229, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 1230, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 1233, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 1235, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 1238, 511, 1239, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 1242, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 1244, 1245, 1246, 1247, + 549, 1248, 1249, 1250, 1251, 554, 555, 556, 557, 0, + 0, 849, 1464, 618, 0, 0, 0, 677, 0, 0, + 0, 0, 0, 0, 0, 5110, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 263, 0, + 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 1765, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 333, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 368, 818, 369, 819, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 1766, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 0, 498, 499, 0, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 510, 511, 512, 1767, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, + 0, 849, 0, 0, 0, 0, 1465, 1466, 4930, 0, + 0, 0, 0, 0, 0, 4931, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 3, 4, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 805, 242, 243, 244, 245, 246, 806, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 256, 257, 258, 0, 259, 260, 261, 262, 263, 0, + 807, 0, 264, 265, 266, 267, 268, 808, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 809, + 278, 279, 280, 0, 0, 0, 810, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 0, 321, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 811, + 0, 812, 328, 329, 330, 331, 0, 332, 333, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 813, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 814, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 815, 816, 361, 817, 362, 363, + 364, 365, 366, 0, 0, 367, 368, 818, 369, 819, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 820, 390, 391, 392, 393, 394, 0, + 395, 396, 821, 397, 0, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 822, 411, 823, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 824, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 40, 471, 472, 473, 474, 475, 0, 476, 477, + 478, 479, 480, 825, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 0, 498, 499, 44, 500, 826, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 1116, 531, 0, 532, 827, + 533, 534, 535, 536, 0, 0, 537, 0, 49, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, + 0, 50, 804, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4712, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 40, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 44, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 1116, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 49, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 0, 0, 50, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1314, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2812, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3949, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 260, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 321, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 0, 0, 0, 0, 1034, 1464, 618, 0, + 0, 863, 677, 0, 0, 0, 0, 4397, 864, 865, + 866, 225, 226, 227, 228, 229, 230, 231, 232, 1953, + 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, 1960, + 237, 238, 1961, 239, 240, 241, 805, 242, 243, 244, + 0, 1035, 806, 1036, 1037, 1962, 249, 250, 251, 252, + 253, 1963, 1964, 254, 255, 1038, 1039, 258, 1965, 259, + 260, 261, 262, 0, 1966, 807, 1967, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 1968, 272, 273, 274, + 275, 276, 277, 1969, 809, 278, 279, 280, 1970, 1971, + 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, 285, + 286, 1040, 1041, 289, 1976, 290, 1977, 291, 292, 293, + 294, 295, 296, 1978, 297, 298, 299, 300, 1979, 1980, + 301, 302, 1042, 304, 305, 1981, 306, 307, 308, 1982, + 309, 310, 311, 1983, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 1984, 321, 1985, 322, 323, 1043, 325, + 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, 330, + 331, 1989, 332, 0, 1990, 0, 335, 1991, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 1992, 345, + 346, 347, 348, 349, 350, 1993, 351, 814, 0, 353, + 354, 355, 356, 1045, 1046, 1994, 1047, 1995, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 1996, 1997, + 367, 0, 818, 369, 819, 1998, 370, 371, 372, 1999, + 2000, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, + 391, 392, 393, 3703, 2001, 395, 396, 821, 397, 2002, + 0, 399, 1050, 401, 402, 403, 2003, 404, 405, 2004, + 2005, 3704, 407, 408, 2006, 2007, 409, 0, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 2008, 422, 423, 0, 425, 0, 427, 428, + 429, 2009, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1051, 440, 441, 442, 443, 2010, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 2011, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 2012, 471, 472, 473, + 474, 475, 2013, 476, 477, 2097, 479, 480, 825, 481, + 482, 1053, 484, 2014, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 2015, 498, 499, + 2016, 500, 826, 501, 502, 503, 504, 505, 2017, 1054, + 1055, 2018, 2019, 508, 509, 0, 511, 0, 2020, 513, + 514, 515, 516, 517, 518, 519, 2021, 2022, 520, 521, + 522, 523, 524, 2023, 2024, 525, 526, 527, 528, 529, + 0, 1056, 2025, 532, 827, 533, 534, 535, 536, 2026, + 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, 543, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 555, 556, 557, 0, 0, 0, 869, 870, 871, + 0, 3705, 3706, 874, 875, 876, 877, 1034, 1464, 618, + 0, 0, 863, 677, 0, 0, 0, 0, 0, 864, + 865, 866, 225, 226, 227, 228, 229, 230, 231, 232, + 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, + 1960, 237, 238, 1961, 239, 240, 241, 805, 242, 243, + 244, 0, 1035, 806, 1036, 1037, 1962, 249, 250, 251, + 252, 253, 1963, 1964, 254, 255, 1038, 1039, 258, 1965, + 259, 260, 261, 262, 0, 1966, 807, 1967, 264, 265, + 266, 267, 268, 808, 269, 270, 271, 1968, 272, 273, + 274, 275, 276, 277, 1969, 809, 278, 279, 280, 1970, + 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, + 285, 286, 1040, 1041, 289, 1976, 290, 1977, 291, 292, + 293, 294, 295, 296, 1978, 297, 298, 299, 300, 1979, + 1980, 301, 302, 1042, 304, 305, 1981, 306, 307, 308, + 1982, 309, 310, 311, 1983, 312, 313, 314, 315, 0, + 317, 318, 319, 0, 1984, 321, 1985, 322, 323, 1043, + 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, + 330, 331, 1989, 332, 0, 1990, 0, 335, 1991, 336, + 337, 338, 339, 340, 813, 341, 342, 343, 344, 1992, + 345, 346, 347, 348, 349, 350, 1993, 351, 814, 0, + 353, 354, 355, 356, 1045, 1046, 1994, 1047, 1995, 360, + 815, 816, 361, 817, 362, 363, 364, 365, 366, 1996, + 1997, 367, 0, 818, 369, 819, 1998, 370, 371, 372, + 1999, 2000, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 1048, 820, + 1049, 391, 392, 393, 4134, 2001, 395, 396, 821, 397, + 2002, 0, 399, 1050, 401, 402, 403, 2003, 404, 405, + 2004, 2005, 3704, 407, 408, 2006, 2007, 409, 0, 822, + 411, 823, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 0, 2008, 422, 423, 0, 425, 0, 427, + 428, 429, 2009, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 1051, 440, 441, 442, 443, 2010, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 2011, 456, 457, 824, 458, 459, 460, 0, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 2012, 471, 472, + 473, 474, 475, 2013, 476, 477, 2097, 479, 480, 825, + 481, 482, 1053, 484, 2014, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 0, 2015, 498, + 499, 2016, 500, 826, 501, 502, 503, 504, 505, 2017, + 1054, 1055, 2018, 2019, 508, 509, 0, 511, 0, 2020, + 513, 514, 515, 516, 517, 518, 519, 2021, 2022, 520, + 521, 522, 523, 524, 2023, 2024, 525, 526, 527, 528, + 529, 0, 1056, 2025, 532, 827, 533, 534, 535, 536, + 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, + 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 555, 556, 557, 0, 224, 0, 869, 870, + 871, 863, 3705, 3706, 874, 875, 876, 877, 864, 865, + 866, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 867, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 868, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 0, 224, 0, 869, 870, 871, + 863, 872, 873, 874, 875, 876, 877, 864, 865, 866, + 225, 226, 227, 228, 229, 230, 231, 232, 0, 234, + 235, 236, 0, 0, 0, 0, 0, 0, 0, 237, + 238, 0, 239, 240, 241, 0, 242, 243, 244, 245, + 246, 0, 247, 248, 0, 249, 250, 251, 252, 253, + 0, 0, 254, 255, 256, 257, 258, 0, 259, 985, + 261, 262, 263, 0, 0, 0, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 0, 272, 273, 274, 275, + 276, 277, 0, 0, 278, 279, 280, 0, 0, 0, + 0, 0, 0, 0, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 290, 0, 291, 292, 293, 294, + 295, 296, 0, 297, 298, 299, 300, 0, 0, 301, + 302, 303, 304, 305, 0, 306, 307, 308, 0, 309, + 310, 311, 0, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 0, 986, 0, 322, 323, 324, 325, 0, + 326, 0, 327, 0, 0, 0, 328, 329, 330, 331, + 0, 332, 333, 0, 334, 335, 0, 336, 337, 338, + 339, 340, 0, 341, 342, 343, 344, 0, 345, 346, + 347, 348, 349, 350, 0, 351, 0, 352, 353, 354, + 355, 356, 357, 358, 0, 359, 0, 360, 0, 0, + 361, 0, 362, 363, 364, 365, 366, 0, 0, 367, + 368, 0, 369, 0, 0, 370, 371, 372, 0, 0, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 0, 390, 391, + 392, 393, 394, 0, 395, 396, 0, 397, 0, 398, + 399, 400, 401, 402, 403, 0, 404, 405, 0, 0, + 406, 407, 408, 0, 0, 409, 410, 0, 411, 0, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 0, 0, 422, 423, 424, 425, 426, 427, 428, 429, + 0, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 0, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 0, 456, + 457, 0, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, + 475, 0, 476, 477, 478, 479, 480, 0, 481, 482, + 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 498, 499, 0, + 500, 0, 501, 502, 503, 504, 505, 0, 506, 507, + 0, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 518, 519, 0, 0, 520, 521, 522, + 523, 524, 0, 0, 525, 526, 527, 528, 529, 530, + 531, 0, 532, 0, 533, 534, 535, 536, 0, 0, + 537, 0, 0, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 0, 224, 0, 869, 870, 871, 863, + 872, 873, 874, 875, 876, 877, 864, 865, 866, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 1084, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 1085, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1086, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 0, 224, 0, 869, 870, 871, 863, 872, + 873, 874, 875, 876, 877, 864, 865, 866, 225, 226, + 227, 228, 229, 230, 231, 232, 0, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 237, 238, 0, + 239, 240, 241, 0, 242, 243, 244, 245, 246, 0, + 247, 248, 0, 249, 250, 251, 252, 253, 0, 0, + 254, 255, 256, 257, 258, 0, 259, 1585, 261, 262, + 263, 0, 0, 0, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 0, 272, 273, 274, 275, 276, 277, + 0, 0, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 290, 0, 291, 292, 293, 294, 295, 296, + 0, 297, 298, 299, 300, 0, 0, 301, 302, 303, + 304, 305, 0, 306, 307, 308, 0, 309, 310, 311, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 0, 1586, 0, 322, 323, 324, 325, 0, 326, 0, + 327, 0, 0, 0, 328, 329, 330, 331, 0, 332, + 333, 0, 334, 335, 0, 336, 337, 338, 339, 340, + 0, 341, 342, 343, 344, 0, 345, 346, 347, 348, + 349, 350, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 0, 359, 0, 360, 0, 0, 361, 0, + 362, 363, 364, 365, 366, 0, 0, 367, 368, 0, + 369, 0, 0, 370, 371, 372, 0, 0, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 0, 390, 391, 392, 393, + 394, 0, 395, 396, 0, 397, 0, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 0, 406, 407, + 408, 0, 0, 409, 410, 0, 411, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 429, 0, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 0, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 0, 456, 457, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 0, + 476, 477, 478, 479, 480, 0, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 0, 498, 499, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 506, 507, 0, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 520, 521, 522, 523, 524, + 0, 0, 525, 526, 527, 528, 529, 530, 531, 0, + 532, 0, 533, 534, 535, 536, 0, 0, 537, 0, + 0, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 0, 224, 0, 869, 870, 871, 863, 872, 873, + 874, 875, 876, 877, 864, 865, 866, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 0, 224, 0, 869, 870, 871, 863, 872, 873, 874, + 875, 876, 877, 864, 865, 866, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 234, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 237, 238, 0, 239, 240, + 241, 0, 242, 243, 244, 245, 246, 0, 247, 248, + 0, 249, 250, 251, 252, 253, 0, 0, 254, 255, + 256, 257, 258, 0, 259, 2890, 261, 262, 263, 0, + 0, 0, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, + 278, 279, 280, 0, 0, 0, 0, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, + 298, 299, 300, 0, 0, 301, 302, 303, 304, 305, + 0, 306, 307, 308, 0, 309, 310, 311, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 0, 2891, + 0, 322, 323, 324, 325, 0, 326, 0, 327, 0, + 0, 0, 328, 329, 330, 331, 0, 332, 333, 0, + 334, 335, 0, 336, 337, 338, 339, 340, 0, 341, + 342, 343, 344, 0, 345, 346, 347, 348, 349, 350, + 0, 351, 0, 352, 353, 354, 355, 356, 357, 358, + 0, 359, 0, 360, 0, 0, 361, 0, 362, 363, + 364, 365, 366, 0, 0, 367, 368, 0, 369, 0, + 0, 370, 371, 372, 0, 0, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 0, 390, 391, 392, 393, 394, 0, + 395, 396, 0, 397, 0, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 0, 406, 407, 408, 0, + 0, 409, 410, 0, 411, 0, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 0, 0, 422, 423, + 424, 425, 426, 427, 428, 429, 0, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 0, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 0, 456, 457, 0, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 0, 476, 477, + 478, 479, 480, 0, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 0, 498, 499, 0, 500, 0, 501, 502, + 503, 504, 505, 0, 506, 507, 0, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 520, 521, 522, 523, 524, 0, 0, + 525, 526, 527, 528, 529, 530, 531, 0, 532, 0, + 533, 534, 535, 536, 0, 0, 537, 0, 0, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 0, + 224, 0, 869, 870, 871, 863, 872, 873, 874, 875, + 876, 877, 864, 865, 866, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 4690, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 1952, 0, + 0, 869, 870, 871, 0, 872, 873, 874, 875, 876, + 877, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, + 1959, 1960, 237, 238, 1961, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 1962, 249, 250, + 251, 252, 253, 1963, 1964, 254, 255, 256, 257, 258, + 1965, 259, 260, 261, 262, 263, 1966, 807, 1967, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 1968, 272, + 273, 274, 275, 276, 277, 1969, 809, 278, 279, 280, + 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 1976, 290, 1977, 291, + 292, 293, 294, 295, 296, 1978, 297, 298, 299, 300, + 1979, 1980, 301, 302, 303, 304, 305, 1981, 306, 307, + 308, 1982, 309, 310, 311, 1983, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 1984, 321, 1985, 322, 323, + 324, 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, + 329, 330, 331, 1989, 332, 333, 1990, 334, 335, 1991, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 1992, 345, 346, 347, 348, 349, 350, 1993, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 1994, 359, 1995, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 1996, 1997, 367, 368, 818, 369, 819, 1998, 370, 371, + 372, 1999, 2000, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 2001, 395, 396, 821, + 397, 2002, 398, 399, 400, 401, 402, 403, 2003, 404, + 405, 2004, 2005, 406, 407, 408, 2006, 2007, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 2008, 422, 423, 424, 425, 426, + 427, 428, 429, 2009, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 2010, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 2011, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 2012, 471, + 472, 473, 474, 475, 2013, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 2014, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 2015, + 498, 499, 2016, 500, 826, 501, 502, 503, 504, 505, + 2017, 506, 507, 2018, 2019, 508, 509, 510, 511, 512, + 2020, 513, 514, 515, 516, 517, 518, 519, 2021, 2022, + 520, 521, 522, 523, 524, 2023, 2024, 525, 526, 527, + 528, 529, 530, 531, 2025, 532, 827, 533, 534, 535, + 536, 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 2030, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 774, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 1034, 0, 0, 0, 0, 0, 0, 0, + 0, 5077, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, + 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, + 321, 0, 322, 323, 1043, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, + 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 2093, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 2094, 353, 354, 355, 356, 1045, + 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, + 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 2095, 409, 2096, 822, 411, 823, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 2097, 479, 480, 825, 481, 482, 1053, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, + 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 0, 1056, 2098, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 2389, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 2099, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 1038, 1039, 258, 0, 259, + 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 1040, 1041, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 0, 321, 0, 322, 323, 1043, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 2093, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 2094, 353, + 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, + 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, + 0, 399, 1050, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 2095, 409, 2096, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1051, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 2097, 479, 480, 825, 481, + 482, 1053, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1054, + 1055, 0, 0, 508, 509, 0, 511, 0, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 0, 1056, 2098, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 849, 1464, 618, 0, 0, 0, 677, 0, 0, 0, + 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 2099, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 1941, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 1765, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 1766, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 1767, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 1464, + 618, 0, 0, 0, 677, 1465, 1466, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 1946, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 1765, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 1766, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 1767, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 1464, 618, 0, + 0, 0, 677, 1465, 1466, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 1765, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 1766, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 1767, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 849, 0, 618, 0, 0, 0, + 677, 1465, 1466, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 2844, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 1765, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 1766, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 1767, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 677, 689, + 690, 0, 0, 0, 0, 0, 0, 225, 678, 227, + 228, 229, 230, 231, 232, 679, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 680, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 681, 324, 325, 0, 326, 0, 682, + 0, 683, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 684, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 685, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 686, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 687, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 688, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 1952, 5272, 618, 0, 0, 0, 677, 689, 690, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 1953, 234, 235, 236, 1954, 1955, 1956, + 1957, 1958, 1959, 1960, 237, 238, 1961, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 1962, + 249, 250, 251, 252, 253, 1963, 1964, 254, 255, 256, + 257, 258, 1965, 259, 260, 261, 262, 263, 1966, 807, + 1967, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 1968, 272, 273, 274, 275, 276, 277, 1969, 809, 278, + 279, 280, 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 1976, 290, + 1977, 291, 292, 293, 294, 295, 296, 1978, 297, 298, + 299, 300, 1979, 1980, 301, 302, 303, 304, 305, 1981, + 306, 307, 308, 1982, 309, 310, 311, 1983, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 1984, 321, 1985, + 322, 323, 324, 325, 1986, 326, 1987, 327, 811, 1988, + 812, 328, 329, 330, 331, 1989, 332, 333, 1990, 334, + 335, 1991, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 1992, 345, 346, 347, 348, 349, 350, 1993, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 1994, + 359, 1995, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 1996, 1997, 367, 368, 818, 369, 819, 1998, + 370, 371, 372, 1999, 2000, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 2001, 395, + 396, 821, 397, 2002, 398, 399, 400, 401, 402, 403, + 2003, 404, 405, 2004, 2005, 406, 407, 408, 2006, 2007, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 2008, 422, 423, 424, + 425, 426, 427, 428, 429, 2009, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 2010, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 2011, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 2012, 471, 472, 473, 474, 475, 2013, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 2014, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 2015, 498, 499, 2016, 500, 826, 501, 502, 503, + 504, 505, 2017, 506, 507, 2018, 2019, 508, 509, 510, + 511, 512, 2020, 513, 514, 515, 516, 517, 518, 519, + 2021, 2022, 520, 521, 522, 523, 524, 2023, 2024, 525, + 526, 527, 528, 529, 530, 531, 2025, 532, 827, 533, + 534, 535, 536, 2026, 2027, 537, 2028, 2029, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 1952, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 1953, 234, 235, 236, 1954, 1955, 1956, 1957, 1958, + 1959, 1960, 237, 238, 1961, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 1962, 249, 250, + 251, 252, 253, 1963, 1964, 254, 255, 256, 257, 258, + 1965, 259, 260, 261, 262, 263, 1966, 807, 1967, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 1968, 272, + 273, 274, 275, 276, 277, 1969, 809, 278, 279, 280, + 1970, 1971, 1972, 810, 1973, 1974, 1975, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 1976, 290, 1977, 291, + 292, 293, 294, 295, 296, 1978, 297, 298, 299, 300, + 1979, 1980, 301, 302, 303, 304, 305, 1981, 306, 307, + 308, 1982, 309, 310, 311, 1983, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 1984, 321, 1985, 322, 323, + 324, 325, 1986, 326, 1987, 327, 811, 1988, 812, 328, + 329, 330, 331, 1989, 332, 333, 1990, 334, 335, 1991, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 1992, 345, 346, 347, 348, 349, 350, 1993, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 1994, 359, 1995, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 1996, 1997, 367, 368, 818, 369, 819, 1998, 370, 371, + 372, 1999, 2000, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 2001, 395, 396, 821, + 397, 2002, 398, 399, 400, 401, 402, 403, 2003, 404, + 405, 2004, 2005, 406, 407, 408, 2006, 2007, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 2008, 422, 423, 424, 425, 426, + 427, 428, 429, 2009, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 2010, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 2011, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 2012, 471, + 472, 473, 474, 475, 2013, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 2014, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 2015, + 498, 499, 2016, 500, 826, 501, 502, 503, 504, 505, + 2017, 506, 507, 2018, 2019, 508, 509, 510, 511, 512, + 2020, 513, 514, 515, 516, 517, 518, 519, 2021, 2022, + 520, 521, 522, 523, 524, 2023, 2024, 525, 526, 527, + 528, 529, 530, 531, 2025, 532, 827, 533, 534, 535, + 536, 2026, 2027, 537, 2028, 2029, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 1952, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 2958, 230, 231, 232, 1953, + 234, 235, 236, 1954, 1955, 1956, 1957, 1958, 1959, 1960, + 237, 238, 1961, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 1962, 249, 250, 251, 252, + 253, 1963, 1964, 254, 255, 256, 257, 258, 1965, 259, + 260, 261, 262, 263, 1966, 807, 1967, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 1968, 272, 273, 274, + 275, 276, 277, 1969, 809, 278, 279, 280, 1970, 1971, + 1972, 810, 1973, 1974, 1975, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 1976, 290, 1977, 291, 292, 293, + 294, 295, 296, 1978, 297, 298, 299, 300, 1979, 1980, + 301, 302, 303, 2959, 305, 1981, 306, 307, 308, 1982, + 309, 310, 311, 1983, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 1984, 321, 1985, 322, 323, 324, 325, + 1986, 326, 1987, 327, 811, 1988, 812, 328, 329, 330, + 331, 1989, 332, 333, 1990, 334, 335, 1991, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 1992, 345, + 346, 347, 348, 349, 350, 1993, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 1994, 359, 1995, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 1996, 1997, + 367, 368, 818, 369, 819, 1998, 370, 371, 372, 1999, + 2000, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 2001, 395, 396, 821, 397, 2002, + 398, 399, 400, 401, 402, 403, 2003, 404, 405, 2004, + 2005, 406, 407, 408, 2006, 2007, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 2008, 422, 423, 424, 425, 426, 427, 428, + 429, 2009, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 2010, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 2011, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 2012, 471, 472, 473, + 474, 475, 2013, 2960, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 2014, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 2015, 498, 499, + 2016, 500, 826, 501, 502, 503, 504, 505, 2017, 506, + 507, 2018, 2019, 508, 509, 510, 511, 512, 2020, 513, + 514, 515, 516, 517, 518, 519, 2021, 2022, 520, 521, + 522, 523, 524, 2023, 2024, 525, 526, 527, 528, 529, + 530, 531, 2025, 532, 827, 533, 534, 535, 536, 2026, + 2027, 537, 2028, 2029, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 804, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 1195, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 1198, 0, 1199, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 1200, 1201, 1202, 1203, + 1204, 1205, 1206, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 1211, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 1214, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 1219, + 818, 369, 819, 0, 370, 371, 372, 1220, 1221, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 1226, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 1229, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 1230, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 1233, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 1235, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 1238, 511, 1239, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 1242, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 1244, + 1245, 1246, 1247, 549, 1248, 1249, 1250, 1251, 554, 555, + 556, 557, 849, 0, 618, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 1765, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 1766, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 1767, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 886, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 850, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 851, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 905, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 850, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 906, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 851, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 850, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 851, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 2345, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 849, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 850, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 3284, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 851, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 849, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 850, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 851, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 850, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 1004, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 851, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 850, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 1079, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 851, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 850, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1090, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 851, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 849, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 850, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1100, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 1101, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 851, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 849, 0, 618, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 1926, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 3, 4, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 849, 0, + 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 245, 246, 806, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 820, 390, 391, 392, 393, 394, 0, 395, 396, 821, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 822, 411, 823, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 825, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 849, 0, 618, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 245, 246, 806, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1751, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 820, 390, + 391, 392, 393, 394, 0, 395, 396, 821, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 822, 411, + 823, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 825, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 804, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 245, 246, + 806, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 820, 390, 391, 392, + 393, 394, 0, 395, 396, 821, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 822, 411, 823, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 825, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 804, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 245, 246, 806, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1026, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 820, 390, 391, 392, 393, 394, + 0, 395, 396, 821, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 822, 411, 823, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 825, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 245, 246, 806, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1076, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 820, 390, 391, 392, 393, 394, 0, 395, + 396, 821, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 822, 411, 823, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 825, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 2133, 259, 260, 261, 262, 263, 0, 0, 2210, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 2134, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 2211, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 2136, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 2212, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 2137, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 2138, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 2133, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 2134, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 2211, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 2136, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 3148, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 2137, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 2138, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 737, 231, 232, 696, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 697, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 738, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 698, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 699, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 696, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 697, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 2851, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 698, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 699, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 2133, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 2134, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 2211, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 2136, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 2137, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 2138, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 696, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 697, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 698, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 699, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 1792, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 1793, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 1794, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 1795, 327, 0, 0, 0, 1796, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 1797, 1798, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 1799, 466, 467, 468, 469, 470, 0, 1800, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 1801, 500, 0, 1802, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 1803, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 697, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 698, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 699, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 898, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 899, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 769, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 3, 4, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 2939, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 2940, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 2952, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 2953, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 609, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 610, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 729, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 730, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 731, 507, 0, 0, 732, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 763, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 764, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 765, 507, 0, 0, 766, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 769, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 858, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 859, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 1018, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 729, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 1159, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 1289, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 1300, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 749, 255, 256, 257, 1301, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 1293, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 756, 507, 0, + 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1412, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 769, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 1469, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1470, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 2742, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 2743, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 2744, 500, 0, 501, 2745, 503, 2746, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 2747, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 618, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 3970, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 3984, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 715, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 727, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 749, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 750, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 751, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 755, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 756, 507, 0, + 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 780, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 883, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 891, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 909, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 969, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 975, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 992, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 995, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 997, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1032, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1092, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1094, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 1104, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1107, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1110, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, + 459, 460, 461, 462, 463, 464, 754, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 1293, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 756, 507, 0, 0, 757, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1617, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 1655, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 1657, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 1727, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 1729, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 1731, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 1826, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 2086, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 340, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 0, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 749, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 340, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 752, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 753, 459, 460, 461, 462, 463, 464, 754, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 1293, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 2120, 502, 503, 504, 505, 0, 756, 507, 0, + 0, 757, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 758, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, + 459, 460, 461, 462, 463, 464, 2195, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 2196, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 756, 507, 0, 0, 2197, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 2469, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 2473, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 2542, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 2862, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 749, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 752, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 753, + 459, 460, 461, 462, 463, 464, 754, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 2196, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 756, 507, 0, 0, 2197, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 758, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 2929, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 0, 242, + 243, 244, 245, 246, 0, 247, 248, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 256, 257, 258, + 0, 259, 260, 261, 262, 263, 0, 0, 0, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 0, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 303, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 0, 321, 0, 322, 323, + 324, 325, 0, 326, 0, 327, 0, 0, 0, 328, + 329, 330, 331, 0, 332, 333, 0, 334, 335, 0, + 336, 337, 338, 339, 2942, 0, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 0, 359, 0, + 360, 0, 0, 361, 0, 362, 363, 364, 365, 366, + 0, 0, 367, 368, 0, 369, 0, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 0, 390, 391, 392, 393, 394, 0, 395, 396, 0, + 397, 0, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 410, + 0, 411, 0, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 0, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 478, 479, 480, + 0, 481, 482, 483, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 0, + 498, 499, 0, 500, 0, 501, 502, 503, 504, 505, + 0, 506, 507, 0, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 530, 531, 0, 532, 0, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 0, 242, 243, 244, + 245, 246, 0, 247, 248, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 256, 257, 258, 0, 259, + 260, 261, 262, 263, 0, 0, 0, 264, 265, 266, + 267, 268, 0, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 0, 278, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 0, 321, 0, 322, 323, 324, 325, + 0, 326, 0, 327, 0, 0, 0, 328, 329, 330, + 331, 0, 332, 333, 0, 334, 335, 0, 336, 337, + 338, 339, 2944, 0, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 360, 0, + 0, 361, 0, 362, 363, 364, 365, 366, 0, 0, + 367, 368, 0, 369, 0, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 0, 390, + 391, 392, 393, 394, 0, 395, 396, 0, 397, 0, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 410, 0, 411, + 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 424, 425, 426, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 0, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 478, 479, 480, 0, 481, + 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 498, 499, + 0, 500, 0, 501, 502, 503, 504, 505, 0, 506, + 507, 0, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 530, 531, 0, 532, 0, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 0, 242, 243, 244, 245, 246, + 0, 247, 248, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 256, 257, 258, 0, 259, 260, 261, + 262, 263, 0, 0, 0, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 0, 278, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 303, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 0, 321, 0, 322, 323, 324, 325, 0, 326, + 0, 327, 0, 0, 0, 328, 329, 330, 331, 0, + 332, 333, 0, 334, 335, 0, 336, 337, 338, 339, + 3079, 0, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 0, 359, 0, 360, 0, 0, 361, + 0, 362, 363, 364, 365, 366, 0, 0, 367, 368, + 0, 369, 0, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 0, 390, 391, 392, + 393, 394, 0, 395, 396, 0, 397, 0, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 410, 0, 411, 0, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 424, 425, 426, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 0, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 478, 479, 480, 0, 481, 482, 483, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 498, 499, 0, 500, + 0, 501, 502, 503, 504, 505, 0, 506, 507, 0, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 530, 531, + 0, 532, 0, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 3104, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 245, 246, 0, 247, 248, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 256, + 257, 258, 0, 259, 260, 261, 262, 263, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 0, 321, 0, + 322, 323, 324, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 333, 0, 334, + 335, 0, 336, 337, 338, 339, 4249, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 0, + 359, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 368, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 0, 390, 391, 392, 393, 394, 0, 395, + 396, 0, 397, 0, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 410, 0, 411, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 478, + 479, 480, 0, 481, 482, 483, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 506, 507, 0, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 530, 531, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 1034, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, + 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, + 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 2093, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 2094, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, + 820, 1049, 391, 392, 393, 0, 0, 395, 396, 821, + 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 2096, + 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 2097, 479, 480, + 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 0, 1056, 2098, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 0, 242, 243, 244, 245, 246, 0, 247, + 248, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 256, 257, 258, 0, 259, 260, 261, 262, 263, + 0, 0, 0, 264, 265, 266, 267, 268, 0, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 0, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 303, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, + 321, 0, 322, 323, 324, 325, 0, 326, 0, 327, + 0, 0, 0, 328, 329, 330, 331, 0, 332, 333, + 0, 334, 335, 0, 336, 337, 338, 339, 340, 0, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 0, 359, 0, 360, 0, 0, 361, 0, 362, + 363, 364, 365, 366, 0, 0, 367, 368, 0, 369, + 0, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 0, 390, 391, 392, 393, 394, + 0, 395, 396, 0, 397, 0, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 410, 0, 411, 0, 412, 413, 414, + 415, 416, 417, 418, 0, 420, 421, 0, 0, 422, + 423, 424, 425, 426, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 0, 438, 439, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 0, 458, + 459, 460, 461, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 478, 479, 480, 0, 481, 482, 483, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 0, 498, 499, 0, 500, 0, 501, + 502, 503, 504, 505, 0, 506, 507, 0, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 530, 531, 0, 532, + 0, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 1038, + 1039, 258, 0, 259, 260, 261, 262, 0, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 1040, 1041, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, + 322, 323, 1043, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 0, 0, 0, + 335, 0, 336, 337, 338, 339, 340, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 0, 353, 354, 355, 356, 1045, 1046, 0, + 1047, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 0, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1048, 820, 1049, 391, 392, 393, 0, 0, 395, + 396, 821, 397, 2191, 0, 399, 1050, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 0, 822, 411, 823, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, + 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1051, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 2097, + 479, 480, 825, 481, 482, 1053, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 498, 499, 3810, 500, 826, 501, 502, 503, + 504, 505, 0, 1054, 1055, 0, 0, 508, 509, 0, + 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 0, 1056, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 1034, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 556, 557, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 0, 1035, + 806, 1036, 1037, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 1038, 1039, 258, 0, 259, 260, 261, + 262, 0, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 1040, + 1041, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 1042, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 0, 317, 318, 319, + 0, 0, 321, 0, 322, 323, 1043, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 0, 0, 0, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 0, 353, 354, 355, + 356, 1045, 1046, 0, 1047, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 0, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 1048, 820, 1049, 391, 392, + 393, 2262, 0, 395, 396, 821, 397, 0, 0, 399, + 1050, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 0, 822, 411, 823, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 0, 425, 0, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 1051, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 0, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 1052, 479, 480, 825, 481, 482, 1053, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 0, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 1054, 1055, 0, + 0, 508, 509, 0, 511, 0, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 0, 1056, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 1034, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, + 556, 557, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, + 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, + 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 0, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, + 820, 1049, 391, 392, 393, 3625, 0, 395, 396, 821, + 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 0, + 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 1052, 479, 480, + 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 0, 1056, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 1034, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, + 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, + 321, 0, 322, 323, 1043, 325, 5141, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, + 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 0, 353, 354, 355, 356, 1045, + 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, + 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 0, 822, 411, 823, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 1052, 479, 480, 825, 481, 482, 1053, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, + 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 0, 1056, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 1034, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 0, 1035, 806, 1036, 1037, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 1038, 1039, 258, 0, 259, + 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 1040, 1041, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 1042, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 0, 321, 0, 322, 323, 1043, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, + 338, 339, 1044, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 0, 353, + 354, 355, 356, 1045, 1046, 0, 1047, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 1048, 820, 1049, + 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, + 0, 399, 1050, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 0, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 1051, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 1052, 479, 480, 825, 481, + 482, 1053, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 1054, + 1055, 0, 0, 508, 509, 0, 511, 0, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 0, 1056, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 805, 242, 243, 244, 0, 1035, 806, 1036, 1037, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 1038, + 1039, 258, 0, 259, 260, 261, 262, 0, 0, 807, + 0, 264, 265, 266, 267, 268, 808, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 809, 278, + 279, 280, 0, 0, 0, 810, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 1040, 1041, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 1042, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, + 322, 323, 1043, 325, 0, 326, 0, 327, 811, 0, + 812, 328, 329, 330, 331, 0, 332, 0, 0, 0, + 335, 0, 336, 337, 338, 339, 1098, 813, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 814, 0, 353, 354, 355, 356, 1045, 1046, 0, + 1047, 0, 360, 815, 816, 361, 817, 362, 363, 364, + 365, 366, 0, 0, 367, 0, 818, 369, 819, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 1048, 820, 1049, 391, 392, 393, 0, 0, 395, + 396, 821, 397, 0, 0, 399, 1050, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 0, 822, 411, 823, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, + 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 1051, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 824, 458, 459, 460, + 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 1052, + 479, 480, 825, 481, 482, 1053, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 498, 499, 0, 500, 826, 501, 502, 503, + 504, 505, 0, 1054, 1055, 0, 0, 508, 509, 0, + 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 0, 1056, 0, 532, 827, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 1034, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 556, 557, 0, 225, + 226, 227, 228, 229, 230, 231, 232, 0, 234, 235, + 236, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 0, 239, 240, 241, 805, 242, 243, 244, 0, 1035, + 806, 1036, 1037, 0, 249, 250, 251, 252, 253, 0, + 0, 254, 255, 1038, 1039, 258, 0, 259, 260, 261, + 262, 0, 0, 807, 0, 264, 265, 266, 267, 268, + 808, 269, 270, 271, 0, 272, 273, 274, 275, 276, + 277, 0, 809, 278, 279, 280, 0, 0, 0, 810, + 0, 0, 0, 281, 282, 283, 284, 285, 286, 1040, + 1041, 289, 0, 290, 0, 291, 292, 293, 294, 295, + 296, 0, 297, 298, 299, 300, 0, 0, 301, 302, + 1042, 304, 305, 0, 306, 307, 308, 0, 309, 310, + 311, 0, 312, 313, 314, 315, 0, 317, 318, 319, + 0, 0, 321, 0, 322, 323, 1043, 325, 0, 326, + 0, 327, 811, 0, 812, 328, 329, 330, 331, 0, + 332, 0, 0, 0, 335, 0, 336, 337, 338, 339, + 340, 813, 341, 342, 343, 344, 0, 345, 346, 347, + 348, 349, 350, 0, 351, 814, 0, 353, 354, 355, + 356, 1045, 1046, 0, 1047, 0, 360, 815, 816, 361, + 817, 362, 363, 364, 365, 366, 0, 0, 367, 0, + 818, 369, 819, 0, 370, 371, 372, 0, 0, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 1048, 820, 1049, 391, 392, + 393, 0, 0, 395, 396, 821, 397, 0, 0, 399, + 1050, 401, 402, 403, 0, 404, 405, 0, 0, 406, + 407, 408, 0, 0, 409, 0, 822, 411, 823, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 0, + 0, 422, 423, 0, 425, 0, 427, 428, 429, 0, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 1051, + 440, 441, 442, 443, 0, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 0, 456, 457, + 824, 458, 459, 460, 0, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 0, 476, 477, 1052, 479, 480, 825, 481, 482, 1053, + 484, 0, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 0, 0, 498, 499, 0, 500, + 826, 501, 502, 503, 504, 505, 0, 1054, 1055, 0, + 0, 508, 509, 0, 511, 0, 0, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 520, 521, 522, 523, + 524, 0, 0, 525, 526, 527, 528, 529, 0, 1056, + 0, 532, 827, 533, 534, 535, 536, 0, 0, 537, + 0, 0, 538, 539, 540, 541, 542, 543, 1034, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, + 556, 557, 0, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 234, 235, 236, 0, 0, 0, 0, 0, + 0, 0, 237, 238, 0, 239, 240, 241, 805, 242, + 243, 244, 0, 1035, 806, 1036, 1037, 0, 249, 250, + 251, 252, 253, 0, 0, 254, 255, 1038, 1039, 258, + 0, 259, 260, 261, 262, 0, 0, 807, 0, 264, + 265, 266, 267, 268, 808, 269, 270, 271, 0, 272, + 273, 274, 275, 276, 277, 0, 809, 278, 279, 280, + 0, 0, 0, 810, 0, 0, 0, 281, 282, 283, + 284, 285, 286, 1040, 1041, 289, 0, 290, 0, 291, + 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, + 0, 0, 301, 302, 1042, 304, 305, 0, 306, 307, + 308, 0, 309, 310, 311, 0, 312, 313, 314, 315, + 0, 317, 318, 319, 0, 0, 321, 0, 322, 323, + 1043, 325, 0, 326, 0, 327, 811, 0, 812, 328, + 329, 330, 331, 0, 332, 0, 0, 0, 335, 0, + 336, 337, 338, 339, 340, 813, 341, 342, 343, 344, + 0, 345, 346, 347, 348, 349, 350, 0, 351, 814, + 0, 353, 354, 355, 356, 1045, 1046, 0, 1047, 0, + 360, 815, 816, 361, 817, 362, 363, 364, 365, 366, + 0, 0, 367, 0, 818, 369, 819, 0, 370, 371, + 372, 0, 0, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 1048, + 820, 1049, 391, 392, 393, 0, 0, 395, 396, 821, + 397, 0, 0, 399, 1050, 401, 402, 403, 0, 404, + 405, 0, 0, 406, 407, 408, 0, 0, 409, 0, + 822, 411, 823, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 0, 0, 422, 423, 0, 425, 0, + 427, 428, 429, 0, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 1051, 440, 441, 442, 443, 0, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 0, 456, 457, 824, 458, 459, 460, 0, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 0, 476, 477, 2097, 479, 480, + 825, 481, 482, 1053, 484, 0, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, + 498, 499, 0, 500, 826, 501, 502, 503, 504, 505, + 0, 1054, 1055, 0, 0, 508, 509, 0, 511, 0, + 0, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 520, 521, 522, 523, 524, 0, 0, 525, 526, 527, + 528, 529, 0, 1056, 0, 532, 827, 533, 534, 535, + 536, 0, 0, 537, 0, 0, 538, 539, 540, 541, + 542, 543, 1034, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 555, 556, 557, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 0, 234, 235, 236, 0, + 0, 0, 0, 0, 0, 0, 237, 238, 0, 239, + 240, 241, 805, 242, 243, 244, 0, 1035, 806, 1036, + 1037, 0, 249, 250, 251, 252, 253, 0, 0, 254, + 255, 1038, 1039, 258, 0, 259, 260, 261, 262, 0, + 0, 807, 0, 264, 265, 266, 267, 268, 808, 269, + 270, 271, 0, 272, 273, 274, 275, 276, 277, 0, + 809, 278, 279, 280, 0, 0, 0, 810, 0, 0, + 0, 281, 282, 283, 284, 285, 286, 1040, 1041, 289, + 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, + 297, 298, 299, 300, 0, 0, 301, 302, 1042, 304, + 305, 0, 306, 307, 308, 0, 309, 310, 311, 0, + 312, 313, 314, 315, 0, 317, 318, 319, 0, 0, + 321, 0, 322, 323, 1043, 325, 0, 326, 0, 327, + 811, 0, 812, 328, 329, 330, 331, 0, 332, 0, + 0, 0, 335, 0, 336, 337, 338, 339, 340, 813, + 341, 342, 343, 344, 0, 345, 346, 347, 348, 349, + 350, 0, 351, 814, 0, 353, 354, 355, 356, 1045, + 1046, 0, 1047, 0, 360, 815, 816, 361, 817, 362, + 363, 364, 365, 366, 0, 0, 367, 0, 818, 369, + 819, 0, 370, 371, 372, 0, 0, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 1048, 820, 1049, 391, 392, 393, 0, + 0, 395, 396, 821, 397, 0, 0, 399, 1050, 401, + 402, 403, 0, 404, 405, 0, 0, 406, 407, 408, + 0, 0, 409, 0, 822, 411, 823, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 0, 0, 422, + 423, 0, 425, 0, 427, 428, 429, 0, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 1051, 440, 441, + 442, 443, 0, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 0, 456, 457, 824, 458, + 459, 460, 0, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 0, 476, + 477, 0, 479, 480, 825, 481, 482, 1053, 484, 0, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 0, 0, 498, 499, 0, 500, 826, 501, + 502, 503, 504, 505, 0, 1054, 1055, 0, 0, 508, + 509, 0, 511, 0, 0, 513, 514, 515, 516, 517, + 518, 519, 0, 0, 520, 521, 522, 523, 524, 0, + 0, 525, 526, 527, 528, 529, 0, 1056, 0, 532, + 827, 533, 534, 535, 536, 0, 0, 537, 0, 0, + 538, 539, 540, 541, 542, 543, 1034, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 555, 556, 557, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 0, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 237, 238, 0, 239, 240, 241, 805, 242, 243, 244, + 0, 0, 806, 0, 0, 0, 249, 250, 251, 252, + 253, 0, 0, 254, 255, 0, 0, 258, 0, 259, + 260, 261, 262, 0, 0, 807, 0, 264, 265, 266, + 267, 268, 808, 269, 270, 271, 0, 272, 273, 274, + 275, 276, 277, 0, 809, 278, 279, 280, 0, 0, + 0, 810, 0, 0, 0, 281, 282, 283, 284, 285, + 286, 0, 0, 289, 0, 290, 0, 291, 292, 293, + 294, 295, 296, 0, 297, 298, 299, 300, 0, 0, + 301, 302, 303, 304, 305, 0, 306, 307, 308, 0, + 309, 310, 311, 0, 312, 313, 314, 315, 0, 317, + 318, 319, 0, 0, 321, 0, 322, 323, 0, 325, + 0, 326, 0, 327, 811, 0, 812, 328, 329, 330, + 331, 0, 332, 0, 0, 0, 335, 0, 336, 337, + 338, 339, 340, 813, 341, 342, 343, 344, 0, 345, + 346, 347, 348, 349, 350, 0, 351, 814, 0, 353, + 354, 355, 356, 0, 0, 0, 0, 0, 360, 815, + 816, 361, 817, 362, 363, 364, 365, 366, 0, 0, + 367, 0, 818, 369, 819, 0, 370, 371, 372, 0, + 0, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 0, 820, 0, + 391, 392, 393, 0, 0, 395, 396, 821, 397, 0, + 0, 399, 0, 401, 402, 403, 0, 404, 405, 0, + 0, 406, 407, 408, 0, 0, 409, 0, 822, 411, + 823, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 0, 0, 422, 423, 0, 425, 0, 427, 428, + 429, 0, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 0, 440, 441, 442, 443, 0, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 0, + 456, 457, 824, 458, 459, 460, 0, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 0, 476, 477, 0, 479, 480, 825, 481, + 482, 0, 484, 0, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 0, 0, 498, 499, + 0, 500, 826, 501, 502, 503, 504, 505, 0, 0, + 0, 0, 0, 508, 509, 0, 511, 0, 0, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 520, 521, + 522, 523, 524, 0, 0, 525, 526, 527, 528, 529, + 0, 0, 0, 532, 827, 533, 534, 535, 536, 0, + 0, 537, 0, 0, 538, 539, 540, 541, 542, 543, + 4809, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 555, 556, 557, 0, 225, 226, 227, 228, 229, + 230, 231, 232, 0, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 237, 238, 0, 239, 240, 241, + 0, 242, 243, 244, 0, 0, 0, 0, 0, 0, + 249, 250, 251, 252, 253, 0, 0, 254, 255, 0, + 0, 258, 0, 259, 260, 261, 262, 0, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 0, 272, 273, 274, 275, 276, 277, 0, 0, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 281, + 282, 283, 284, 285, 286, 0, 0, 289, 0, 290, + 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, + 299, 300, 0, 0, 301, 302, 303, 304, 305, 0, + 306, 307, 308, 0, 309, 310, 311, 0, 312, 313, + 314, 315, 0, 317, 318, 319, 0, 0, 321, 0, + 322, 323, 0, 325, 0, 326, 0, 327, 0, 0, + 0, 328, 329, 330, 331, 0, 332, 0, 0, 0, + 335, 0, 336, 337, 338, 339, 340, 0, 341, 342, + 343, 344, 0, 345, 346, 347, 348, 349, 350, 0, + 351, 0, 0, 353, 354, 355, 356, 0, 0, 0, + 0, 0, 360, 0, 0, 361, 0, 362, 363, 364, + 365, 366, 0, 0, 367, 0, 0, 369, 0, 0, + 370, 371, 372, 0, 0, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 0, 0, 0, 391, 392, 393, 0, 0, 395, + 396, 0, 397, 0, 0, 399, 0, 401, 402, 403, + 0, 404, 405, 0, 0, 406, 407, 408, 0, 0, + 409, 0, 0, 411, 0, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 0, 0, 422, 423, 0, + 425, 0, 427, 428, 429, 0, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 0, 440, 441, 442, 443, + 0, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 0, 456, 457, 0, 458, 459, 460, + 0, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 0, 476, 477, 0, + 479, 480, 0, 481, 482, 0, 484, 0, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 498, 499, 0, 500, 0, 501, 502, 503, + 504, 505, 0, 0, 0, 0, 0, 508, 509, 0, + 511, 0, 0, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 520, 521, 522, 523, 524, 0, 0, 525, + 526, 527, 528, 529, 0, 0, 0, 532, 0, 533, + 534, 535, 536, 0, 0, 537, 0, 0, 538, 539, + 540, 541, 542, 543, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 556, 557 +}; + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-4583))) + +#define yytable_value_is_error(Yytable_value) \ + (!!((Yytable_value) == (-2568))) + +static const yytype_int16 yycheck[] = +{ + 16, 0, 892, 0, 203, 798, 0, 0, 586, 25, + 1120, 750, 198, 21, 36, 51, 1142, 748, 181, 27, + 1318, 20, 7, 1511, 659, 697, 698, 699, 1052, 14, + 835, 703, 619, 893, 21, 1082, 1442, 1398, 772, 203, + 27, 2597, 2409, 2763, 773, 619, 908, 12, 1435, 779, + 1917, 1447, 2933, 917, 1178, 1040, 1041, 1571, 1055, 0, + 189, 998, 207, 1651, 757, 1050, 2803, 2906, 2422, 22, + 17, 20, 45, 1832, 1320, 220, 3224, 1375, 665, 3475, + 3518, 1442, 2958, 36, 2960, 3134, 3518, 3199, 2261, 2573, + 0, 3410, 2755, 44, 3126, 3180, 3570, 2101, 2102, 642, + 2313, 2334, 3134, 2753, 2754, 577, 1458, 4048, 3514, 2812, + 972, 3145, 655, 847, 976, 3799, 3439, 654, 168, 981, + 664, 3802, 1815, 3811, 1370, 3745, 3211, 3445, 1920, 991, + 1853, 892, 4276, 190, 191, 3789, 2785, 194, 1534, 900, + 861, 183, 1876, 1005, 4381, 2686, 4437, 35, 1427, 910, + 1664, 0, 4279, 0, 42, 212, 0, 629, 0, 0, + 0, 1749, 219, 0, 183, 1375, 753, 0, 3788, 0, + 0, 0, 0, 3197, 50, 41, 4230, 845, 795, 753, + 2822, 4456, 1038, 1039, 4397, 1350, 4399, 921, 1540, 1541, + 4579, 1437, 795, 1049, 3494, 4591, 2751, 5, 5, 3444, + 9, 3446, 3373, 42, 5, 4787, 0, 9, 0, 0, + 35, 56, 71, 0, 49, 0, 86, 987, 9, 5, + 4495, 113, 1207, 1208, 4278, 5, 29, 13, 14, 22, + 5, 157, 11, 1003, 2101, 26, 5, 42, 56, 2412, + 1237, 56, 1227, 56, 4694, 4695, 5, 73, 2803, 5, + 5, 73, 4728, 73, 13, 14, 22, 13, 14, 137, + 162, 83, 162, 5, 215, 169, 1071, 5, 11, 5, + 5, 162, 26, 5, 185, 2816, 162, 111, 162, 39, + 143, 2751, 144, 4440, 5, 56, 165, 5, 2367, 2908, + 2369, 204, 964, 0, 2373, 3865, 3866, 40, 3868, 3869, + 3870, 162, 9, 2382, 2383, 2384, 162, 26, 78, 1607, + 4, 9, 231, 132, 5, 9, 208, 1390, 266, 26, + 4501, 4502, 0, 5, 123, 56, 285, 29, 71, 4525, + 713, 264, 116, 2803, 133, 3, 300, 130, 83, 199, + 1196, 1197, 20, 5, 56, 162, 2519, 207, 2521, 162, + 156, 104, 3, 4, 5, 261, 272, 285, 9, 251, + 220, 712, 30, 31, 130, 388, 333, 1223, 162, 111, + 162, 162, 56, 51, 73, 162, 4533, 162, 249, 285, + 350, 350, 1112, 171, 83, 32, 22, 237, 164, 154, + 114, 185, 28, 185, 185, 11, 351, 116, 185, 1120, + 185, 36, 4984, 1340, 4, 11, 152, 319, 333, 9, + 324, 4, 5, 335, 39, 307, 9, 307, 337, 43, + 162, 11, 586, 73, 104, 4814, 11, 465, 306, 467, + 320, 469, 104, 83, 40, 4710, 350, 4581, 350, 584, + 64, 1305, 26, 4656, 26, 590, 11, 73, 471, 33, + 40, 33, 26, 4580, 324, 162, 346, 181, 603, 33, + 111, 380, 680, 681, 682, 71, 345, 685, 686, 687, + 20, 393, 113, 1497, 638, 40, 222, 695, 185, 198, + 325, 71, 281, 248, 409, 120, 73, 293, 407, 163, + 353, 341, 268, 161, 130, 163, 249, 144, 56, 378, + 467, 471, 471, 467, 56, 183, 71, 325, 467, 118, + 325, 430, 467, 432, 897, 281, 1103, 465, 575, 322, + 319, 469, 579, 1257, 337, 3144, 1256, 388, 5, 1103, + 333, 4688, 335, 1120, 467, 256, 593, 1610, 256, 467, + 4697, 467, 330, 600, 415, 896, 1089, 104, 467, 388, + 566, 1285, 203, 319, 325, 471, 3605, 350, 471, 4755, + 471, 467, 388, 104, 426, 256, 388, 471, 388, 471, + 569, 471, 569, 3605, 225, 569, 569, 416, 1122, 471, + 471, 467, 1303, 467, 350, 1831, 1884, 1308, 1309, 467, + 393, 5067, 5042, 143, 325, 1182, 4887, 3629, 367, 368, + 5182, 471, 4991, 619, 620, 1148, 465, 426, 1182, 422, + 469, 416, 420, 325, 374, 471, 409, 3936, 565, 669, + 322, 1164, 456, 377, 343, 409, 471, 1873, 569, 665, + 8, 401, 467, 11, 1364, 798, 1179, 15, 16, 17, + 3521, 325, 467, 388, 1506, 3963, 388, 1509, 414, 458, + 459, 3974, 1413, 471, 471, 3978, 471, 1517, 465, 467, + 467, 1787, 469, 256, 466, 664, 467, 458, 459, 4813, + 678, 3756, 680, 1919, 682, 347, 470, 4804, 470, 470, + 688, 467, 2855, 470, 463, 470, 3798, 467, 1853, 388, + 409, 678, 467, 680, 1415, 682, 1861, 377, 663, 715, + 1335, 688, 689, 690, 1425, 1569, 1753, 692, 467, 3880, + 1471, 467, 467, 1300, 456, 1485, 665, 3962, 5107, 3964, + 463, 1308, 1309, 5119, 584, 741, 1300, 469, 4028, 467, + 590, 467, 467, 749, 1719, 467, 752, 753, 754, 938, + 471, 1358, 4923, 603, 3778, 787, 4687, 1794, 934, 374, + 432, 458, 459, 421, 4324, 1358, 1803, 1527, 709, 471, + 458, 459, 388, 470, 458, 459, 1434, 325, 787, 467, + 432, 453, 413, 325, 938, 5050, 360, 1498, 360, 256, + 1501, 1502, 104, 333, 2180, 467, 360, 471, 5063, 80, + 789, 453, 789, 467, 923, 789, 789, 3460, 22, 5188, + 4274, 388, 411, 353, 2210, 467, 5019, 458, 459, 173, + 867, 868, 162, 4, 5, 2113, 173, 3171, 9, 3843, + 377, 2825, 773, 2827, 712, 713, 714, 116, 777, 3042, + 430, 122, 1602, 5, 3715, 143, 377, 119, 1694, 1695, + 69, 4985, 458, 459, 460, 461, 462, 463, 789, 266, + 157, 802, 47, 453, 104, 421, 5245, 272, 458, 459, + 4987, 2257, 1583, 3702, 3506, 458, 459, 3, 458, 459, + 460, 461, 462, 463, 861, 460, 461, 462, 463, 789, + 272, 3436, 350, 5158, 3439, 751, 2753, 2754, 2755, 755, + 268, 569, 249, 844, 152, 460, 461, 462, 463, 956, + 1478, 5192, 5193, 2113, 780, 1123, 130, 114, 1126, 198, + 1128, 4965, 1130, 471, 1132, 8, 337, 115, 1136, 471, + 266, 2200, 15, 16, 17, 111, 26, 837, 985, 986, + 65, 22, 4986, 2656, 2657, 304, 3109, 3110, 2661, 1722, + 789, 4379, 789, 2241, 267, 789, 82, 789, 789, 789, + 4570, 3492, 789, 5127, 1011, 34, 789, 1687, 789, 789, + 789, 789, 162, 3518, 222, 5109, 3436, 22, 2266, 3439, + 3, 82, 56, 2461, 181, 2698, 2699, 163, 5215, 377, + 3629, 5108, 4420, 80, 3823, 180, 664, 665, 1660, 5280, + 185, 105, 283, 430, 80, 4433, 261, 252, 134, 27, + 3, 4433, 5, 471, 159, 263, 141, 205, 896, 897, + 80, 3224, 123, 1796, 321, 249, 2126, 2315, 165, 4338, + 285, 2813, 133, 3, 159, 122, 221, 1084, 1085, 3108, + 3767, 272, 111, 2767, 471, 264, 122, 319, 388, 130, + 212, 65, 38, 5187, 235, 353, 467, 238, 3518, 82, + 467, 415, 122, 468, 80, 377, 471, 281, 415, 83, + 3, 1800, 1801, 4386, 4382, 256, 252, 65, 4391, 467, + 1017, 4394, 106, 2097, 188, 130, 454, 455, 456, 471, + 458, 459, 460, 461, 462, 463, 5260, 1103, 2781, 2476, + 3, 382, 228, 22, 116, 319, 122, 140, 467, 340, + 1830, 134, 1832, 106, 1120, 2403, 456, 396, 1838, 787, + 23, 789, 435, 111, 1844, 1845, 1846, 141, 4772, 469, + 409, 1756, 3126, 1122, 1854, 1855, 350, 377, 4812, 1859, + 3134, 111, 116, 1120, 5, 159, 1870, 4825, 1154, 82, + 1125, 4822, 1127, 177, 1129, 281, 1131, 4295, 1133, 1134, + 1135, 4771, 4806, 4591, 409, 1140, 1693, 4269, 1793, 202, + 355, 4042, 1797, 298, 1799, 249, 1182, 1802, 166, 82, + 281, 199, 5113, 5114, 177, 268, 198, 1764, 4263, 270, + 330, 111, 1725, 49, 111, 4805, 283, 183, 388, 163, + 290, 338, 135, 272, 1737, 228, 154, 283, 345, 164, + 390, 130, 467, 237, 315, 1748, 240, 4083, 319, 1746, + 1682, 106, 3767, 283, 198, 449, 185, 3221, 255, 1763, + 1256, 35, 135, 337, 22, 411, 281, 376, 24, 272, + 28, 378, 323, 324, 237, 377, 102, 240, 111, 350, + 54, 325, 1258, 433, 380, 345, 382, 190, 281, 45, + 465, 1267, 399, 251, 469, 288, 214, 283, 256, 350, + 410, 410, 376, 377, 319, 1281, 350, 458, 459, 404, + 261, 251, 185, 1851, 298, 173, 256, 190, 26, 4685, + 1330, 381, 177, 383, 1300, 382, 319, 1303, 1304, 103, + 323, 113, 1308, 1309, 285, 350, 382, 3767, 311, 4618, + 298, 1343, 1344, 268, 1346, 22, 5247, 341, 4992, 140, + 284, 28, 382, 113, 1478, 313, 1303, 350, 297, 288, + 357, 1308, 1309, 4026, 1343, 1344, 256, 1346, 76, 4652, + 115, 197, 130, 3996, 4808, 105, 84, 113, 341, 4002, + 2079, 3991, 237, 116, 287, 240, 125, 380, 127, 382, + 319, 249, 279, 467, 323, 210, 382, 130, 281, 343, + 403, 454, 455, 456, 112, 458, 459, 460, 461, 462, + 463, 150, 270, 187, 287, 26, 3860, 456, 251, 2677, + 404, 350, 356, 249, 319, 2683, 465, 409, 467, 468, + 469, 222, 471, 4712, 249, 2285, 1453, 430, 4717, 4718, + 4, 280, 261, 199, 369, 9, 404, 57, 208, 1360, + 423, 390, 4850, 130, 448, 65, 343, 330, 188, 3974, + 205, 235, 4471, 3978, 238, 409, 285, 350, 1415, 144, + 178, 5115, 208, 467, 256, 249, 5120, 83, 1425, 4471, + 430, 189, 164, 4881, 1122, 448, 341, 26, 2209, 4881, + 377, 251, 307, 388, 433, 91, 177, 4569, 211, 402, + 270, 430, 375, 1410, 337, 111, 280, 410, 103, 2516, + 413, 281, 251, 339, 125, 251, 467, 256, 1465, 1466, + 210, 471, 261, 281, 453, 1542, 1543, 1544, 1545, 402, + 417, 2656, 2657, 90, 4890, 4891, 2661, 410, 353, 1515, + 413, 85, 5186, 430, 3974, 1521, 234, 307, 3978, 319, + 324, 1498, 1190, 110, 1501, 1502, 237, 415, 231, 249, + 3733, 319, 295, 4557, 2285, 280, 453, 163, 1585, 1586, + 344, 307, 1210, 2698, 2699, 1734, 2923, 1723, 3026, 2126, + 467, 2270, 2271, 127, 3777, 2274, 125, 144, 1677, 1606, + 364, 4989, 350, 448, 409, 3768, 90, 2318, 194, 359, + 2330, 157, 5246, 1241, 281, 4085, 3325, 337, 2289, 1733, + 1734, 4091, 168, 209, 390, 225, 2297, 1487, 1256, 2300, + 1531, 173, 1492, 219, 1641, 1642, 1643, 1644, 319, 185, + 2351, 2280, 114, 3460, 5278, 350, 1583, 5281, 30, 31, + 235, 3605, 319, 238, 467, 251, 376, 377, 467, 245, + 3689, 471, 422, 335, 3693, 3694, 395, 3696, 1634, 350, + 341, 369, 1638, 353, 337, 3629, 405, 388, 343, 3352, + 3353, 3354, 3355, 350, 168, 3358, 3359, 3360, 3361, 3362, + 3363, 3364, 3365, 3366, 3367, 1555, 4527, 2119, 2418, 1559, + 3046, 113, 630, 11, 468, 280, 280, 249, 90, 181, + 2349, 3834, 377, 3836, 2207, 1343, 1344, 380, 1346, 391, + 167, 2441, 2442, 2443, 2444, 397, 654, 388, 110, 409, + 3268, 5119, 167, 2453, 323, 288, 281, 1851, 2417, 281, + 430, 3414, 3415, 329, 407, 157, 1556, 1754, 125, 0, + 127, 4786, 417, 1760, 1691, 111, 281, 2437, 4820, 158, + 471, 350, 144, 71, 1701, 430, 1703, 430, 315, 432, + 323, 411, 1709, 150, 319, 350, 350, 319, 225, 1716, + 192, 471, 328, 4468, 2860, 164, 29, 1487, 453, 297, + 225, 190, 1492, 231, 319, 456, 343, 350, 323, 234, + 4784, 35, 467, 5191, 467, 350, 5152, 281, 469, 2489, + 53, 125, 4318, 127, 1763, 4604, 195, 4801, 281, 189, + 54, 1631, 178, 281, 4509, 350, 343, 467, 198, 1639, + 377, 142, 470, 167, 125, 140, 127, 249, 1773, 251, + 1775, 1651, 1777, 321, 1779, 319, 1781, 152, 113, 2471, + 1785, 1823, 157, 4837, 2276, 1555, 319, 315, 4, 1559, + 377, 319, 393, 9, 311, 1764, 1815, 4698, 1815, 103, + 417, 1815, 1815, 415, 4379, 186, 350, 1843, 4704, 256, + 1887, 4386, 390, 430, 261, 3133, 4391, 350, 2775, 4394, + 4053, 225, 350, 231, 2565, 251, 311, 202, 2833, 337, + 417, 4999, 3204, 1840, 1841, 3207, 453, 335, 411, 1810, + 1847, 1848, 4229, 333, 300, 4420, 1726, 222, 103, 1822, + 467, 4427, 467, 4429, 1815, 433, 3345, 192, 4433, 344, + 4600, 3179, 1829, 315, 381, 411, 383, 251, 1875, 1749, + 4063, 4064, 380, 2480, 4248, 427, 381, 261, 383, 281, + 467, 4268, 430, 187, 423, 3374, 2480, 377, 263, 4379, + 407, 343, 377, 4998, 467, 393, 4386, 272, 1934, 407, + 261, 4391, 407, 158, 4394, 453, 423, 2562, 2658, 306, + 251, 260, 281, 4967, 249, 256, 251, 319, 247, 471, + 2670, 467, 430, 471, 432, 377, 2533, 340, 91, 337, + 4420, 235, 930, 83, 238, 190, 265, 334, 423, 2533, + 163, 311, 1629, 4433, 140, 249, 212, 2760, 395, 2168, + 319, 140, 2702, 281, 236, 953, 152, 333, 405, 467, + 2166, 157, 162, 152, 305, 417, 1653, 281, 157, 421, + 968, 194, 380, 432, 344, 4834, 280, 381, 430, 383, + 235, 350, 3725, 238, 2168, 185, 209, 4220, 3522, 365, + 2740, 319, 4893, 467, 453, 333, 219, 335, 2823, 407, + 163, 453, 430, 407, 393, 319, 202, 377, 467, 152, + 2159, 162, 21, 202, 157, 467, 4591, 167, 27, 456, + 324, 393, 430, 432, 432, 453, 222, 2768, 403, 2909, + 2058, 194, 469, 222, 185, 4792, 350, 152, 188, 3185, + 344, 2206, 157, 231, 453, 266, 209, 5101, 321, 3195, + 271, 2058, 2765, 423, 2934, 393, 219, 430, 467, 467, + 364, 340, 4295, 8, 430, 1763, 11, 263, 3576, 3387, + 15, 16, 17, 2042, 263, 225, 272, 4652, 236, 222, + 453, 323, 245, 272, 2161, 2162, 2128, 453, 2130, 157, + 2126, 157, 234, 2170, 4193, 2172, 4195, 4196, 2126, 2176, + 4199, 4591, 157, 266, 3991, 471, 329, 222, 350, 3996, + 432, 179, 354, 179, 2279, 4002, 2714, 1815, 234, 2126, + 263, 271, 35, 2084, 179, 266, 5180, 140, 3394, 2910, + 271, 453, 572, 24, 2669, 888, 2671, 2672, 3554, 152, + 4880, 54, 3568, 5044, 157, 4743, 5251, 4745, 263, 337, + 73, 4749, 905, 4751, 45, 908, 2505, 2506, 2507, 2195, + 83, 2768, 4652, 3307, 1162, 87, 329, 3352, 3353, 3354, + 3355, 3779, 188, 3358, 3359, 3360, 3361, 3362, 3363, 3364, + 3365, 3366, 3367, 2348, 624, 468, 5240, 179, 471, 202, + 103, 1889, 380, 3609, 634, 2850, 62, 63, 4796, 4432, + 3385, 231, 3574, 2984, 3576, 79, 4439, 403, 2179, 222, + 2090, 393, 468, 1863, 403, 471, 1866, 4792, 2295, 407, + 3177, 2298, 466, 333, 334, 3242, 3243, 471, 2108, 3414, + 3415, 381, 462, 383, 2114, 3501, 423, 467, 2118, 469, + 185, 466, 430, 393, 432, 279, 471, 340, 411, 231, + 263, 333, 334, 166, 404, 5, 3138, 407, 462, 272, + 10, 206, 53, 467, 2144, 469, 467, 3801, 18, 465, + 2877, 212, 468, 469, 187, 4850, 9, 468, 468, 467, + 471, 471, 2289, 2877, 2847, 2848, 3604, 37, 3606, 2366, + 2297, 468, 468, 2300, 471, 471, 467, 2374, 2375, 2270, + 2271, 337, 4792, 2274, 2381, 2341, 4881, 337, 2188, 343, + 3628, 468, 468, 468, 471, 471, 471, 381, 2395, 383, + 423, 468, 235, 268, 471, 238, 2206, 3645, 2364, 468, + 5231, 2367, 471, 2369, 65, 468, 249, 2373, 471, 468, + 71, 3131, 471, 377, 13, 14, 2382, 2383, 2384, 266, + 380, 231, 83, 471, 468, 4548, 467, 471, 2238, 2436, + 4850, 468, 468, 231, 471, 471, 468, 280, 468, 471, + 381, 471, 383, 3519, 3520, 231, 468, 407, 421, 471, + 111, 49, 113, 417, 2264, 3126, 2084, 2464, 43, 53, + 403, 4881, 2272, 3134, 208, 469, 430, 3804, 380, 2279, + 430, 2607, 432, 2283, 2440, 3786, 468, 4294, 269, 471, + 5150, 324, 468, 4512, 4989, 471, 269, 468, 468, 453, + 471, 471, 450, 2303, 92, 407, 468, 468, 2308, 471, + 471, 344, 2312, 467, 388, 166, 2472, 467, 2423, 3002, + 467, 2518, 469, 2520, 2480, 2325, 2417, 4471, 430, 117, + 432, 364, 2601, 465, 3017, 467, 5196, 337, 2338, 266, + 468, 192, 157, 471, 468, 5041, 134, 471, 2348, 337, + 138, 468, 3164, 430, 471, 432, 1474, 468, 231, 468, + 471, 337, 471, 923, 468, 467, 266, 471, 468, 468, + 158, 471, 471, 161, 934, 2502, 2503, 2533, 3503, 4989, + 380, 2508, 2463, 468, 269, 468, 471, 175, 471, 454, + 455, 456, 380, 458, 459, 460, 461, 462, 463, 468, + 251, 467, 471, 469, 380, 256, 468, 407, 0, 471, + 2714, 468, 450, 3140, 471, 3142, 43, 208, 468, 407, + 3725, 471, 3291, 2620, 5119, 450, 3140, 430, 3142, 432, + 430, 407, 432, 468, 468, 5295, 471, 471, 2565, 381, + 460, 383, 430, 253, 432, 468, 161, 298, 471, 4593, + 430, 467, 432, 1013, 430, 3316, 432, 471, 1576, 381, + 3464, 383, 313, 468, 337, 53, 471, 467, 256, 4097, + 468, 4334, 3155, 1591, 3157, 468, 264, 3347, 471, 467, + 162, 2785, 2658, 468, 468, 468, 471, 471, 471, 468, + 204, 467, 8, 3220, 1612, 11, 5191, 467, 90, 15, + 16, 17, 468, 467, 470, 3280, 3220, 380, 469, 5119, + 468, 3381, 468, 471, 434, 471, 468, 305, 468, 471, + 470, 3454, 3455, 3456, 40, 468, 2702, 468, 471, 468, + 471, 47, 471, 343, 407, 4081, 468, 468, 468, 471, + 471, 471, 468, 468, 468, 471, 471, 471, 140, 1667, + 792, 468, 794, 404, 471, 71, 3426, 430, 468, 432, + 152, 471, 3979, 1681, 3981, 157, 468, 377, 467, 471, + 162, 2571, 467, 3575, 319, 1693, 168, 3451, 185, 171, + 468, 5191, 174, 471, 145, 0, 467, 1705, 145, 2589, + 469, 343, 468, 5100, 467, 471, 468, 2597, 266, 471, + 468, 3546, 22, 471, 24, 185, 3992, 417, 28, 319, + 202, 266, 2768, 145, 34, 35, 36, 145, 38, 185, + 430, 41, 42, 3306, 44, 377, 46, 1745, 1746, 266, + 222, 2807, 2745, 2746, 2747, 468, 4022, 468, 471, 2766, + 471, 2768, 2781, 453, 2781, 2463, 4999, 2781, 2781, 468, + 157, 468, 471, 0, 471, 319, 468, 467, 468, 471, + 470, 3966, 145, 468, 180, 417, 471, 468, 220, 185, + 471, 263, 113, 468, 266, 90, 471, 411, 430, 266, + 272, 236, 3682, 468, 252, 253, 471, 393, 468, 467, + 2887, 471, 2889, 2890, 2891, 468, 468, 3699, 471, 471, + 2781, 453, 260, 468, 468, 221, 471, 471, 468, 468, + 468, 471, 471, 471, 468, 467, 423, 471, 340, 468, + 468, 2877, 471, 471, 468, 140, 157, 471, 212, 468, + 467, 65, 251, 35, 326, 434, 251, 152, 467, 266, + 157, 251, 157, 90, 3605, 43, 43, 162, 251, 398, + 251, 82, 268, 168, 4617, 281, 171, 423, 423, 174, + 79, 1879, 3926, 157, 301, 145, 145, 467, 3629, 189, + 190, 191, 192, 145, 194, 343, 420, 467, 198, 467, + 200, 294, 145, 203, 34, 377, 467, 202, 434, 145, + 210, 145, 212, 140, 471, 215, 145, 145, 157, 219, + 145, 221, 145, 145, 145, 152, 145, 222, 2964, 377, + 157, 403, 145, 145, 266, 162, 467, 377, 35, 4826, + 220, 168, 3126, 266, 171, 467, 5, 174, 8, 157, + 3134, 11, 157, 5, 467, 427, 467, 429, 430, 355, + 2658, 157, 467, 467, 467, 5, 467, 467, 263, 417, + 467, 266, 5, 467, 467, 202, 467, 272, 467, 3015, + 40, 467, 430, 467, 467, 5, 467, 47, 5, 467, + 467, 467, 467, 465, 2874, 222, 468, 469, 470, 277, + 431, 467, 467, 467, 2702, 453, 467, 204, 467, 467, + 467, 71, 35, 94, 220, 471, 471, 35, 157, 467, + 157, 2719, 263, 261, 350, 337, 388, 3104, 388, 388, + 422, 326, 388, 337, 388, 469, 263, 2735, 388, 266, + 388, 3077, 222, 337, 323, 272, 388, 456, 388, 83, + 337, 145, 342, 2751, 217, 451, 266, 266, 454, 455, + 456, 388, 458, 459, 460, 461, 462, 463, 388, 256, + 388, 410, 3108, 380, 266, 266, 333, 261, 138, 467, + 388, 467, 377, 2781, 3120, 388, 178, 83, 281, 471, + 3126, 145, 4238, 377, 185, 411, 411, 8, 3134, 326, + 11, 377, 2982, 388, 3140, 2803, 3142, 3848, 403, 2807, + 4853, 388, 105, 388, 53, 388, 388, 388, 53, 3126, + 180, 388, 242, 388, 388, 185, 270, 3134, 304, 40, + 8, 380, 427, 11, 429, 430, 47, 388, 388, 337, + 388, 388, 285, 285, 388, 42, 388, 42, 388, 4334, + 377, 3158, 3188, 388, 337, 388, 206, 471, 4343, 266, + 71, 221, 40, 3913, 206, 2163, 434, 206, 206, 47, + 465, 266, 388, 468, 469, 470, 403, 2175, 266, 266, + 206, 206, 206, 3219, 3220, 430, 467, 3750, 3751, 3844, + 3845, 3846, 35, 71, 4575, 3272, 398, 145, 24, 4517, + 427, 266, 429, 430, 145, 251, 111, 411, 268, 145, + 430, 145, 145, 266, 228, 3095, 261, 2215, 35, 422, + 251, 251, 251, 35, 212, 157, 339, 138, 34, 386, + 467, 386, 3239, 145, 1674, 467, 388, 1677, 465, 3422, + 388, 468, 469, 470, 145, 411, 145, 465, 465, 3210, + 388, 411, 467, 388, 145, 145, 260, 388, 255, 162, + 138, 426, 242, 242, 564, 11, 4017, 467, 386, 180, + 570, 3232, 572, 467, 185, 575, 471, 577, 467, 579, + 388, 153, 1722, 1723, 171, 162, 586, 390, 202, 468, + 471, 591, 178, 593, 178, 355, 8, 472, 467, 11, + 600, 471, 180, 15, 16, 17, 353, 185, 210, 3316, + 221, 267, 471, 411, 35, 274, 53, 468, 337, 256, + 3291, 467, 411, 35, 624, 210, 256, 210, 236, 629, + 388, 388, 388, 467, 634, 340, 157, 423, 638, 212, + 256, 266, 393, 221, 147, 43, 359, 251, 4089, 147, + 220, 220, 220, 388, 264, 333, 1796, 268, 658, 380, + 3396, 471, 319, 179, 3420, 347, 266, 307, 266, 35, + 206, 212, 388, 388, 411, 411, 303, 188, 456, 456, + 145, 261, 264, 3439, 157, 35, 378, 159, 3268, 304, + 268, 451, 467, 347, 261, 423, 2394, 145, 458, 459, + 460, 461, 462, 463, 3284, 467, 145, 145, 261, 709, + 35, 4009, 712, 713, 714, 8, 251, 251, 11, 430, + 266, 3605, 15, 16, 17, 725, 266, 727, 212, 3309, + 157, 176, 4617, 176, 35, 3428, 3429, 3430, 3431, 32, + 450, 468, 450, 465, 355, 3629, 240, 747, 748, 341, + 750, 751, 212, 347, 157, 755, 468, 4642, 266, 468, + 251, 468, 3539, 3540, 3541, 3542, 468, 185, 185, 769, + 185, 471, 471, 773, 434, 5218, 5219, 355, 23, 779, + 471, 169, 388, 467, 162, 239, 430, 266, 471, 53, + 790, 260, 8, 212, 206, 11, 377, 393, 468, 15, + 16, 17, 802, 4253, 423, 468, 468, 8, 4163, 4164, + 11, 4166, 3210, 162, 467, 4078, 32, 468, 468, 468, + 277, 468, 468, 286, 450, 468, 471, 162, 388, 4221, + 468, 452, 276, 409, 3232, 230, 266, 468, 467, 40, + 451, 53, 417, 467, 844, 467, 47, 458, 459, 460, + 461, 462, 463, 427, 467, 266, 268, 8, 467, 269, + 11, 468, 862, 427, 15, 16, 17, 867, 868, 3605, + 71, 188, 266, 451, 467, 5083, 145, 456, 467, 388, + 458, 459, 460, 461, 462, 463, 434, 388, 4401, 2587, + 196, 4154, 388, 3629, 256, 4408, 896, 897, 3605, 388, + 3636, 145, 270, 3639, 251, 3641, 2604, 3635, 342, 145, + 4740, 4929, 145, 206, 342, 220, 342, 188, 147, 2617, + 388, 411, 3629, 923, 456, 222, 471, 287, 3635, 287, + 408, 157, 388, 388, 934, 388, 388, 138, 938, 4521, + 3717, 232, 232, 232, 337, 3681, 3723, 388, 388, 251, + 337, 337, 388, 3689, 337, 388, 956, 3693, 3694, 388, + 3696, 350, 266, 388, 4731, 3701, 4733, 145, 4853, 3549, + 42, 206, 388, 173, 388, 268, 206, 3, 978, 180, + 388, 388, 206, 4246, 185, 985, 986, 206, 468, 471, + 206, 468, 398, 3, 157, 43, 104, 321, 3705, 3706, + 471, 468, 157, 467, 264, 5023, 468, 1007, 1008, 1009, + 266, 1011, 35, 1013, 145, 388, 145, 157, 468, 2159, + 221, 173, 3420, 145, 466, 337, 2166, 411, 337, 411, + 4471, 466, 269, 347, 337, 206, 143, 143, 3436, 471, + 206, 3439, 454, 455, 456, 206, 458, 459, 460, 461, + 462, 463, 268, 206, 136, 206, 206, 206, 162, 8, + 465, 11, 11, 277, 3800, 157, 422, 268, 468, 471, + 272, 468, 468, 162, 427, 162, 468, 467, 453, 267, + 3660, 171, 1082, 3663, 1084, 1085, 471, 4546, 468, 416, + 467, 40, 471, 4939, 4940, 467, 466, 468, 47, 468, + 467, 4931, 81, 468, 326, 157, 398, 35, 388, 212, + 196, 411, 1112, 411, 53, 380, 145, 268, 388, 467, + 166, 398, 71, 468, 4637, 4009, 388, 342, 3864, 3865, + 3866, 388, 3868, 3869, 3870, 3796, 4434, 5022, 337, 388, + 388, 3848, 1142, 1143, 337, 468, 468, 1147, 467, 1149, + 319, 430, 53, 380, 355, 157, 417, 147, 71, 145, + 104, 454, 455, 456, 398, 458, 459, 460, 461, 462, + 463, 206, 4622, 468, 206, 1175, 206, 210, 1178, 206, + 3760, 1181, 467, 2881, 4482, 302, 191, 434, 266, 138, + 388, 467, 35, 471, 1194, 314, 468, 471, 77, 3779, + 2898, 285, 398, 380, 471, 471, 388, 168, 467, 4472, + 468, 347, 467, 4663, 466, 104, 162, 206, 468, 162, + 53, 467, 428, 428, 1224, 5243, 468, 312, 468, 5075, + 471, 180, 277, 209, 275, 467, 185, 468, 454, 455, + 456, 209, 458, 459, 460, 461, 462, 463, 468, 467, + 451, 5136, 1252, 1253, 1254, 379, 1256, 458, 459, 460, + 461, 462, 463, 467, 273, 53, 174, 261, 4004, 456, + 4006, 3851, 221, 468, 5292, 398, 1276, 468, 468, 388, + 162, 71, 430, 190, 179, 256, 256, 53, 456, 5307, + 4645, 471, 380, 388, 2992, 471, 2994, 65, 4040, 4740, + 145, 4656, 206, 454, 455, 456, 164, 458, 459, 460, + 461, 462, 463, 388, 1314, 388, 162, 1317, 111, 268, + 467, 35, 185, 261, 467, 347, 35, 251, 411, 159, + 411, 157, 347, 5218, 5219, 261, 430, 5167, 53, 430, + 35, 4951, 162, 266, 157, 1345, 467, 269, 204, 1349, + 1350, 193, 162, 467, 467, 312, 416, 363, 4019, 4020, + 1360, 1361, 1362, 468, 1364, 4093, 468, 285, 467, 3767, + 467, 209, 429, 83, 467, 126, 266, 3075, 313, 35, + 4735, 388, 4089, 145, 388, 157, 4093, 1387, 4165, 468, + 118, 468, 35, 467, 256, 178, 467, 4847, 3796, 467, + 467, 467, 233, 4180, 188, 3103, 355, 468, 467, 302, + 347, 4118, 4119, 467, 4864, 145, 4123, 4124, 104, 4869, + 131, 4871, 1422, 426, 35, 468, 270, 1427, 334, 334, + 361, 398, 361, 4740, 468, 53, 53, 35, 74, 467, + 471, 1441, 1442, 467, 416, 178, 467, 4183, 4184, 468, + 1450, 467, 411, 1453, 468, 467, 157, 4193, 249, 4195, + 4196, 2601, 266, 4199, 380, 380, 467, 2607, 380, 468, + 5, 151, 434, 144, 467, 467, 65, 269, 1478, 65, + 1480, 126, 430, 430, 312, 415, 467, 467, 471, 4266, + 35, 416, 162, 1493, 427, 350, 1496, 380, 310, 256, + 4892, 131, 451, 190, 467, 3203, 4861, 266, 266, 458, + 459, 460, 461, 462, 463, 347, 35, 35, 164, 8, + 302, 269, 11, 4259, 269, 467, 15, 16, 17, 164, + 471, 1531, 468, 467, 388, 4115, 3234, 53, 333, 116, + 467, 409, 1542, 1543, 1544, 1545, 1546, 4127, 468, 468, + 4434, 40, 5, 347, 333, 273, 320, 4293, 47, 21, + 1560, 471, 471, 4482, 467, 467, 32, 256, 467, 144, + 388, 1571, 162, 1573, 74, 4481, 3974, 302, 430, 430, + 3978, 361, 71, 361, 164, 1585, 1586, 4471, 4324, 467, + 164, 4889, 789, 2421, 2318, 1558, 2768, 2250, 4482, 853, + 2934, 3604, 3578, 1309, 4265, 5234, 1606, 5065, 2343, 3124, + 3701, 2751, 4753, 4929, 5167, 3748, 4575, 4523, 4211, 4545, + 2854, 4019, 4020, 2554, 4931, 1625, 5048, 4433, 5156, 4959, + 8, 4958, 3330, 11, 5191, 2858, 3797, 15, 16, 17, + 5085, 1641, 1642, 1643, 1644, 3781, 4898, 3739, 2406, 2406, + 2959, 3599, 3175, 3351, 1654, 893, 3764, 4552, 4435, 4436, + 4437, 1661, 40, 2803, 1664, 3187, 5307, 2400, 4561, 47, + 4247, 5169, 5292, 3128, 1674, 4538, 3133, 1677, 3376, 5098, + 4484, 4715, 1682, 4907, 4487, 27, 3851, 1687, 1149, 1620, + 4684, 180, 2102, 71, 3804, 1165, 185, 2832, 966, 4826, + 1733, 652, 1818, 620, 1674, 1818, 3078, 3628, 4413, 1819, + 3179, 3645, 3410, 5124, 5283, 768, 2042, 206, 207, 1394, + 2043, 1764, 1722, 1723, 3784, 4416, 4021, 5040, 3498, 1286, + 2782, 2082, 221, 1733, 1734, 4471, 1353, 2793, 4318, 3463, + 2788, 5032, 4873, 4005, 2081, 3963, 1334, 3439, 3980, 4653, + 3436, 4850, 4849, 1753, 1754, 3436, 3499, 5287, 5140, 5222, + 1760, 5022, 1762, 4620, 4471, 254, 3389, 4410, 1698, 5035, + 5015, 5036, 2719, 1912, 2771, 2629, 4512, 2717, -1, 268, + -1, 1352, 1915, -1, -1, -1, -1, 1787, -1, 1355, + -1, -1, -1, -1, 1794, 1360, 1796, -1, -1, -1, + 1800, 1801, 180, 1803, -1, -1, -1, 185, -1, -1, + 1810, -1, 4589, -1, -1, -1, -1, 1817, -1, -1, + -1, -1, 1822, 1823, -1, -1, 1826, -1, 206, 207, + 1830, -1, 1832, -1, -1, -1, -1, 1837, 1838, -1, + -1, -1, -1, 221, 1844, 1845, 1846, 4427, -1, 4429, + 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, -1, 1859, + 5167, 1861, 1862, -1, -1, 1865, 355, 4265, -1, -1, + -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, + 1880, 1881, 1882, 1883, -1, -1, -1, 1887, 1888, 4550, + 268, -1, 1892, -1, -1, 1895, -1, -1, 1898, 1899, + 1900, 1901, 1902, 1903, 1904, 1905, 1906, 4663, 1908, -1, + -1, -1, -1, -1, 1914, 1915, -1, 1917, 35, -1, + -1, -1, -1, -1, 1924, -1, -1, 4588, -1, -1, + -1, -1, -1, -1, -1, -1, 8, 54, -1, 11, + -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4732, -1, 4734, -1, -1, + -1, -1, 451, -1, -1, 454, 455, 456, 40, 458, + 459, 460, 461, 462, 463, 47, -1, 355, 89, -1, + -1, -1, -1, -1, -1, -1, 103, 104, 4386, -1, + -1, 4727, 4728, 4391, 111, -1, 4394, -1, -1, 71, + -1, -1, -1, -1, 4740, 4889, -1, -1, 4744, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4754, -1, + 4727, 4728, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4740, -1, -1, -1, 148, -1, -1, + -1, 2041, -1, 2043, -1, 2045, -1, -1, -1, 166, + -1, -1, -1, -1, -1, -1, 3754, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, + 187, 182, -1, 451, -1, -1, 454, 455, 456, 2079, + 458, 459, 460, 461, 462, 463, 2086, -1, 2088, -1, + -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 217, -1, 180, -1, + 4887, -1, -1, 185, -1, -1, -1, -1, 235, 2119, + -1, 238, -1, -1, -1, -1, -1, -1, 2128, -1, + 2130, -1, 249, -1, 251, -1, -1, -1, -1, -1, + 251, 4802, 73, -1, -1, -1, -1, 2147, 5054, 221, + -1, -1, 4550, -1, -1, -1, -1, -1, -1, 2159, + -1, 2161, 2162, 280, -1, -1, 2166, -1, 2168, -1, + 2170, 282, 2172, -1, 105, -1, 2176, 288, -1, 2179, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4588, -1, -1, 4970, -1, 4931, 268, 128, -1, 4935, + 2200, 4937, -1, -1, -1, 4941, 4942, 324, 139, -1, + 2210, -1, 323, -1, 325, -1, 327, 4878, 2218, 5125, + 5126, -1, -1, 334, -1, 2225, -1, 344, 159, -1, + -1, 342, -1, 164, 2234, -1, -1, -1, 3936, 350, + -1, -1, -1, -1, -1, -1, -1, 364, -1, 366, + -1, 362, 369, -1, 4652, 2255, -1, -1, -1, 370, + 2260, 2261, -1, -1, -1, 4663, -1, -1, -1, -1, + 2270, 2271, -1, -1, 2274, -1, 2276, 2277, -1, -1, + -1, -1, 213, 355, -1, -1, -1, -1, -1, -1, + -1, 5068, -1, -1, -1, 2295, 3436, -1, 2298, 3439, + -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 425, -1, -1, -1, -1, 2319, + 2320, -1, -1, -1, -1, -1, -1, -1, -1, 5065, + -1, 5067, -1, -1, 2334, -1, 2336, 2337, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 467, -1, -1, -1, -1, -1, -1, -1, 5065, -1, + 5067, -1, -1, 4061, -1, -1, 2366, -1, -1, -1, + 301, -1, -1, 304, 2374, 2375, -1, -1, 3518, 451, + -1, 2381, -1, 5160, -1, -1, 458, 459, 460, 461, + 462, 463, -1, 2393, 4792, 2395, -1, -1, -1, 330, + -1, 4099, 5308, 5309, 4802, 5124, 337, 5124, -1, 2409, + 5124, 5124, 2412, 344, 2414, 5192, 5193, 2417, -1, -1, + -1, 2421, 4120, -1, 2424, -1, -1, -1, -1, -1, + -1, 5167, -1, -1, -1, -1, 2436, 2437, 5099, -1, + -1, 372, 5198, -1, -1, -1, 377, -1, -1, 380, + -1, -1, -1, -1, 2454, -1, -1, -1, -1, -1, + -1, 5041, -1, 5124, 2464, -1, 2466, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5198, + 4878, 5198, -1, -1, 5198, 5198, -1, 4185, -1, 2489, + 8, -1, 423, 11, -1, -1, -1, -1, 5234, -1, + -1, -1, -1, 5280, -1, -1, -1, 5243, -1, -1, + -1, -1, -1, -1, -1, -1, 2516, -1, 2518, 2519, + 2520, 2521, 40, 8, -1, -1, 11, 5234, -1, 47, + 15, 16, 17, -1, -1, -1, 5243, 5198, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, + -1, -1, -1, 71, 2554, 40, 5292, -1, -1, -1, + -1, -1, 47, -1, 5283, -1, 5283, -1, -1, 5283, + 5283, 5307, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5292, 71, -1, -1, -1, + -1, 2591, -1, -1, -1, -1, -1, -1, 4296, -1, + 5307, 2601, -1, -1, -1, -1, -1, 2607, 8, -1, + -1, 11, -1, -1, -1, 15, 16, 17, -1, -1, + 2620, -1, 5283, -1, -1, -1, -1, 3767, 2628, -1, + -1, -1, 32, 2633, -1, -1, -1, -1, -1, -1, + 4338, -1, 8, -1, -1, 11, -1, -1, -1, 15, + 16, 17, -1, -1, -1, -1, 2656, 2657, 2658, -1, + -1, 2661, 180, -1, -1, -1, 32, 185, -1, 2669, + 2670, 2671, 2672, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2682, -1, -1, 2685, -1, 2687, -1, -1, + -1, -1, -1, -1, -1, 180, -1, -1, 2698, 2699, + 185, 5099, 2702, 221, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2714, -1, 2716, -1, 2718, -1, + 2720, 206, 207, -1, 8, -1, 5124, 11, -1, -1, + -1, 15, 16, 17, -1, -1, 221, -1, -1, -1, + 2740, -1, -1, -1, 2744, -1, -1, -1, -1, -1, + 268, 2751, -1, 2753, 2754, 2755, -1, -1, -1, -1, + -1, -1, -1, 1029, -1, -1, -1, -1, -1, 254, + -1, 2771, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 8, 2782, 268, 11, -1, 271, 2787, 15, 16, + 17, 1057, -1, 2793, -1, -1, -1, -1, -1, -1, + 5198, -1, -1, 2803, -1, 32, 206, 2807, -1, -1, + 2810, 1077, 2812, 40, -1, -1, -1, -1, -1, -1, + 47, 1087, -1, -1, -1, -1, -1, 1093, -1, -1, + -1, -1, -1, 1099, 3974, -1, -1, 355, 3978, 1105, + 206, -1, 1108, -1, 71, -1, -1, -1, -1, -1, + -1, -1, -1, 2853, -1, 2855, -1, -1, -1, -1, + 2860, -1, -1, -1, -1, -1, 3, -1, 268, -1, + 355, 8, -1, -1, 11, -1, -1, -1, 15, 16, + 17, -1, -1, -1, -1, 5283, -1, 2887, -1, 2889, + 2890, 2891, -1, -1, -1, 32, -1, -1, 35, -1, + -1, -1, 268, 40, -1, -1, -1, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4618, -1, 206, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 451, 71, -1, -1, -1, -1, -1, + 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, + -1, -1, -1, 180, -1, -1, -1, -1, 185, -1, + 4658, -1, -1, -1, -1, -1, 451, -1, -1, 454, + 455, 456, -1, 458, 459, 460, 461, 462, 463, 206, + 207, -1, -1, -1, 268, -1, 471, -1, -1, -1, + -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, + 3000, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4712, -1, -1, -1, -1, 4717, + 4718, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 268, -1, 180, 271, -1, -1, -1, 185, -1, + -1, -1, -1, -1, 454, 455, 456, -1, 458, 459, + 460, 461, 462, 463, -1, -1, -1, -1, -1, 206, + 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4223, 221, -1, -1, -1, 454, 455, + 456, -1, 458, 459, 460, 461, 462, 463, -1, -1, + -1, -1, -1, -1, 3104, -1, -1, -1, -1, 3109, + 3110, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 355, 4827, + -1, 268, -1, -1, 271, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3146, 3147, 3148, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3163, -1, -1, -1, -1, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, -1, -1, -1, -1, 3185, 3186, -1, -1, -1, + -1, -1, -1, -1, -1, 3195, 3196, 3197, -1, -1, + -1, 3201, 35, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3214, -1, -1, -1, 355, -1, + -1, -1, 55, -1, 451, -1, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, -1, -1, 4379, + -1, -1, -1, -1, 471, -1, 4386, -1, -1, -1, + -1, 4391, -1, -1, 4394, 4395, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3272, -1, -1, -1, -1, -1, -1, -1, + 4420, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3291, -1, 4433, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3307, -1, -1, + -1, -1, -1, -1, 451, 148, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, 3327, 5026, -1, + -1, -1, -1, -1, 20, -1, 3336, -1, -1, 25, + -1, 4481, 3342, -1, 3344, -1, -1, 3347, -1, 182, + -1, -1, 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, + 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, -1, -1, + -1, 3371, 3372, 59, -1, -1, -1, -1, -1, 212, + -1, 3381, -1, 4523, 217, 3385, 72, -1, -1, 3389, + -1, -1, -1, -1, -1, -1, -1, 3397, -1, -1, + 3400, 87, 3402, -1, -1, -1, -1, -1, -1, -1, + -1, 3411, -1, -1, 3414, 3415, -1, -1, 251, 3419, + 3420, -1, -1, -1, 3424, -1, 3426, -1, -1, -1, + -1, -1, -1, 3433, 3434, 3435, 3436, -1, -1, 3439, + 3440, -1, 128, -1, 3444, 3445, 3446, -1, -1, 282, + -1, 4591, 3452, 139, -1, 288, -1, -1, 3458, 3459, + 3460, -1, 1728, -1, -1, -1, -1, -1, -1, -1, + 1736, -1, -1, 159, -1, -1, -1, -1, 164, -1, + -1, -1, -1, -1, 3484, -1, 1752, 22, -1, -1, + 323, -1, -1, 28, 327, -1, -1, -1, 3498, -1, + 3500, 334, -1, -1, -1, -1, -1, -1, -1, 342, + -1, -1, 4652, -1, -1, -1, -1, 350, 3518, 3519, + 3520, -1, 3522, -1, -1, -1, -1, -1, -1, 362, + -1, -1, -1, -1, 69, -1, -1, 370, -1, 3539, + 3540, 3541, 3542, -1, -1, -1, -1, -1, 234, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 391, -1, + -1, -1, -1, -1, -1, -1, -1, 7, 3568, -1, + -1, -1, -1, 13, 14, -1, -1, -1, -1, 19, + -1, 21, 268, -1, 119, -1, 3586, 27, 123, -1, + 30, -1, 425, -1, -1, 130, 429, 430, 133, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, + 50, -1, -1, 55, -1, 301, -1, -1, -1, -1, + -1, -1, -1, 158, -1, -1, -1, -1, -1, 4769, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, + -1, 337, 4792, -1, -1, 190, 8, -1, 344, 11, + -1, 347, -1, 15, 16, 17, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 8, 119, 3678, 11, + 32, -1, -1, 15, 16, 17, -1, -1, 40, -1, + -1, 377, -1, -1, -1, 47, -1, -1, 384, -1, + 32, -1, -1, -1, -1, 391, 148, -1, 40, -1, + 4850, -1, 398, -1, 249, 47, 251, 3717, -1, 71, + -1, 3721, -1, 3723, -1, 3725, 261, -1, -1, -1, + -1, -1, 3732, -1, -1, 270, -1, 423, 3738, 71, + 182, 4881, -1, -1, -1, -1, 281, -1, 3748, -1, + -1, -1, -1, -1, -1, -1, 196, -1, -1, -1, + -1, -1, -1, 3763, 204, -1, 206, 3767, 208, 209, + -1, 211, -1, 213, 2040, 217, 216, 3777, 218, -1, + -1, -1, -1, -1, 319, -1, 3786, 322, 323, -1, + -1, -1, -1, -1, -1, -1, -1, 3797, -1, -1, + -1, 3801, -1, -1, -1, 3805, 3806, -1, -1, 251, + -1, -1, -1, -1, -1, 350, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, + -1, -1, -1, 185, 3834, -1, 3836, -1, -1, 281, + 282, -1, -1, 3843, -1, -1, 288, -1, 180, 4989, + -1, -1, -1, 185, 206, 207, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, + -1, -1, 3872, -1, 206, 207, -1, 319, -1, 414, + -1, 323, -1, 3883, -1, 327, -1, -1, -1, 221, + -1, -1, 334, -1, -1, -1, -1, -1, 35, -1, + 342, -1, 254, -1, -1, -1, -1, -1, 350, -1, + -1, -1, -1, 3913, 5054, -1, 268, -1, 55, 271, + 362, -1, 254, 3923, 3924, -1, -1, -1, 370, -1, + 3930, 3931, -1, -1, -1, 3935, 268, -1, -1, 271, + 3940, -1, -1, 3943, 3944, -1, -1, -1, 3948, 3949, + -1, -1, 89, -1, 3954, 3955, 3956, 3957, 3958, -1, + -1, -1, 3962, 3963, 3964, 5105, 3966, 3967, -1, -1, + 3970, -1, -1, -1, 3974, -1, -1, -1, 3978, 5119, + -1, -1, -1, 425, 3984, 5125, 5126, -1, -1, -1, + -1, 3991, -1, -1, -1, -1, 3996, -1, -1, -1, + -1, -1, 4002, 355, -1, 8, -1, -1, 11, 4009, + -1, 148, 15, 16, 17, -1, -1, 4017, -1, -1, + -1, 4021, -1, 355, -1, -1, 4026, -1, -1, 32, + -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, + 4040, -1, -1, 4043, 47, 182, -1, -1, -1, -1, + -1, 5191, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4063, 4064, -1, -1, -1, 71, -1, + -1, -1, -1, -1, -1, 212, -1, -1, -1, -1, + 217, 4081, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4094, -1, -1, -1, -1, 451, + -1, -1, 454, 455, 456, -1, 458, 459, 460, 461, + 462, 463, -1, -1, 251, -1, 468, -1, -1, 451, + -1, -1, 454, 455, 456, -1, 458, 459, 460, 461, + 462, 463, -1, 573, -1, -1, 468, -1, -1, -1, + -1, 581, -1, 4143, -1, 282, -1, -1, 588, 589, + 5290, 288, 592, -1, 594, 595, -1, -1, -1, 599, + -1, -1, -1, -1, -1, 4165, -1, -1, 5308, 5309, + 610, -1, -1, -1, -1, -1, -1, 180, -1, -1, + 4180, -1, 185, -1, -1, 625, 323, -1, -1, -1, + 327, -1, -1, -1, -1, -1, -1, 334, -1, -1, + -1, -1, -1, 206, 207, 342, -1, -1, 648, 4209, + 650, -1, -1, 350, -1, -1, -1, -1, 221, 2485, + 660, -1, -1, 4223, -1, 362, 2492, -1, -1, 4229, + -1, -1, -1, 370, -1, -1, -1, -1, 4238, -1, + -1, -1, -1, -1, -1, -1, 2512, -1, -1, -1, + -1, 254, 692, 4253, 391, -1, 2522, -1, -1, -1, + 2526, -1, -1, 2529, -1, 268, 4266, -1, 4268, 2535, + -1, 2537, -1, -1, 2540, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 726, -1, 425, -1, + -1, -1, 429, 8, -1, -1, 11, -1, 4298, -1, + 15, 16, 17, 630, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 32, 22, -1, + -1, -1, -1, -1, 28, 40, -1, 654, -1, -1, + -1, -1, 47, 2599, 4334, -1, -1, 41, -1, -1, + 780, -1, -1, 4343, -1, -1, -1, -1, -1, -1, + -1, -1, 355, -1, -1, -1, 71, -1, -1, -1, + 4360, 4361, -1, -1, 4364, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4379, + -1, -1, 4382, -1, -1, -1, 4386, -1, -1, -1, + -1, 4391, -1, -1, 4394, 4395, -1, 4397, -1, 4399, + -1, 841, 4402, 4403, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 121, -1, 123, + 4420, -1, 4422, -1, -1, -1, 130, -1, -1, 133, + -1, -1, -1, 4433, 4434, 4435, 4436, 4437, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, + -1, 454, 455, 456, 158, 458, 459, 460, 461, 462, + 463, -1, -1, -1, -1, 180, -1, -1, -1, -1, + 185, 911, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4481, 4482, -1, -1, -1, 190, 927, -1, -1, + -1, 206, 207, -1, -1, -1, -1, -1, -1, 939, + -1, -1, 942, -1, -1, -1, 221, -1, -1, -1, + -1, -1, 952, -1, -1, -1, -1, 957, -1, -1, + -1, -1, -1, 4523, -1, 965, 4526, -1, -1, -1, + -1, 971, -1, -1, 974, -1, -1, -1, 4538, 254, + -1, 4541, -1, -1, -1, 249, 4546, 251, 4548, -1, + -1, -1, -1, 268, -1, 4555, 271, 261, -1, -1, + -1, -1, -1, -1, -1, -1, 270, -1, -1, -1, + -1, 4571, -1, -1, 1014, 4575, -1, 281, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4589, + 4590, 4591, -1, -1, -1, -1, -1, 2863, -1, -1, + -1, -1, -1, 930, -1, 8, -1, -1, 11, -1, + -1, -1, 15, 16, 17, 319, -1, 4617, 322, 323, + 4620, -1, 4622, -1, -1, -1, 953, -1, -1, 32, + -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, + 355, 968, 4642, -1, 47, -1, 350, -1, 4648, -1, + -1, -1, 4652, -1, -1, -1, 4656, -1, -1, -1, + -1, -1, -1, 4663, -1, -1, -1, -1, 71, -1, + -1, -1, 4672, -1, -1, -1, -1, 2943, -1, 2945, + -1, -1, -1, -1, -1, 1125, -1, 1127, -1, 1129, + -1, 1131, -1, 1133, 1134, 1135, 4696, -1, -1, -1, + 1140, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 414, 1151, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4722, -1, -1, 1052, -1, -1, -1, -1, + -1, 4731, 4732, 4733, 4734, -1, 451, -1, -1, 454, + 455, 456, -1, 458, 459, 460, 461, 462, 463, -1, + -1, -1, -1, 468, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4769, + -1, -1, -1, -1, -1, -1, -1, 180, -1, -1, + -1, -1, 185, -1, -1, -1, -1, -1, -1, 4789, + -1, -1, 4792, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 200, 206, 207, -1, -1, -1, 3074, -1, + -1, -1, 210, -1, 3080, -1, -1, -1, 221, -1, + -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1162, -1, 22, -1, -1, + -1, -1, -1, 28, -1, -1, -1, 4847, -1, -1, + 4850, 254, -1, 4853, -1, -1, 41, 4857, -1, -1, + -1, -1, -1, -1, 4864, 268, -1, -1, 271, 4869, + -1, 4871, -1, 4873, -1, -1, -1, -1, -1, -1, + -1, 4881, -1, -1, 69, -1, -1, 4887, -1, 4889, + -1, -1, -1, -1, 1334, -1, -1, -1, -1, 4899, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, + 16, 17, -1, -1, -1, -1, 121, -1, 123, 4939, + 4940, -1, -1, -1, -1, 130, 32, -1, 133, -1, + -1, -1, 355, -1, 40, -1, -1, -1, -1, -1, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + 4970, 1411, -1, 158, -1, -1, 1303, 4977, -1, -1, + -1, 4981, -1, -1, -1, 71, -1, -1, -1, 4989, + -1, -1, 3258, -1, 3260, -1, 3262, -1, -1, -1, + -1, -1, -1, 3269, -1, 190, -1, -1, -1, -1, + -1, -1, -1, -1, 5014, 5015, -1, -1, -1, 5019, + -1, -1, 5022, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5032, -1, -1, 5035, -1, -1, -1, 1479, + 5040, 1368, 3308, -1, -1, -1, -1, -1, 451, -1, + -1, 454, 455, 456, 5054, 458, 459, 460, 461, 462, + 463, -1, -1, -1, 249, 468, 251, -1, 5068, -1, + -1, -1, -1, -1, -1, 5075, 261, -1, -1, -1, + -1, -1, -1, -1, -1, 270, -1, -1, -1, -1, + -1, -1, -1, -1, 180, -1, 281, -1, -1, 185, + 5100, -1, -1, 22, -1, 5105, -1, -1, 1435, 28, + 5110, -1, -1, -1, -1, -1, -1, -1, -1, 5119, + 206, 207, -1, -1, -1, 5125, 5126, 5127, -1, -1, + -1, -1, -1, -1, 319, 221, 5136, 322, 323, -1, + 5140, -1, -1, -1, -1, -1, -1, 1474, -1, -1, + 69, -1, -1, 5153, -1, -1, -1, -1, -1, -1, + 5160, -1, -1, -1, -1, 350, 564, -1, 254, -1, + 1497, -1, 570, -1, -1, -1, 1616, -1, -1, -1, + -1, 8, 268, -1, 11, 271, -1, -1, 15, 16, + 17, 5191, 5192, 5193, -1, -1, -1, -1, -1, -1, + 119, -1, -1, -1, 123, 32, -1, -1, -1, -1, + -1, 130, -1, 40, 133, -1, -1, -1, 5218, 5219, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 414, + -1, -1, -1, -1, -1, -1, -1, -1, 8, 158, + -1, 11, -1, -1, 71, 15, 16, 17, -1, 1576, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 5260, -1, 32, -1, 1591, -1, 5266, -1, -1, 355, + 40, 190, -1, 1600, -1, -1, -1, 47, -1, -1, + 5280, -1, -1, -1, -1, 1612, -1, 5287, -1, -1, + 5290, -1, -1, -1, -1, -1, -1, -1, 1738, -1, + 1740, 71, -1, -1, -1, -1, -1, -1, 5308, 5309, + -1, -1, -1, -1, -1, -1, -1, 1757, -1, 1759, + -1, -1, -1, -1, -1, -1, -1, 725, -1, -1, + 249, -1, 251, 1773, -1, 1775, -1, 1777, -1, 1779, + 1667, 1781, 261, -1, -1, 1785, -1, -1, -1, -1, + -1, 270, 750, 180, 1681, -1, -1, -1, 185, -1, + -1, -1, 281, -1, -1, 451, 1693, -1, 454, 455, + 456, 769, 458, 459, 460, 461, 462, 463, 1705, 206, + 207, -1, 468, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 790, -1, 221, -1, -1, -1, -1, -1, + 319, -1, -1, 322, 323, -1, -1, -1, -1, -1, + 180, -1, -1, -1, -1, 185, -1, -1, 1745, 1746, + -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, 350, -1, -1, -1, -1, 206, 207, -1, -1, + -1, 268, -1, -1, 271, -1, -1, -1, -1, -1, + -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 862, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 254, -1, 22, -1, -1, -1, + -1, -1, 28, -1, -1, 414, -1, -1, 268, -1, + -1, 271, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 355, -1, + -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1879, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, + -1, -1, 3838, -1, -1, -1, 3842, -1, -1, -1, + 978, -1, -1, -1, 32, 355, -1, 123, -1, -1, + -1, -1, 40, -1, 130, -1, -1, 133, -1, 47, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1007, + 1008, 1009, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 158, 71, 451, -1, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, + -1, 468, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2091, 2092, -1, 190, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2110, 2111, -1, -1, -1, 2115, 2116, -1, -1, -1, + 2120, 451, -1, -1, 454, 455, 456, -1, 458, 459, + 460, 461, 462, 463, 2134, -1, -1, -1, 468, -1, + -1, 2141, -1, -1, -1, 2145, 2146, -1, -1, 2149, + 2150, -1, -1, 249, -1, 251, 2156, -1, -1, -1, + -1, -1, -1, -1, -1, 261, -1, -1, -1, 2169, + -1, 2171, 180, -1, 270, -1, -1, 185, -1, -1, + -1, -1, -1, -1, -1, 281, -1, -1, -1, 1147, + 2190, -1, -1, -1, -1, 2195, -1, -1, 206, 207, + -1, -1, -1, -1, -1, -1, -1, -1, 2208, -1, + 2097, -1, -1, 221, 2101, 2102, -1, 2217, -1, 2219, + 1178, -1, 2222, 2223, 2224, -1, 322, 323, -1, 2229, + 2230, -1, -1, 4059, -1, -1, -1, -1, -1, 2239, + -1, -1, -1, -1, 2244, -1, 254, -1, -1, 2249, + -1, -1, 35, -1, 350, -1, -1, -1, -1, -1, + 268, -1, -1, 271, -1, 2265, -1, -1, -1, -1, + -1, -1, 55, 2273, 4100, 4101, 2163, -1, -1, -1, + -1, -1, -1, -1, 2284, -1, -1, -1, 2175, -1, + -1, -1, -1, -1, -1, -1, 2296, -1, -1, 2299, + -1, -1, -1, -1, 2304, -1, 89, -1, -1, 2309, + 2310, -1, -1, -1, 2314, -1, -1, 2317, 414, -1, + -1, 2321, 2322, 2323, 2324, -1, 2326, -1, 2215, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2339, + 2340, -1, 2342, -1, -1, -1, -1, 355, -1, -1, + -1, -1, 2352, 2353, -1, -1, 1314, -1, -1, 8, + 4186, 4187, 11, -1, -1, 148, 15, 16, 17, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, 32, 15, 16, 17, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, 182, + -1, 32, -1, 1361, 2404, -1, -1, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + -1, -1, 71, -1, -1, -1, -1, -1, -1, 212, + -1, -1, 2432, -1, 217, -1, -1, -1, -1, -1, + 71, -1, -1, 451, -1, -1, 454, 455, 456, -1, + 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, + 468, -1, -1, -1, -1, -1, -1, -1, 251, -1, + -1, -1, -1, -1, -1, 4301, -1, 4303, 4304, 8, + -1, -1, 11, 1441, -1, -1, 15, 16, 17, -1, + -1, 4317, 1450, -1, -1, -1, -1, -1, -1, 282, + -1, -1, -1, 32, -1, 288, -1, 2394, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, + -1, 8, 1480, -1, 11, -1, -1, -1, 15, 16, + 17, 180, -1, -1, -1, 1493, 185, -1, 1496, -1, + 323, -1, 71, -1, 327, 32, -1, -1, -1, 180, + -1, 334, -1, 40, 185, -1, -1, 206, 207, 342, + 47, -1, -1, -1, -1, -1, -1, 350, -1, -1, + -1, -1, 221, -1, -1, 206, 207, -1, -1, 362, + -1, -1, -1, -1, 71, -1, -1, 370, 1546, 2476, + 221, -1, 2592, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1560, -1, -1, 254, -1, -1, 391, -1, + -1, -1, -1, -1, -1, 1573, -1, -1, -1, 268, + -1, 2621, 271, 254, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, + 271, -1, 425, -1, -1, -1, 429, -1, -1, -1, + -1, 180, -1, -1, -1, -1, 185, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1625, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 206, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 221, 180, -1, -1, 1654, -1, 185, -1, + 2587, -1, -1, 1661, -1, -1, 355, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2604, -1, 206, + 207, -1, -1, -1, 355, 254, -1, -1, -1, -1, + 2617, -1, -1, -1, 221, -1, -1, -1, -1, 268, + -1, -1, 271, -1, -1, -1, -1, -1, -1, -1, + 22, -1, -1, -1, -1, -1, 28, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 268, -1, -1, 271, -1, -1, 4613, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 69, -1, -1, + -1, -1, 451, -1, 1762, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, + 451, -1, -1, 454, 455, 456, 355, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, + -1, -1, 1800, 1801, -1, -1, -1, -1, -1, -1, + -1, 123, -1, -1, -1, -1, -1, -1, 130, 1817, + 4686, 133, -1, -1, -1, -1, -1, -1, 355, -1, + -1, -1, -1, -1, -1, 2875, -1, -1, -1, 2879, + -1, -1, -1, -1, -1, 2885, 158, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2901, 2902, -1, -1, -1, 2906, -1, -1, -1, + 4736, 2911, 2912, 2913, -1, 2915, -1, -1, 190, -1, + -1, -1, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, 2822, 2936, -1, 2825, 468, + 2827, -1, -1, -1, -1, 2832, 2946, 2947, 2948, 2949, + -1, -1, -1, -1, -1, -1, 1914, -1, -1, -1, + -1, -1, -1, -1, 451, -1, 1924, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, 249, -1, 251, + -1, 468, -1, 2983, -1, -1, 2986, 2987, 2988, 261, + -1, -1, -1, -1, 2881, -1, -1, -1, 270, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, + -1, 2898, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + -1, -1, -1, -1, -1, 28, 2923, -1, -1, -1, + -1, -1, 35, -1, -1, -1, -1, 319, -1, -1, + 322, 323, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 69, -1, 350, -1, + -1, -1, -1, 2041, -1, 2043, -1, -1, 3088, -1, + -1, -1, 8, -1, -1, 11, 3096, -1, -1, 15, + 16, 17, -1, -1, -1, 2992, -1, 2994, -1, -1, + 103, -1, -1, -1, 3114, -1, 32, -1, -1, -1, + 36, 2079, -1, -1, 40, -1, -1, -1, -1, -1, + 123, 47, -1, -1, -1, -1, -1, 130, -1, -1, + 133, 3141, 414, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 71, 0, -1, -1, -1, + -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 28, -1, 30, 31, 3075, -1, + -1, -1, -1, 3193, 187, -1, -1, 190, 3198, -1, + -1, -1, 46, -1, 120, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3103, -1, -1, -1, + -1, -1, 66, -1, 68, 69, -1, -1, 3228, -1, + -1, 75, -1, 77, -1, -1, -1, -1, -1, 3126, + -1, -1, 235, -1, 88, 238, 90, 3134, -1, -1, + -1, -1, -1, -1, -1, -1, 249, -1, 251, -1, + -1, -1, -1, 107, 180, 3265, 110, 3267, 261, 185, + -1, -1, -1, -1, -1, -1, 2234, 270, -1, -1, + 124, -1, 126, -1, -1, -1, 130, 280, 281, -1, + 206, 207, 136, -1, -1, -1, -1, 2255, -1, -1, + 144, -1, 146, -1, -1, 221, -1, -1, 152, -1, + -1, -1, -1, -1, -1, -1, 3203, -1, -1, -1, + -1, -1, -1, -1, 168, 5151, 319, -1, -1, 322, + 323, 324, -1, -1, 3221, -1, -1, -1, 254, -1, + 184, -1, -1, -1, -1, -1, -1, 3234, -1, -1, + -1, 344, 268, -1, -1, 271, -1, 350, -1, -1, + -1, 2319, 2320, -1, -1, -1, -1, -1, -1, -1, + -1, 364, -1, -1, -1, -1, -1, -1, -1, 223, + 224, -1, -1, -1, -1, 229, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 241, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, + -1, -1, -1, -1, -1, -1, -1, 189, -1, -1, + -1, 414, -1, -1, -1, -1, 198, 199, -1, -1, + -1, -1, -1, -1, -1, 207, -1, -1, -1, 355, + -1, -1, -1, 3330, 288, -1, -1, -1, 220, -1, + -1, -1, 296, -1, -1, -1, 2414, -1, -1, -1, + -1, -1, -1, -1, 3351, 309, -1, -1, -1, -1, + -1, 315, 316, -1, 318, -1, -1, -1, -1, 323, + -1, -1, -1, -1, 328, -1, -1, 331, -1, 3376, + -1, -1, 336, -1, -1, 411, -1, -1, 342, 343, + -1, -1, -1, -1, -1, -1, 350, -1, -1, -1, + 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 364, -1, -1, 3410, -1, 3525, -1, 3527, -1, -1, + -1, -1, -1, 377, 3534, 451, -1, -1, 454, 455, + 456, -1, 458, 459, 460, 461, 462, 463, 8, -1, + 3550, 11, 396, -1, -1, 15, 16, 17, -1, -1, + -1, -1, 406, -1, -1, -1, 3566, 8, 412, -1, + 11, -1, 32, 417, 15, 16, 17, 22, -1, -1, + 40, -1, -1, 28, 3584, -1, 430, 47, -1, -1, + -1, 32, -1, -1, -1, -1, -1, -1, -1, 40, + -1, -1, 3602, -1, -1, -1, 47, -1, -1, 453, + -1, 71, 3612, -1, -1, -1, -1, -1, -1, 3506, + -1, -1, -1, 467, 69, -1, 470, -1, -1, -1, + 71, 3631, -1, 2591, -1, -1, -1, -1, -1, -1, + -1, -1, 3642, 3643, 3644, -1, -1, -1, -1, 3649, + 3650, 3651, 3652, -1, -1, 3655, 3656, -1, -1, -1, + -1, 3661, 3662, -1, 3664, 3665, 3666, 3667, 3668, 3669, + -1, 3671, -1, -1, -1, -1, -1, -1, 123, -1, + 3680, -1, -1, 3683, 3684, 130, -1, 8, 133, -1, + 11, -1, -1, -1, 15, 16, 17, -1, -1, -1, + -1, -1, 3702, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, 158, -1, -1, -1, -1, 3605, 40, + 180, -1, -1, -1, 3724, 185, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, + -1, -1, 3629, -1, 185, 190, 206, 207, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 221, -1, -1, -1, 206, 207, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 221, -1, -1, -1, -1, -1, 2744, -1, -1, -1, + -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, + 572, -1, -1, -1, 249, -1, 251, -1, 268, -1, + -1, 271, 584, 254, -1, -1, 261, -1, 590, -1, + -1, -1, -1, 3823, -1, 270, -1, 268, -1, -1, + 271, 603, -1, -1, -1, -1, 281, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 619, -1, -1, + -1, -1, 624, -1, -1, 3855, -1, -1, 630, 180, + -1, -1, 634, 635, 185, -1, -1, 3754, -1, -1, + 642, -1, -1, -1, 319, -1, -1, 322, 323, -1, + -1, -1, 654, 655, -1, 206, 207, -1, -1, -1, + -1, -1, -1, 665, -1, 355, -1, -1, -1, -1, + 221, -1, -1, -1, -1, 350, -1, -1, -1, -1, + -1, -1, -1, -1, 355, -1, -1, 3804, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, + 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 414, + -1, -1, -1, -1, -1, 747, 748, -1, -1, -1, + -1, 753, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 451, -1, -1, 454, 455, 456, -1, 458, 459, + 460, 461, 462, 463, -1, -1, -1, 779, 468, -1, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, + -1, -1, -1, -1, 355, -1, -1, -1, -1, 3926, + -1, -1, 3000, -1, -1, -1, -1, -1, -1, 3936, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, -1, 15, 16, 17, 4069, + -1, -1, -1, 4073, 4074, 4075, 4076, -1, -1, 4079, + -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4110, 4111, 4112, -1, 4114, -1, 4116, 4117, -1, -1, + -1, -1, 71, -1, -1, -1, -1, -1, 4128, 4129, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, + -1, 923, -1, -1, -1, 4155, -1, -1, 930, -1, + -1, -1, 934, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4061, -1, -1, -1, 4178, -1, + -1, 953, -1, -1, 8, -1, -1, 11, 3146, 3147, + 3148, 15, 16, 17, -1, -1, 968, -1, -1, -1, + -1, -1, -1, -1, -1, 3163, -1, -1, 32, -1, + -1, -1, 4099, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, 47, -1, -1, 22, -1, 3186, -1, + -1, 180, 28, 4120, -1, -1, 185, -1, 3196, 3197, + -1, 1013, -1, 3201, -1, -1, -1, 71, -1, -1, + -1, -1, 4252, -1, -1, -1, 3214, 206, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 221, 69, -1, -1, -1, -1, -1, -1, + 1052, 4281, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4185, -1, + -1, -1, -1, -1, -1, 254, 4306, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1089, -1, 268, + -1, -1, 271, -1, -1, -1, -1, 123, -1, -1, + -1, 1103, -1, -1, 130, -1, -1, 133, -1, -1, + 1112, -1, -1, -1, -1, -1, -1, -1, 1120, 3307, + -1, -1, -1, -1, -1, -1, 180, -1, -1, -1, + -1, 185, 158, 8, -1, -1, 11, -1, -1, -1, + 15, 16, 17, -1, -1, -1, 1148, -1, -1, -1, + -1, -1, 206, 207, -1, -1, -1, 32, -1, -1, + 1162, -1, 1164, -1, 190, 40, -1, 221, -1, -1, + -1, -1, 47, -1, -1, -1, 355, 1179, -1, 4296, + 1182, -1, -1, 4413, -1, -1, -1, -1, -1, -1, + -1, -1, 1194, -1, -1, -1, 71, -1, -1, -1, + 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 268, -1, -1, 271, -1, -1, + -1, 4338, 1224, 249, -1, 251, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, + -1, -1, -1, 4473, 270, 3433, 3434, 3435, -1, -1, + 1252, 1253, 1254, -1, 1256, 281, -1, -1, -1, -1, + -1, 4491, -1, -1, -1, -1, 4496, 4497, -1, -1, + -1, -1, 451, -1, 1276, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, + -1, -1, -1, 319, -1, -1, 322, 323, 1300, -1, + -1, 355, -1, -1, -1, 180, 1308, 1309, -1, -1, + 185, -1, -1, -1, -1, 1317, 1318, 4547, -1, -1, + -1, -1, -1, -1, 350, -1, -1, -1, -1, -1, + -1, 206, 207, -1, -1, -1, -1, 4567, -1, -1, + -1, -1, -1, 1345, -1, -1, 221, 1349, 1350, -1, + -1, -1, -1, -1, 4471, -1, -1, -1, -1, -1, + 8, -1, 1364, 11, -1, -1, 1368, 15, 16, 17, + -1, -1, -1, 1375, 4604, -1, -1, -1, -1, 254, + -1, 4611, -1, -1, 32, -1, -1, -1, 414, -1, + -1, -1, 40, 268, -1, -1, 271, 451, -1, 47, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, -1, -1, -1, 468, -1, -1, -1, -1, -1, + -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4679, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4700, -1, 1474, -1, -1, -1, 4593, -1, -1, 8, + 355, 4711, 11, -1, -1, -1, 15, 16, 17, -1, + -1, -1, -1, -1, -1, 1497, -1, -1, -1, -1, + -1, 4618, -1, 32, -1, -1, -1, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 180, 3721, -1, -1, -1, 185, -1, -1, + -1, 4658, 71, 4773, 3732, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1556, -1, -1, -1, 206, 207, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 221, 1576, 3763, 451, -1, -1, 454, + 455, 456, -1, 458, 459, 460, 461, 462, 463, 1591, + -1, -1, -1, 468, -1, 4712, -1, -1, 1600, -1, + 4717, 4718, -1, -1, 4834, 1607, 254, -1, -1, 3797, + 1612, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 268, -1, -1, 271, -1, -1, -1, -1, -1, 1631, + -1, -1, -1, -1, -1, -1, -1, 1639, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1651, + -1, 180, -1, -1, -1, 3843, 185, -1, -1, -1, + -1, -1, -1, -1, -1, 1667, 4896, -1, -1, -1, + -1, -1, 1674, -1, -1, 1677, -1, 206, 207, 1681, + -1, 4911, -1, -1, -1, 1687, -1, -1, -1, -1, + -1, 1693, 221, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1705, -1, -1, -1, 355, -1, -1, + 4827, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1722, 1723, -1, 1725, 1726, 254, -1, -1, -1, -1, + 4960, -1, -1, -1, -1, 1737, -1, -1, -1, 268, + -1, -1, 271, 1745, 1746, 4975, 1748, 1749, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1764, -1, -1, -1, -1, 3955, 3956, 3957, + 3958, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1796, -1, -1, -1, -1, -1, + -1, -1, -1, 451, -1, -1, 454, 455, 456, -1, + 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, + 468, -1, -1, 5053, -1, -1, 355, -1, 1830, -1, + 1832, -1, -1, -1, -1, 1837, 1838, -1, -1, -1, + -1, -1, 1844, 1845, 1846, -1, -1, -1, 1850, -1, + 1852, 1853, 1854, 1855, 1856, 1857, -1, 1859, -1, 1861, + 1862, -1, -1, 1865, -1, 5095, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1879, 1880, 1881, + 1882, 1883, 1884, -1, -1, -1, 1888, -1, -1, -1, + 1892, -1, -1, 1895, -1, -1, 1898, 1899, 1900, 1901, + 1902, 1903, 1904, 1905, 1906, -1, 1908, -1, -1, 5026, + -1, -1, -1, 1915, -1, 1917, -1, -1, -1, -1, + -1, -1, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5179, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, 32, -1, -1, 15, 16, 17, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, 8, -1, -1, + 11, 32, -1, -1, 15, 16, 17, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + 71, 32, -1, -1, -1, -1, -1, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + 71, -1, -1, 2045, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, + -1, -1, -1, -1, -1, -1, -1, -1, 2090, 8, + -1, -1, 11, -1, 32, 2097, 15, 16, 17, 2101, + 2102, -1, 40, -1, -1, -1, 2108, -1, -1, 47, + 4298, 2113, 2114, 32, -1, -1, 2118, -1, -1, -1, + -1, 40, -1, -1, 2126, -1, 157, -1, 47, 180, + -1, 162, -1, 71, 185, -1, -1, 22, -1, -1, + -1, -1, 2144, 28, -1, 2147, -1, -1, -1, 180, + -1, -1, 71, -1, 185, 206, 207, 2159, -1, -1, + -1, 2163, -1, -1, 2166, -1, -1, -1, -1, 180, + 221, -1, -1, 2175, 185, 206, 207, -1, -1, -1, + -1, -1, -1, -1, 69, -1, 2188, -1, -1, -1, + 221, -1, -1, -1, -1, 206, 207, -1, -1, -1, + -1, -1, -1, 254, 2206, 2207, -1, -1, -1, -1, + 221, -1, -1, 2215, -1, -1, -1, 268, 156, -1, + 271, -1, -1, 254, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2237, 2238, 268, 123, 2241, + 271, -1, 180, 254, -1, 130, -1, 185, 133, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, + 271, 180, 2264, -1, 2266, -1, 185, -1, 206, 207, + 2272, -1, -1, 158, -1, -1, -1, 2279, -1, -1, + -1, 2283, -1, 221, 295, -1, -1, 206, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2303, 221, -1, 355, 190, 2308, -1, -1, -1, + 2312, -1, -1, 2315, -1, -1, 254, -1, -1, -1, + -1, -1, -1, 2325, 355, -1, -1, -1, -1, -1, + 268, -1, -1, 271, -1, 254, 2338, -1, 4526, -1, + -1, -1, -1, -1, 355, -1, 2348, -1, -1, 268, + -1, -1, 271, 4541, -1, 293, -1, -1, 4546, -1, + 371, -1, -1, -1, 249, -1, 251, -1, -1, -1, + 289, -1, -1, -1, -1, -1, 261, -1, -1, -1, + -1, -1, -1, 4571, -1, 270, -1, -1, -1, -1, + -1, 2393, 2394, -1, -1, -1, 281, -1, -1, -1, + 451, 2403, 4590, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, 466, -1, 355, -1, -1, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, 319, 2437, 355, 322, 323, -1, + 451, -1, -1, 454, 455, 456, -1, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8, 350, -1, 11, -1, -1, + -1, 15, 16, 17, 2476, -1, -1, -1, 2480, -1, + -1, -1, -1, -1, -1, -1, -1, 2489, 32, -1, + -1, 35, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, 47, -1, -1, 22, -1, 4696, -1, + -1, -1, 28, 451, -1, -1, 454, 455, 456, -1, + 458, 459, 460, 461, 462, 463, -1, 71, -1, 414, + -1, 2533, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, + -1, -1, -1, 69, -1, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, -1, 15, 16, 17, 2571, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 32, -1, 2587, 35, 2589, -1, -1, + -1, 40, -1, -1, -1, 2597, -1, -1, 47, 2601, + -1, 4789, 2604, -1, -1, 2607, -1, 123, -1, -1, + -1, -1, -1, -1, 130, 2617, -1, 133, -1, -1, + -1, -1, 71, -1, -1, -1, 2628, -1, -1, -1, + -1, 2633, -1, -1, -1, -1, 180, -1, -1, -1, + -1, 185, 158, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2656, 2657, 2658, -1, -1, 2661, + -1, -1, 206, 207, -1, -1, -1, 2669, 2670, 2671, + 2672, -1, -1, -1, 190, 2677, -1, 221, -1, -1, + 2682, 2683, -1, 2685, -1, 2687, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2698, 2699, -1, -1, + 2702, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 254, -1, -1, -1, 2716, -1, 2718, -1, 2720, -1, + -1, -1, -1, -1, 268, -1, -1, 271, -1, -1, + -1, 180, -1, 249, -1, 251, 185, -1, 2740, -1, + -1, -1, -1, -1, -1, 261, -1, -1, -1, 2751, + -1, 2753, 2754, 2755, 270, -1, -1, 206, 207, -1, + -1, -1, -1, -1, -1, 281, 2768, -1, -1, 2771, + -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, + 2782, -1, -1, -1, -1, 2787, -1, -1, -1, -1, + -1, 2793, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2803, -1, 319, -1, 254, 322, 323, -1, -1, + -1, 355, -1, -1, -1, -1, -1, -1, -1, 268, + 2822, -1, 271, 2825, 8, 2827, -1, 11, -1, 22, + 2832, 15, 16, 17, 350, 28, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2847, 2848, -1, 32, -1, + -1, 2853, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, 8, 47, -1, 11, -1, -1, -1, 15, + 16, 17, 2874, -1, -1, 2877, 69, -1, -1, 2881, + -1, -1, -1, -1, -1, -1, 32, 71, -1, 35, + -1, -1, -1, -1, 40, -1, 2898, -1, 414, -1, + -1, 47, -1, -1, -1, -1, 355, 451, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, 2923, -1, -1, -1, 71, -1, -1, -1, -1, + 123, -1, -1, -1, -1, -1, -1, 130, -1, -1, + 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2958, 2959, 2960, -1, + -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 162, -1, + 2982, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2992, -1, 2994, -1, -1, -1, 180, 190, -1, -1, + 3002, 185, 451, -1, -1, 454, 455, 456, -1, 458, + 459, 460, 461, 462, 463, 3017, -1, -1, -1, -1, + -1, -1, 206, 207, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 180, -1, -1, 221, -1, 185, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 249, -1, 251, -1, + 206, 207, -1, -1, -1, -1, -1, -1, 261, -1, + 254, -1, -1, 3075, -1, 221, -1, 270, -1, -1, + -1, -1, -1, -1, 268, -1, -1, 271, 281, -1, + -1, -1, -1, 3095, -1, -1, -1, -1, -1, -1, + -1, 3103, -1, -1, -1, -1, -1, -1, 254, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 268, -1, 3126, 271, 319, -1, -1, 322, + 323, 3133, 3134, -1, 8, -1, -1, 11, 3140, -1, + 3142, 15, 16, 17, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3155, -1, 3157, -1, 350, 32, -1, + -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, + -1, 355, -1, 47, -1, -1, -1, 3179, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, + -1, 3203, -1, -1, -1, -1, -1, -1, -1, 355, + -1, -1, -1, -1, -1, -1, -1, -1, 3220, 3221, + -1, 414, -1, -1, -1, -1, -1, -1, -1, 198, + 199, -1, 3234, -1, -1, -1, -1, -1, 207, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3268, 451, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + -1, -1, 3284, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3306, 451, 180, 3309, 454, 455, + 456, 185, 458, 459, 460, 461, 462, 463, -1, -1, + -1, -1, -1, -1, -1, 3327, -1, -1, 3330, -1, + 25, -1, 206, 207, 3336, -1, -1, -1, -1, -1, + 3342, -1, 3344, -1, -1, 3347, -1, 221, -1, 3351, + 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, 3360, 3361, + 3362, 3363, 3364, 3365, 3366, 3367, -1, -1, -1, 3371, + 3372, -1, -1, -1, 3376, -1, -1, 72, -1, 3381, + 254, -1, -1, 3385, -1, 3387, -1, 3389, -1, -1, + -1, -1, 87, -1, 268, 3397, -1, 271, 3400, -1, + 3402, -1, -1, -1, -1, -1, -1, -1, 3410, 3411, + 105, -1, 3414, 3415, -1, -1, 111, 3419, 3420, -1, + -1, -1, -1, -1, 3426, -1, -1, -1, -1, -1, + -1, -1, -1, 128, 3436, -1, -1, 3439, -1, -1, + -1, -1, -1, -1, 139, -1, 8, -1, -1, 11, + 3452, -1, 147, 15, 16, 17, 3458, 3459, 3460, -1, + -1, -1, -1, -1, 159, -1, -1, -1, -1, 164, + 32, -1, -1, 35, -1, -1, 171, -1, 40, -1, + -1, 355, 3484, -1, -1, 47, -1, -1, -1, -1, + -1, -1, -1, 188, -1, -1, -1, -1, 3500, -1, + 199, -1, -1, -1, 3506, -1, -1, -1, 207, 71, + -1, 385, -1, -1, -1, -1, 3518, -1, 213, -1, + -1, 220, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, -1, -1, 234, + -1, -1, -1, -1, -1, -1, -1, 3549, -1, -1, + -1, 32, -1, -1, -1, -1, -1, -1, -1, 40, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + -1, -1, -1, 268, -1, -1, -1, 451, -1, -1, + 454, 455, 456, -1, 458, 459, 460, 461, 462, 463, + 71, -1, -1, -1, -1, -1, 291, 3599, -1, -1, + -1, -1, 3604, 3605, 3606, -1, 301, -1, -1, 304, + -1, -1, -1, -1, -1, 584, -1, -1, 180, -1, + -1, 590, -1, 185, -1, -1, 3628, 3629, -1, -1, + -1, -1, -1, -1, 603, 330, -1, -1, -1, -1, + 335, -1, 337, 3645, 206, 207, -1, -1, -1, 344, + 619, -1, 347, -1, -1, -1, -1, -1, 3660, 221, + -1, 3663, -1, -1, -1, 634, 635, -1, -1, -1, + -1, 366, -1, 642, -1, -1, -1, 372, -1, -1, + -1, 376, 377, -1, -1, 380, 655, -1, -1, 384, + -1, -1, 254, -1, -1, -1, 665, -1, 393, 180, + -1, -1, -1, 398, 185, -1, 268, -1, -1, 271, + -1, -1, -1, -1, -1, 410, -1, -1, -1, -1, + -1, -1, -1, 3725, -1, 206, 207, -1, 423, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 221, -1, -1, -1, -1, -1, -1, -1, 3750, 3751, + -1, -1, 3754, -1, -1, -1, -1, -1, 3760, -1, + -1, -1, -1, -1, -1, 3767, -1, -1, -1, -1, + -1, -1, -1, 254, -1, -1, -1, 3779, -1, -1, + -1, -1, -1, -1, 753, -1, -1, 268, -1, -1, + 271, -1, -1, 355, 22, -1, -1, -1, -1, -1, + 28, -1, 3804, 3805, 3806, -1, -1, 35, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 69, -1, -1, -1, -1, -1, -1, -1, 3851, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3872, -1, -1, -1, 355, 103, -1, -1, -1, -1, + -1, 3883, -1, -1, -1, 584, -1, -1, -1, 451, + -1, 590, 454, 455, 456, 123, 458, 459, 460, 461, + 462, 463, 130, -1, 603, 133, -1, -1, -1, -1, + -1, 3913, -1, -1, -1, -1, -1, -1, -1, -1, + 619, 3923, 3924, -1, 3926, -1, -1, -1, 3930, 3931, + 158, -1, -1, 3935, 3936, -1, 635, -1, 3940, -1, + -1, 3943, 3944, 642, -1, -1, 3948, -1, -1, -1, + -1, -1, 3954, -1, -1, -1, 655, -1, -1, 187, + -1, -1, 190, -1, 3966, 934, 665, -1, -1, -1, + 451, -1, 3974, 454, 455, 456, 3978, 458, 459, 460, + 461, 462, 463, -1, -1, -1, -1, -1, -1, 3991, + -1, -1, -1, -1, 3996, -1, -1, -1, -1, -1, + 4002, -1, -1, -1, -1, -1, -1, 235, -1, -1, + 238, -1, -1, -1, -1, 4017, -1, -1, -1, -1, + -1, 249, -1, 251, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, + -1, 4043, 270, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 280, 281, 753, -1, -1, -1, -1, 4061, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4078, -1, -1, -1, + -1, 4083, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 319, -1, -1, 322, 323, 324, 4099, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4115, -1, -1, 344, -1, 4120, -1, + 1089, -1, 350, -1, -1, 4127, -1, -1, -1, -1, + -1, -1, -1, -1, 1103, -1, 364, -1, -1, -1, + -1, 4143, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1120, 4154, -1, -1, -1, -1, -1, 630, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1148, + -1, -1, 654, 4185, -1, -1, 414, -1, -1, -1, + -1, -1, -1, -1, -1, 1164, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4209, -1, -1, + 1179, -1, -1, 1182, -1, -1, -1, -1, -1, -1, + -1, 4223, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4246, -1, -1, -1, -1, -1, + -1, 4253, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 630, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 654, + -1, -1, 4294, -1, 4296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4318, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1300, 4334, -1, -1, -1, 4338, -1, -1, 1308, + 1309, 4343, -1, -1, -1, -1, -1, -1, -1, 1318, + -1, -1, -1, -1, -1, -1, -1, -1, 4360, 4361, + -1, -1, 4364, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4379, -1, -1, + -1, -1, -1, -1, 4386, -1, -1, -1, -1, 4391, + 1089, -1, 4394, 4395, -1, -1, -1, -1, -1, -1, + 4402, 4403, -1, -1, 1103, -1, 1375, -1, -1, 20, + -1, -1, -1, -1, 25, -1, -1, -1, 4420, -1, + 4422, 1120, -1, -1, -1, 4427, 37, 4429, -1, -1, + -1, 4433, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 59, 1148, + -1, -1, -1, -1, -1, -1, -1, -1, 930, -1, + -1, 72, -1, -1, -1, 1164, -1, -1, -1, 4471, + 4472, -1, 83, -1, -1, -1, 87, -1, -1, 4481, + 1179, 953, -1, 1182, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 105, -1, 968, -1, -1, -1, + 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4517, -1, 128, -1, -1, + -1, 4523, -1, -1, -1, -1, -1, -1, 139, -1, + -1, -1, -1, -1, -1, -1, 147, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 159, -1, + -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, + 171, -1, -1, -1, -1, 930, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4578, 188, -1, -1, + 1052, -1, -1, -1, -1, -1, -1, 1556, 953, 4591, + -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1300, -1, 968, -1, -1, -1, -1, -1, 1308, + 1309, -1, -1, -1, 225, 4617, 4618, -1, 4620, 1318, + 4622, -1, -1, 234, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1607, -1, + 4642, -1, -1, -1, -1, -1, 4648, -1, -1, -1, + 4652, -1, -1, -1, -1, -1, 4658, 268, -1, -1, + 271, 4663, 1631, -1, -1, -1, -1, -1, -1, -1, + 1639, -1, -1, -1, -1, -1, 1375, -1, -1, -1, + 291, -1, 1651, -1, -1, -1, -1, 1052, -1, -1, + 1162, -1, -1, 304, -1, -1, -1, -1, -1, -1, + 311, -1, 4704, -1, -1, -1, -1, -1, -1, -1, + 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, 330, + 4722, -1, -1, -1, -1, -1, 337, -1, -1, -1, + -1, -1, -1, 344, -1, -1, 347, -1, 4740, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1722, 1723, 366, 1725, 1726, -1, -1, + -1, 372, -1, -1, -1, -1, 377, 4769, 1737, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, 1748, + 1749, -1, 393, -1, -1, -1, -1, 398, -1, -1, + 4792, -1, -1, 404, -1, 1764, 407, 1162, -1, 410, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 423, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4826, 4827, -1, 1796, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4847, -1, -1, 4850, -1, + -1, 4853, -1, -1, -1, -1, -1, 1556, -1, -1, + -1, -1, 4864, -1, -1, -1, -1, 4869, -1, 4871, + -1, 4873, -1, -1, -1, -1, -1, -1, -1, 4881, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1368, 4899, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1607, -1, + -1, -1, -1, -1, -1, 1884, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4929, -1, 4931, + -1, -1, 1631, -1, -1, -1, -1, -1, -1, -1, + 1639, -1, -1, -1, -1, -1, -1, -1, 747, 748, + -1, -1, 1651, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4981, + -1, -1, -1, -1, -1, -1, -1, 4989, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1474, 1368, -1, -1, -1, -1, -1, -1, + -1, -1, 5014, 5015, -1, -1, -1, -1, -1, -1, + 5022, 5023, -1, -1, 5026, 1497, 1725, 1726, -1, -1, + 5032, -1, -1, -1, -1, -1, -1, -1, 1737, 5041, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1748, + 1749, -1, 5054, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1764, -1, -1, -1, -1, + 1435, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5105, 1576, -1, -1, -1, 5110, 1474, + -1, -1, -1, -1, -1, -1, -1, 5119, -1, 1591, + -1, 2090, -1, 5125, 5126, 5127, -1, -1, 1600, -1, + -1, -1, 1497, -1, 5136, -1, -1, -1, -1, 2108, + 1612, -1, -1, -1, 2113, 2114, -1, -1, -1, 2118, + -1, 5153, -1, -1, -1, -1, -1, 2126, -1, -1, + -1, -1, -1, -1, -1, 5167, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2144, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1884, -1, -1, -1, 5191, + -1, -1, -1, -1, -1, 1667, -1, 2166, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1681, + -1, 1576, -1, -1, -1, -1, 5218, 5219, -1, 2188, + -1, 1693, -1, -1, -1, -1, 1591, -1, -1, -1, + -1, -1, -1, 1705, -1, 1600, -1, 2206, 2207, -1, + -1, 5243, -1, -1, -1, -1, -1, 1612, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5260, -1, + -1, -1, -1, -1, 5266, -1, -1, -1, 2237, 2238, + -1, -1, 2241, 1745, 1746, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5290, -1, + 5292, -1, -1, -1, -1, 2264, -1, 2266, -1, -1, + -1, -1, 1667, 2272, -1, 5307, 5308, 5309, -1, -1, + 2279, -1, -1, -1, 2283, -1, 1681, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, + -1, -1, -1, -1, 2303, -1, -1, -1, -1, 2308, + 1705, -1, -1, 2312, -1, -1, 2315, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2325, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2338, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2348, + 1745, 1746, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2090, -1, -1, -1, 1194, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1879, -1, 2108, + -1, -1, -1, -1, 2113, 2114, -1, -1, -1, 2118, + -1, -1, -1, -1, -1, 1224, -1, 2126, -1, -1, + -1, -1, -1, -1, 2403, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2144, -1, -1, -1, -1, + -1, -1, -1, 1252, 1253, 1254, -1, 1256, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 20, -1, -1, -1, 1276, 25, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2188, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2206, 2207, -1, + -1, 2480, 59, -1, 1879, -1, -1, -1, 1317, -1, + -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2237, 2238, + 87, -1, 2241, -1, -1, -1, 1345, -1, -1, -1, + 1349, 1350, 1917, -1, -1, -1, -1, -1, 105, -1, + -1, -1, -1, -1, 2533, 2264, -1, 2266, -1, -1, + -1, -1, -1, 2272, -1, -1, -1, -1, -1, -1, + 2279, 128, -1, -1, 2283, -1, -1, -1, -1, -1, + -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, + 147, -1, 2571, -1, 2303, -1, -1, -1, -1, 2308, + -1, -1, 159, 2312, -1, -1, 2315, 164, -1, -1, + 2589, -1, -1, -1, 171, 2097, 2325, -1, 2597, 2101, + 2102, -1, -1, -1, -1, -1, -1, -1, 2607, 2338, + -1, 188, -1, -1, -1, -1, -1, -1, -1, 2348, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 234, -1, -1, + -1, 2163, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2175, 2403, -1, -1, -1, 2677, -1, + -1, -1, -1, -1, 2683, -1, -1, -1, -1, -1, + -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2097, 280, -1, -1, 2101, 2102, -1, -1, + -1, -1, -1, 2215, 291, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 301, -1, -1, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2480, -1, 330, -1, -1, -1, -1, 335, -1, + 337, -1, -1, -1, -1, -1, -1, 344, 2163, 2768, + 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2175, -1, -1, -1, -1, -1, -1, -1, -1, 366, + -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, + 377, -1, -1, 380, 2533, -1, -1, 384, -1, -1, + -1, -1, -1, -1, 391, -1, 393, -1, -1, -1, + 2215, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, -1, -1, -1, -1, -1, + -1, -1, 2571, -1, -1, -1, 423, -1, 2847, 2848, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2589, -1, -1, -1, -1, -1, -1, -1, 2597, -1, + -1, -1, -1, -1, -1, 2874, -1, -1, 2877, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 20, -1, 2394, -1, -1, 25, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 72, 73, -1, -1, -1, -1, 2677, -1, + -1, -1, -1, 83, 2683, -1, -1, 87, -1, 2958, + 2959, 2960, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2476, 105, -1, -1, -1, -1, + -1, -1, -1, 2982, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 128, 2394, + -1, -1, -1, 3002, -1, -1, -1, -1, 1837, 139, + -1, -1, -1, -1, -1, -1, -1, 147, 3017, -1, + -1, 1850, -1, 1852, -1, -1, 1855, 1856, 1857, 159, + -1, -1, -1, 1862, 164, -1, 1865, -1, -1, 2768, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1880, 1881, 1882, 1883, -1, -1, -1, 188, 1888, + -1, -1, -1, 1892, -1, -1, 1895, -1, -1, 1898, + 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, -1, 1908, + -1, 2476, -1, 213, -1, 2587, 1915, -1, 1917, -1, + -1, -1, -1, -1, -1, -1, 3095, -1, -1, -1, + -1, -1, 2604, -1, 234, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2617, -1, -1, 2847, 2848, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3133, -1, -1, -1, 268, -1, + -1, 3140, -1, 3142, -1, 2874, -1, -1, 2877, -1, + -1, -1, -1, -1, -1, -1, 3155, -1, 3157, -1, + -1, 291, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 301, -1, -1, 304, -1, -1, -1, -1, -1, + 3179, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2587, -1, -1, -1, -1, -1, -1, -1, + 330, -1, -1, -1, -1, 335, -1, 337, -1, 2604, + -1, -1, -1, -1, 344, -1, 2045, 347, -1, -1, + -1, 3220, 2617, -1, -1, 630, -1, -1, -1, 2958, + 2959, 2960, -1, -1, -1, -1, 366, -1, -1, -1, + -1, -1, 372, -1, -1, -1, -1, 377, -1, 654, + 380, -1, -1, 2982, 384, -1, -1, -1, -1, -1, + -1, 391, -1, 393, -1, -1, -1, -1, 398, 3268, + -1, -1, -1, 3002, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3284, -1, -1, 3017, -1, + -1, -1, -1, 423, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3306, -1, -1, + 3309, -1, -1, -1, -1, -1, -1, -1, 2147, -1, + 2822, -1, -1, 2825, -1, 2827, -1, -1, -1, -1, + 2832, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2753, 2754, + 2755, -1, -1, -1, -1, -1, 3095, -1, -1, -1, + -1, -1, -1, -1, -1, 630, -1, -1, -1, 2881, + -1, -1, -1, -1, -1, -1, -1, -1, 3387, -1, + -1, -1, -1, -1, -1, -1, 2898, -1, -1, 654, + -1, -1, -1, -1, 3133, -1, -1, -1, -1, -1, + -1, 3140, -1, 3142, -1, -1, -1, -1, -1, -1, + -1, 2923, -1, -1, -1, -1, 3155, 2822, 3157, -1, + 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3179, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, + 2992, 3220, 2994, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2898, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 930, -1, -1, 2923, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3268, + -1, -1, -1, -1, -1, -1, -1, -1, 953, -1, + 3549, -1, -1, -1, -1, 3284, -1, -1, -1, -1, + -1, -1, -1, 968, 2393, -1, -1, -1, -1, -1, + -1, -1, -1, 3075, -1, -1, -1, 3306, -1, -1, + 3309, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, + 3599, 3103, -1, -1, -1, 3604, -1, 3606, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3126, -1, -1, -1, -1, 3628, + -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3645, 1052, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3387, -1, + -1, 3660, -1, -1, 3663, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 930, -1, -1, -1, -1, + 3075, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 953, -1, + -1, 3203, -1, -1, -1, -1, -1, -1, 3103, -1, + -1, -1, -1, 968, -1, -1, -1, -1, -1, 3221, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3126, 3234, -1, -1, -1, -1, -1, -1, 3134, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3750, 3751, -1, -1, -1, -1, 1162, -1, -1, + -1, 3760, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3779, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1052, 630, 2628, + -1, -1, -1, -1, 2633, -1, -1, -1, 3203, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3549, -1, 654, -1, -1, -1, 3221, -1, 3330, 2658, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3234, + 2669, -1, 2671, 2672, -1, -1, -1, -1, -1, 3351, + -1, -1, 3851, 2682, -1, -1, 2685, -1, 2687, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3599, -1, -1, -1, 3376, 3604, -1, 3606, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2716, -1, 2718, + -1, 2720, -1, -1, -1, -1, -1, -1, -1, 3628, + -1, -1, -1, -1, -1, -1, -1, 1162, 3410, -1, + -1, -1, -1, -1, -1, -1, 3645, -1, -1, -1, + -1, -1, -1, -1, 2753, 2754, 2755, -1, -1, -1, + -1, 3660, -1, -1, 3663, 3330, -1, -1, -1, -1, + -1, -1, 2771, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2782, -1, -1, 3351, -1, 2787, -1, + -1, -1, -1, 1368, 2793, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3376, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3506, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3410, -1, -1, -1, -1, + -1, 3750, 3751, -1, 2853, -1, -1, -1, -1, -1, + 1435, 3760, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3779, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3460, -1, -1, -1, 1474, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4078, + -1, -1, -1, -1, 4083, -1, -1, -1, -1, -1, + -1, -1, 1497, -1, -1, -1, -1, -1, 930, -1, + -1, -1, -1, 3605, -1, -1, -1, -1, -1, -1, + -1, 3506, -1, 1368, -1, -1, 4115, -1, -1, -1, + -1, 953, 3851, -1, -1, -1, -1, 3629, 4127, -1, + -1, -1, -1, -1, -1, -1, 968, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1576, -1, -1, -1, -1, -1, -1, -1, -1, + 1435, -1, -1, -1, -1, -1, 1591, -1, -1, -1, + -1, -1, -1, -1, -1, 1600, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1612, -1, -1, + 3605, -1, -1, -1, -1, -1, -1, -1, -1, 1474, + 1052, -1, -1, -1, -1, 630, -1, -1, -1, -1, + -1, -1, -1, -1, 3629, -1, -1, -1, -1, -1, + -1, -1, 1497, -1, -1, -1, -1, 4246, -1, 654, + -1, -1, 3754, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1667, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1681, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1705, -1, 3804, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4318, + -1, 1576, -1, -1, -1, -1, -1, -1, -1, -1, + 1162, -1, -1, -1, -1, -1, 1591, -1, -1, -1, + 1745, 1746, -1, -1, -1, 1600, -1, -1, -1, 4078, + -1, -1, -1, -1, 4083, -1, -1, 1612, -1, 3754, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4115, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4127, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3804, + -1, -1, 1667, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3926, 4154, 1681, -1, 4427, -1, + 4429, -1, -1, -1, 3936, -1, -1, -1, 1693, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1705, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4472, 1879, -1, -1, -1, -1, -1, + -1, -1, 4481, -1, -1, -1, -1, -1, -1, -1, + 1745, 1746, -1, -1, -1, -1, -1, -1, 3327, -1, + -1, -1, -1, -1, -1, -1, -1, 3336, -1, -1, + -1, -1, -1, 3342, -1, 3344, -1, 4246, 4517, -1, + -1, -1, -1, -1, 4523, 930, -1, -1, -1, -1, + -1, 3926, -1, -1, -1, -1, 1368, -1, -1, -1, + -1, 3936, 3371, 3372, -1, -1, -1, -1, 953, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4061, + 3389, -1, -1, 968, -1, -1, -1, -1, 3397, -1, + -1, 3400, -1, 3402, -1, -1, -1, -1, -1, -1, + -1, -1, 3411, -1, -1, -1, -1, -1, -1, 4318, + 3419, 3420, -1, -1, -1, -1, 3991, 4099, -1, -1, + -1, 3996, -1, 1435, -1, -1, -1, 4002, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, + -1, -1, -1, 3452, 1879, -1, -1, -1, -1, 3458, + 3459, 3460, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1474, -1, -1, -1, -1, 1052, 630, -1, + -1, -1, -1, -1, -1, 3484, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1497, 4061, -1, -1, -1, + -1, 3500, 654, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, + -1, -1, 2097, -1, -1, -1, 2101, 2102, 4427, -1, + 4429, -1, -1, -1, 4099, 4704, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4740, -1, 4472, 1576, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1162, 2163, 1591, + -1, -1, -1, -1, -1, -1, -1, -1, 1600, -1, + 2175, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1612, -1, -1, -1, -1, -1, -1, -1, 4517, -1, + 4185, -1, -1, -1, 4296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2215, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1667, 4338, -1, -1, -1, + -1, -1, 2097, -1, -1, -1, 2101, 2102, -1, 1681, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1693, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1705, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4294, + -1, 4296, -1, -1, -1, -1, -1, -1, 2163, -1, + -1, -1, -1, 1745, 1746, -1, -1, -1, -1, -1, + 2175, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4929, -1, 4931, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4338, -1, -1, -1, -1, 930, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2215, -1, -1, 1368, -1, -1, -1, -1, -1, 4471, + -1, 953, -1, -1, -1, 4704, 3805, 3806, -1, -1, + -1, -1, -1, -1, -1, -1, 968, -1, -1, 2394, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4740, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5023, -1, -1, -1, -1, -1, + 1435, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5041, 3872, -1, -1, -1, 1879, -1, -1, + -1, -1, -1, -1, 3883, 5054, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1474, + 1052, 2476, -1, -1, -1, -1, 4471, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4593, 1497, -1, 3923, 3924, -1, -1, -1, -1, + -1, 3930, 3931, -1, -1, -1, 3935, -1, -1, -1, + -1, 3940, -1, -1, 3943, 3944, 4618, -1, -1, 3948, + -1, -1, -1, -1, -1, 3954, 5125, 5126, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2394, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4658, -1, -1, -1, + -1, -1, 3991, -1, -1, -1, -1, 3996, 5167, -1, + -1, 1576, -1, 4002, -1, -1, -1, -1, -1, -1, + 1162, -1, 2587, -1, -1, -1, 1591, -1, 4017, -1, + -1, -1, -1, -1, -1, 1600, -1, -1, 4593, 2604, + 4929, -1, 4931, -1, -1, -1, -1, 1612, -1, -1, + 4712, -1, 2617, -1, 4043, 4717, 4718, -1, -1, -1, + -1, 2476, -1, 4618, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5243, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1667, 4658, -1, 2097, -1, -1, -1, 2101, + 2102, -1, -1, -1, -1, -1, 1681, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1693, -1, + -1, -1, -1, 5292, 5023, -1, -1, -1, -1, -1, + 1705, -1, -1, -1, -1, -1, -1, -1, 5307, 5308, + 5309, -1, 5041, -1, 4143, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, -1, 4827, -1, -1, -1, -1, + -1, 2163, 2587, -1, -1, -1, -1, -1, -1, -1, + 1745, 1746, -1, 2175, -1, -1, -1, -1, -1, 2604, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2617, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4209, -1, -1, 2215, -1, -1, 1368, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2822, -1, -1, + 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, + -1, 4826, 4827, -1, -1, -1, -1, -1, 5167, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1435, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1879, -1, 2881, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1474, 2898, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5243, 1497, -1, -1, 2923, -1, + -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, + -1, 4360, 4361, -1, -1, 4364, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2394, 5292, -1, -1, -1, 2822, -1, -1, + 2825, -1, 2827, 4402, 4403, -1, -1, 2832, 5307, -1, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, + -1, -1, -1, 4422, 1576, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1591, + -1, -1, -1, -1, -1, -1, -1, -1, 1600, -1, + -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, + 1612, 5026, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2898, 2476, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2923, -1, + 3075, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1667, -1, -1, -1, -1, + -1, -1, 2097, -1, -1, -1, 2101, 2102, 3103, 1681, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1693, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3126, -1, 1705, -1, -1, -1, -1, -1, 3134, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2587, -1, -1, 2163, -1, + -1, -1, -1, 1745, 1746, -1, -1, -1, -1, -1, + 2175, -1, 2604, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2617, -1, -1, -1, -1, + -1, 4620, -1, -1, -1, -1, -1, -1, 3203, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2215, -1, -1, -1, -1, -1, 3221, -1, -1, 4648, + 3075, -1, -1, -1, -1, -1, -1, -1, -1, 3234, + -1, -1, -1, -1, 4663, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3103, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3126, -1, -1, -1, -1, -1, -1, -1, 3134, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4722, -1, -1, -1, 1879, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3351, -1, 3203, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1, + -1, 3376, -1, -1, -1, -1, -1, -1, -1, 3234, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2394, + 2822, -1, -1, 2825, -1, 2827, -1, -1, -1, -1, + 2832, -1, -1, -1, -1, 3410, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4873, -1, -1, -1, -1, 2881, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2898, -1, -1, -1, + 4899, 2476, -1, -1, -1, 3330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1268, -1, -1, + -1, 2923, -1, -1, -1, -1, 3351, -1, -1, -1, + -1, 3506, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2097, -1, -1, -1, 2101, + 2102, 3376, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1331, -1, 4981, -1, -1, 3410, -1, -1, -1, -1, + 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2163, 2587, -1, -1, 5014, 5015, -1, -1, -1, + -1, -1, -1, 2175, -1, -1, -1, -1, -1, 2604, + 3605, -1, -1, 5032, -1, -1, -1, -1, -1, -1, + -1, -1, 2617, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3629, -1, -1, -1, -1, -1, + -1, -1, -1, 2215, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3075, -1, -1, -1, -1, -1, -1, + -1, 3506, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5110, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3126, -1, -1, -1, 5127, -1, + -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5153, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3754, + 3605, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3203, -1, -1, 3629, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3221, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3804, + -1, -1, 3234, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2394, -1, -1, -1, -1, 2822, -1, -1, + 2825, -1, 2827, -1, -1, -1, -1, 2832, -1, -1, + -1, 5260, -1, -1, -1, -1, -1, 5266, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2881, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2898, 2476, -1, -1, -1, 3330, 3754, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2923, 3351, + -1, 3926, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3936, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3376, -1, -1, -1, -1, 3804, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3410, -1, + -1, -1, -1, -1, -1, -1, -1, 2992, -1, 2994, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2587, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2604, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2617, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1835, -1, 4061, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1849, -1, + 3075, 3926, 1853, -1, 3506, -1, -1, -1, -1, -1, + -1, 3936, -1, -1, -1, -1, 1867, 1868, 1869, -1, + 1871, -1, -1, -1, 4099, -1, -1, -1, 3103, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, + -1, 3126, -1, -1, -1, -1, -1, -1, -1, 3134, + -1, -1, 1913, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1950, + -1, -1, -1, 3605, -1, -1, -1, -1, -1, -1, + 4185, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3629, 3203, -1, + -1, -1, -1, -1, -1, -1, 4061, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3221, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3234, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2822, -1, -1, 2825, 4099, 2827, -1, -1, -1, -1, + 2832, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, + -1, -1, -1, 2054, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2066, -1, -1, 2069, -1, + -1, 4296, -1, -1, -1, -1, -1, -1, -1, 2881, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2898, -1, -1, -1, + -1, -1, 3754, -1, -1, 3330, -1, -1, -1, -1, + 4185, -1, -1, 4338, -1, -1, -1, -1, -1, -1, + -1, 2923, -1, -1, -1, -1, 3351, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3376, 3804, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3410, -1, -1, -1, -1, + 2992, -1, 2994, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4296, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4471, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4338, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3075, 3926, -1, -1, -1, -1, -1, + -1, 3506, -1, -1, 3936, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3126, -1, -1, -1, -1, -1, + -1, -1, 3134, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4593, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3605, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4618, -1, -1, 4471, -1, -1, -1, + -1, 3203, -1, -1, 3629, -1, -1, -1, -1, 4061, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3221, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3234, 4658, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4099, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4593, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3330, 3754, + -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4618, -1, -1, -1, -1, -1, 3351, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3376, -1, -1, -1, -1, 3804, + -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4827, -1, -1, -1, -1, -1, 3410, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2631, -1, -1, -1, -1, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, 4296, -1, -1, -1, -1, -1, + 2651, -1, 2653, -1, -1, 2656, 2657, -1, 2659, -1, + 2661, -1, -1, -1, 2665, -1, -1, 2668, -1, -1, + -1, -1, 2673, -1, -1, -1, -1, -1, 2679, -1, + -1, -1, -1, 2684, -1, -1, 4338, -1, -1, -1, + 2691, 2692, 2693, 2694, -1, -1, -1, 2698, 2699, -1, + 2701, 3926, -1, -1, 3506, -1, -1, -1, -1, -1, + -1, 3936, 2713, -1, 2715, -1, -1, -1, -1, -1, + -1, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, + 2731, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4827, -1, -1, -1, -1, -1, 2759, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2779, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5026, -1, 3605, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4471, + -1, -1, -1, -1, -1, -1, -1, 3629, -1, -1, + -1, -1, -1, -1, -1, -1, 4061, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2868, -1, -1, + -1, -1, -1, -1, 4099, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5026, 3754, -1, -1, -1, -1, -1, -1, -1, + 4185, -1, -1, -1, -1, -1, 4618, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3804, -1, -1, -1, 4658, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, -1, + -1, 4296, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4338, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3926, -1, -1, -1, 3129, -1, + -1, -1, -1, -1, 3936, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4827, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4471, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4061, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4099, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, + -1, -1, -1, -1, -1, 3326, -1, -1, -1, -1, + -1, 3332, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3348, 3349, -1, + -1, 3352, 3353, 3354, 3355, -1, -1, 3358, 3359, 3360, + 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 4593, -1, + -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, + -1, -1, -1, 4185, -1, -1, -1, -1, -1, 3390, + -1, -1, 3393, 4618, 3395, -1, -1, 3398, 3399, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3413, 3414, 3415, 3416, -1, 3418, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4658, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3468, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3478, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4712, -1, -1, + -1, -1, 4717, 4718, 4296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3515, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4338, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4827, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4471, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3725, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4593, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5026, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4618, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4658, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3873, -1, -1, -1, 3877, 3878, 3879, -1, + -1, -1, -1, -1, 3885, 3886, 3887, 3888, -1, -1, + -1, -1, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, + 3901, 3902, 3903, 3904, -1, -1, -1, -1, -1, -1, + 4712, -1, -1, -1, -1, 4717, 4718, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3929, -1, + -1, 3932, -1, 3934, -1, -1, -1, 3938, -1, -1, + 3941, 3942, -1, -1, 3945, 3946, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3993, -1, -1, -1, -1, -1, -1, 4000, + 4001, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4016, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4827, -1, -1, 4029, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4212, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5026, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4291, 4292, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4328, -1, -1, + -1, -1, 4333, 4334, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4348, -1, 4350, + -1, -1, -1, 4354, 4355, 4356, -1, -1, 4359, -1, + -1, 4362, 4363, -1, -1, -1, 4367, -1, -1, -1, + 4371, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4431, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4492, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4528, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4616, 4617, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4632, 4633, 4634, -1, -1, -1, -1, -1, -1, + -1, 4642, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4670, + 4671, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4683, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4839, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4853, -1, -1, 4856, -1, -1, -1, 4860, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4910, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5020, + -1, 5022, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5052, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5104, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5130, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5189, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5218, 5219, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5230, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, 5262, 5263, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, 5288, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, 460, -1, + -1, -1, -1, -1, -1, 467, 468, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, + -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, + -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, + 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, + 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, + -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, + 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, + 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, + -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, + -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, -1, 290, 291, 292, 293, 294, 295, + 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + -1, 327, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, -1, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + 386, 387, -1, -1, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, + 406, 407, 408, 409, 410, -1, 412, 413, 414, 415, + 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, + -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, -1, 453, -1, -1, + -1, -1, 458, 459, -1, -1, -1, -1, -1, -1, + -1, 467, 468, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, 34, -1, -1, 37, 38, -1, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, 72, -1, 74, 75, 76, 77, 78, 79, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, 161, -1, 163, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, -1, -1, 217, 218, 219, + 220, 221, -1, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, + 410, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, 421, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, -1, -1, -1, -1, -1, -1, 458, 459, + -1, -1, -1, -1, -1, -1, -1, 467, 468, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, + 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, + 34, -1, -1, 37, 38, -1, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, -1, 66, 67, 68, 69, 70, -1, 72, -1, + 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, -1, + 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, + 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, -1, 153, + 154, 155, 156, -1, 158, -1, 160, 161, -1, 163, + 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, + -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, 200, 201, -1, 203, + -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, -1, -1, 217, 218, 219, 220, 221, -1, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, + 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, + 294, 295, 296, 297, -1, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, -1, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, -1, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + -1, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, -1, 386, 387, -1, -1, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, + 404, 405, 406, 407, 408, 409, 410, -1, 412, 413, + 414, 415, 416, 417, 418, -1, 420, 421, 422, 423, + 424, 425, -1, -1, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, -1, -1, + -1, -1, -1, -1, 458, 459, -1, -1, -1, -1, + -1, -1, -1, 467, 468, 3, 4, 5, 6, 7, + 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, + 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, + 28, 29, -1, -1, -1, -1, 34, -1, -1, 37, + 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, -1, 66, 67, + 68, 69, 70, -1, 72, -1, 74, 75, 76, 77, + 78, 79, 80, 81, 82, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, -1, 114, 115, 116, 117, + 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, + 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, -1, 153, 154, 155, 156, -1, + 158, -1, 160, 161, -1, 163, 164, 165, 166, 167, + -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, -1, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, 200, 201, -1, 203, -1, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, -1, -1, 217, + 218, 219, 220, 221, -1, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, + 268, 269, 270, -1, -1, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, -1, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, -1, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, + -1, -1, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, + 408, 409, 410, -1, 412, 413, 414, 415, 416, 417, + 418, -1, 420, 421, 422, 423, 424, 425, -1, -1, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, -1, -1, 3, -1, -1, -1, + 458, 459, -1, -1, -1, -1, -1, -1, -1, 467, + 468, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, 35, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, -1, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 468, 18, 19, 20, 21, 22, 23, 24, 25, + -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, + -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, -1, 53, 54, 55, + 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, + 66, 67, 68, 69, -1, -1, 72, -1, 74, 75, + 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, + -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, + 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, + 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, + -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, 144, -1, + 146, 147, 148, -1, -1, 151, -1, 153, 154, 155, + 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, + 166, 167, -1, 169, -1, -1, -1, 173, -1, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, + -1, 217, -1, 219, 220, 221, -1, 223, 224, 225, + -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, -1, -1, 252, 253, 254, 255, + -1, -1, 258, 259, 260, 261, 262, -1, 264, 265, + -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, + 276, 277, -1, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, -1, 290, 291, -1, 293, -1, 295, + 296, 297, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + -1, 327, 328, 329, 330, 331, 332, -1, 334, 335, + 336, 337, 338, 339, 340, 341, 342, -1, 344, 345, + 346, 347, 348, -1, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, -1, -1, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, -1, + 386, 387, -1, -1, 390, 391, -1, 393, -1, -1, + 396, 397, 398, 399, 400, 401, 402, -1, -1, 405, + 406, 407, 408, 409, -1, -1, 412, 413, 414, 415, + 416, -1, 418, 419, 420, 421, 422, 423, 424, 425, + -1, -1, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 448, 449, 450, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 468, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, -1, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, -1, 146, 147, 148, -1, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, -1, -1, + -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, -1, 219, 220, 221, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, -1, -1, + 252, 253, 254, 255, -1, -1, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, -1, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + -1, 293, -1, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, -1, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, -1, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + -1, 393, -1, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, -1, 418, 419, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, -1, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, 448, 449, 450, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, 468, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, 453, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + 162, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, 216, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, 465, 466, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, 460, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + 162, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, -1, -1, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, -1, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + -1, -1, -1, -1, -1, 467, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, -1, -1, -1, -1, + -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, + 467, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, 34, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, -1, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, + 3, 4, 5, 6, 7, 467, 9, 10, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, 34, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, -1, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, -1, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, -1, 255, 256, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 3, -1, -1, -1, -1, 458, 459, -1, -1, -1, + -1, -1, -1, -1, 467, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, 267, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, 410, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 467, -1, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, 267, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, 59, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, 410, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, 4, 5, -1, -1, -1, 9, -1, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, 266, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 3, -1, -1, -1, -1, 458, 459, 460, -1, + -1, -1, -1, -1, -1, 467, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, + -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, + 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, 421, + 422, 423, 424, 425, -1, -1, 428, -1, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 467, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, 377, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 467, -1, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 467, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, -1, -1, -1, 3, 4, 5, -1, + -1, 8, 9, -1, -1, -1, -1, 467, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, -1, 146, + 147, 148, -1, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, -1, 171, -1, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, -1, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + -1, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, 289, 290, 291, -1, 293, -1, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, -1, 393, -1, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + -1, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 448, 449, 450, -1, -1, -1, 454, 455, 456, + -1, 458, 459, 460, 461, 462, 463, 3, 4, 5, + -1, -1, 8, 9, -1, -1, -1, -1, -1, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, -1, + 146, 147, 148, -1, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, -1, 171, -1, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, -1, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, -1, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, + 276, 277, -1, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, 290, 291, -1, 293, -1, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, -1, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, -1, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, -1, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 448, 449, 450, -1, 3, -1, 454, 455, + 456, 8, 458, 459, 460, 461, 462, 463, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, 3, -1, 454, 455, 456, + 8, 458, 459, 460, 461, 462, 463, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, + 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, + 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, + 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, + -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, + 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, + 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, + 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, + -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, + 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, + 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, + 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, + 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, + 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, + -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, + 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, + 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, + 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, + 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, + 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, + 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, + 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, + 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, -1, 290, 291, 292, 293, 294, 295, 296, 297, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, -1, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, -1, 327, + 328, -1, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, -1, 344, 345, 346, 347, + 348, -1, 350, 351, 352, 353, 354, -1, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, -1, 375, 376, -1, + 378, -1, 380, 381, 382, 383, 384, -1, 386, 387, + -1, -1, 390, 391, 392, 393, 394, -1, 396, 397, + 398, 399, 400, 401, 402, -1, -1, 405, 406, 407, + 408, 409, -1, -1, 412, 413, 414, 415, 416, 417, + 418, -1, 420, -1, 422, 423, 424, 425, -1, -1, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, -1, 3, -1, 454, 455, 456, 8, + 458, 459, 460, 461, 462, 463, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, -1, 3, -1, 454, 455, 456, 8, 458, + 459, 460, 461, 462, 463, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, + 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, + 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, + 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, + -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, + 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, + 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, + 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, + 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, + 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, + 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, + 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, + 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, + 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, + 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, 327, 328, -1, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, -1, 344, 345, 346, 347, 348, -1, + 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, -1, 375, 376, -1, 378, -1, + 380, 381, 382, 383, 384, -1, 386, 387, -1, -1, + 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, -1, 405, 406, 407, 408, 409, + -1, -1, 412, 413, 414, 415, 416, 417, 418, -1, + 420, -1, 422, 423, 424, 425, -1, -1, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, 3, -1, 454, 455, 456, 8, 458, 459, + 460, 461, 462, 463, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, 3, -1, 454, 455, 456, 8, 458, 459, 460, + 461, 462, 463, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, + 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, + -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, + 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, + 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, + 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, + -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, + -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, + 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, + 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, + -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, + -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, + 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, + -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, + 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, + 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, + -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, -1, -1, 290, 291, + 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, -1, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, 327, 328, -1, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, -1, 344, 345, 346, 347, 348, -1, 350, 351, + 352, 353, 354, -1, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, -1, 375, 376, -1, 378, -1, 380, 381, + 382, 383, 384, -1, 386, 387, -1, -1, 390, 391, + 392, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, -1, 405, 406, 407, 408, 409, -1, -1, + 412, 413, 414, 415, 416, 417, 418, -1, 420, -1, + 422, 423, 424, 425, -1, -1, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + 3, -1, 454, 455, 456, 8, 458, 459, 460, 461, + 462, 463, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, 454, 455, 456, -1, 458, 459, 460, 461, 462, + 463, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, 460, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, 460, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, 460, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, + -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, + -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, 272, 273, 274, 275, 276, 277, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, -1, 418, 419, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 460, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, + 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, + -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, 272, 273, 274, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, -1, 393, -1, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + -1, 418, 419, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 3, 4, 5, -1, -1, -1, 9, -1, -1, -1, + -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, + 23, 24, 25, 460, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, 266, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, 4, + 5, -1, -1, -1, 9, 458, 459, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, 266, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, 4, 5, -1, + -1, -1, 9, 458, 459, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, 266, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, 5, -1, -1, -1, + 9, 458, 459, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, 266, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, 9, 458, + 459, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, 162, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, 4, 5, -1, -1, -1, 9, 458, 459, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + 59, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, 410, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, 266, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, 30, 31, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, 5, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, -1, -1, 73, 74, + 75, 76, 77, 78, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, 159, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, 404, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, 159, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, 90, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, 168, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, 90, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, 168, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, 159, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, 90, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, 159, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + 377, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, 90, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, 30, 31, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, 410, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + 267, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, 377, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, 5, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, 35, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, 35, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, 35, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, -1, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, + 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, + 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, + 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, + -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, + 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, 292, 293, 294, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, -1, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + -1, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, -1, + 375, 376, -1, 378, -1, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, 392, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, 417, 418, -1, 420, -1, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, + 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, + 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, + -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, + 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, + 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, + 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, 292, 293, 294, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, -1, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, -1, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, -1, 375, 376, + -1, 378, -1, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, 392, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + 417, 418, -1, 420, -1, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, + -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, + -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, + 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, + -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, + -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, + 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, 292, 293, 294, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, -1, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, -1, 375, 376, -1, 378, + -1, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, 417, 418, + -1, 420, -1, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, + 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, 292, + 293, 294, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, -1, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, 392, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, 417, 418, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, -1, -1, 252, 253, 254, + 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, + 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, -1, 418, 419, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, + -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, + -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, + 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, + -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, + -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, -1, 330, + 331, 332, 333, -1, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, -1, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, -1, 375, 376, -1, 378, -1, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, 392, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, 417, 418, -1, 420, + -1, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, -1, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, -1, -1, -1, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, -1, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, -1, -1, 252, + 253, 254, 255, 256, -1, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, -1, 275, 276, 277, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, + 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + -1, -1, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, -1, + 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 448, 449, 450, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, + -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, -1, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, -1, 252, 253, 254, 255, -1, -1, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, -1, 275, 276, 277, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, -1, 293, -1, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, -1, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, -1, 393, -1, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, + 449, 450, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + -1, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, + 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, -1, + 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, + 151, -1, 153, 154, 155, 156, 157, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, + -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, -1, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, + -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, -1, 275, 276, 277, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, + 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, + 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, -1, 196, + 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, + -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, -1, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, -1, -1, 390, 391, -1, 393, -1, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, + 63, 64, -1, 66, 67, 68, 69, -1, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, + 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, + 163, 164, 165, 166, 167, -1, 169, -1, -1, -1, + 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, + 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, -1, -1, 217, -1, 219, 220, 221, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, -1, -1, 252, + 253, 254, 255, -1, -1, 258, 259, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, -1, 275, 276, 277, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, + 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, 329, 330, 331, 332, + -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + -1, -1, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, -1, -1, 390, 391, -1, + 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 448, 449, 450, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, + 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, + -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, + 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, + 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, + -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, + -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, + 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 189, 190, 191, -1, 193, 194, -1, 196, 197, 198, + 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, + 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, -1, -1, 252, 253, 254, 255, -1, -1, 258, + 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, + 269, 270, -1, -1, 273, -1, 275, 276, 277, -1, + 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, + -1, 290, 291, -1, 293, -1, 295, 296, 297, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -1, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, 327, 328, + 329, 330, 331, 332, -1, 334, 335, 336, 337, 338, + 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, + -1, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, -1, -1, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, -1, 386, 387, -1, + -1, 390, 391, -1, 393, -1, -1, 396, 397, 398, + 399, 400, 401, 402, -1, -1, 405, 406, 407, 408, + 409, -1, -1, 412, 413, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, 425, -1, -1, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, + 449, 450, -1, 18, 19, 20, 21, 22, 23, 24, + 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, + -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, + -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, + 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, + 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, + -1, 196, 197, 198, 199, 200, 201, -1, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, + 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, -1, -1, 252, 253, 254, + 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, + 265, -1, -1, 268, 269, 270, -1, -1, 273, -1, + 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, -1, 290, 291, -1, 293, -1, + 295, 296, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, -1, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, 327, 328, 329, 330, 331, 332, -1, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, + 345, 346, 347, 348, -1, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, -1, -1, 390, 391, -1, 393, -1, + -1, 396, 397, 398, 399, 400, 401, 402, -1, -1, + 405, 406, 407, 408, 409, -1, -1, 412, 413, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + 425, -1, -1, 428, -1, -1, 431, 432, 433, 434, + 435, 436, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 448, 449, 450, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, + 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, + 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, + 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, + -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, + 191, -1, 193, 194, -1, 196, 197, 198, 199, 200, + 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, + 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, + -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, + 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, + -1, -1, 273, -1, 275, 276, 277, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, -1, -1, 290, + 291, -1, 293, -1, 295, 296, 297, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, -1, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, 327, 328, 329, 330, + 331, 332, -1, 334, 335, 336, 337, 338, 339, 340, + 341, 342, -1, 344, 345, 346, 347, 348, -1, 350, + 351, -1, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, -1, -1, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, -1, 386, 387, -1, -1, 390, + 391, -1, 393, -1, -1, 396, 397, 398, 399, 400, + 401, 402, -1, -1, 405, 406, 407, 408, 409, -1, + -1, 412, 413, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, 425, -1, -1, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 448, 449, 450, + -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, + 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, + -1, -1, 49, -1, -1, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 61, -1, -1, 64, -1, 66, + 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, + -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, + 107, -1, -1, 110, -1, 112, -1, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, + 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, + 147, 148, -1, -1, 151, -1, 153, 154, -1, 156, + -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, + 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, + 187, 188, 189, 190, 191, -1, 193, 194, -1, 196, + 197, 198, 199, -1, -1, -1, -1, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, + 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, + -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, -1, 245, -1, + 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, + -1, 258, -1, 260, 261, 262, -1, 264, 265, -1, + -1, 268, 269, 270, -1, -1, 273, -1, 275, 276, + 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, + 287, -1, -1, 290, 291, -1, 293, -1, 295, 296, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, -1, 309, 310, 311, 312, -1, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + 327, 328, 329, 330, 331, 332, -1, 334, 335, 336, + 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, + 347, 348, -1, 350, 351, -1, 353, 354, 355, 356, + 357, -1, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, -1, -1, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, -1, -1, + -1, -1, -1, 390, 391, -1, 393, -1, -1, 396, + 397, 398, 399, 400, 401, 402, -1, -1, 405, 406, + 407, 408, 409, -1, -1, 412, 413, 414, 415, 416, + -1, -1, -1, 420, 421, 422, 423, 424, 425, -1, + -1, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 448, 449, 450, -1, 18, 19, 20, 21, 22, + 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, + -1, 44, 45, 46, -1, -1, -1, -1, -1, -1, + 53, 54, 55, 56, 57, -1, -1, 60, 61, -1, + -1, 64, -1, 66, 67, 68, 69, -1, -1, -1, + -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, + -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, -1, -1, 110, -1, 112, + -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, + 153, 154, -1, 156, -1, 158, -1, 160, -1, -1, + -1, 164, 165, 166, 167, -1, 169, -1, -1, -1, + 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, + 193, -1, -1, 196, 197, 198, 199, -1, -1, -1, + -1, -1, 205, -1, -1, 208, -1, 210, 211, 212, + 213, 214, -1, -1, 217, -1, -1, 220, -1, -1, + 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, -1, -1, -1, 247, 248, 249, -1, -1, 252, + 253, -1, 255, -1, -1, 258, -1, 260, 261, 262, + -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, + 273, -1, -1, 276, -1, -1, 279, 280, 281, 282, + 283, 284, 285, 286, 287, -1, -1, 290, 291, -1, + 293, -1, 295, 296, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, -1, 309, 310, 311, 312, + -1, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, 327, 328, -1, 330, 331, 332, + -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, + -1, 344, 345, 346, 347, 348, -1, 350, 351, -1, + 353, 354, -1, 356, 357, -1, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + -1, -1, 375, 376, -1, 378, -1, 380, 381, 382, + 383, 384, -1, -1, -1, -1, -1, 390, 391, -1, + 393, -1, -1, 396, 397, 398, 399, 400, 401, 402, + -1, -1, 405, 406, 407, 408, 409, -1, -1, 412, + 413, 414, 415, 416, -1, -1, -1, 420, -1, 422, + 423, 424, 425, -1, -1, 428, -1, -1, 431, 432, + 433, 434, 435, 436, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 448, 449, 450 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = { - 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 5, - 1, 1, 0, 2, 0, 2, 0, 2, 2, 3, - 3, 1, 3, 3, 2, 1, 1, 2, 2, 2, - 3, 3, 5, 5, 5, 0, 3, 5, 5, 5, - 5, 3, 5, 3, 5, 3, 5, 5, 6, 1, - 1, 6, 4, 9, 7, 1, 0, 2, 0, 1, - 1, 1, 1, 1, 1, 3, 2, 3, 3, 2, - 5, 1, 3, 3, 3, 3, 1, 3, 3, 2, - 2, 2, 2, 3, 3, 3, 3, 1, 3, 1, - 3, 1, 1, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, - 0, 1, 1, 2, 3, 1, 2, 3, 2, 1, - 1, 2, 1, 2, 1, 3, 3, 2, 3, 4, - 3, 2, 4, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 4, 6, 4, 6, 10, 13, 4, - 6, 10, 13, 4, 6, 4, 6, 5, 7, 11, - 14, 1, 3, 4, 3, 2, 5, 3, 6, 4, - 6, 6, 6, 5, 5, 6, 9, 4, 5, 7, - 6, 4, 8, 4, 2, 4, 3, 6, 4, 3, - 3, 3, 3, 2, 2, 3, 4, 4, 3, 3, - 3, 3, 3, 3, 4, 4, 3, 2, 3, 2, - 2, 3, 3, 2, 2, 3, 4, 4, 4, 5, - 1, 3, 2, 1, 1, 0, 2, 0, 2, 0, - 1, 1, 1, 3, 3, 2, 0, 1, 3, 3, - 1, 5, 3, 1, 2, 1, 3, 2, 3, 6, - 10, 1, 1, 1, 1, 3, 1, 3, 1, 1, - 1, 4, 1, 3, 4, 6, 4, 8, 2, 2, - 11, 9, 1, 1, 1, 0, 1, 1, 1, 1, - 3, 2, 0, 1, 1, 1, 3, 3, 1, 1, - 3, 3, 3, 3, 4, 3, 2, 1, 0, 2, - 0, 3, 0, 1, 0, 1, 3, 2, 1, 1, - 1, 3, 0, 1, 3, 1, 12, 15, 11, 14, - 13, 16, 1, 1, 2, 2, 2, 2, 1, 0, - 1, 0, 3, 0, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 4, 2, 4, 2, 0, 3, 1, - 1, 2, 2, 1, 3, 4, 5, 2, 5, 5, - 1, 2, 1, 2, 2, 2, 3, 3, 3, 0, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 5, - 7, 3, 8, 4, 9, 11, 2, 0, 3, 0, - 1, 3, 1, 2, 2, 2, 0, 1, 3, 3, - 6, 4, 0, 1, 1, 2, 2, 0, 3, 3, - 2, 1, 1, 2, 2, 4, 0, 1, 0, 6, - 1, 1, 1, 3, 3, 3, 5, 2, 2, 2, - 0, 3, 4, 4, 0, 2, 0, 4, 0, 3, - 8, 11, 7, 10, 5, 2, 3, 0, 8, 11, - 4, 1, 0, 6, 5, 8, 4, 6, 1, 0, - 3, 0, 1, 2, 2, 2, 1, 2, 3, 2, - 2, 2, 2, 3, 3, 3, 1, 3, 1, 0, - 1, 2, 2, 1, 1, 3, 6, 10, 1, 0, - 1, 2, 2, 0, 2, 2, 1, 0, 5, 7, - 1, 0, 7, 2, 0, 3, 5, 5, 8, 2, - 0, 2, 2, 2, 1, 5, 2, 0, 2, 7, - 6, 10, 6, 6, 6, 6, 7, 6, 9, 9, - 6, 7, 6, 8, 8, 8, 8, 6, 6, 7, - 7, 8, 6, 9, 6, 7, 2, 2, 2, 2, - 1, 2, 1, 0, 7, 6, 4, 0, 1, 3, - 4, 1, 3, 1, 2, 2, 2, 2, 1, 1, - 10, 13, 2, 0, 2, 2, 1, 0, 5, 4, - 4, 11, 14, 12, 15, 5, 7, 11, 2, 1, - 4, 0, 8, 11, 1, 1, 7, 9, 8, 10, - 8, 4, 0, 5, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 1, 1, 1, 1, 1, 8, 16, - 20, 1, 1, 2, 1, 3, 1, 1, 1, 3, - 1, 2, 0, 1, 2, 4, 1, 1, 1, 1, - 1, 3, 0, 1, 0, 1, 1, 4, 0, 1, - 3, 0, 1, 1, 1, 1, 2, 0, 0, 2, - 2, 1, 2, 2, 2, 2, 11, 13, 1, 3, - 5, 1, 3, 5, 1, 2, 2, 1, 8, 4, - 5, 4, 4, 4, 3, 7, 8, 6, 6, 6, - 6, 6, 4, 7, 5, 8, 3, 1, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, - 3, 1, 0, 1, 3, 7, 9, 9, 8, 3, - 0, 13, 1, 3, 5, 5, 3, 6, 2, 1, - 0, 2, 0, 2, 4, 0, 1, 0, 6, 8, - 8, 1, 3, 5, 5, 7, 9, 7, 9, 5, - 6, 6, 4, 6, 4, 6, 8, 4, 6, 4, - 6, 5, 7, 1, 1, 1, 2, 1, 2, 1, - 1, 1, 3, 3, 3, 3, 2, 2, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, - 2, 3, 1, 3, 5, 2, 2, 0, 6, 6, - 6, 6, 6, 6, 6, 8, 9, 8, 8, 9, - 8, 9, 9, 7, 10, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 2, 3, 3, 3, 3, 2, - 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 8, 8, 8, 8, 8, 8, 9, - 2, 0, 1, 2, 1, 1, 1, 2, 1, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 1, 2, 3, 3, 3, 3, 4, 4, 3, 3, - 3, 4, 4, 3, 4, 4, 1, 1, 1, 0, - 7, 7, 10, 1, 1, 2, 4, 5, 1, 3, - 2, 2, 2, 2, 1, 2, 2, 4, 3, 2, - 2, 2, 2, 3, 2, 2, 2, 5, 5, 5, - 1, 3, 1, 2, 3, 0, 6, 6, 9, 3, - 0, 3, 0, 5, 2, 0, 3, 3, 3, 7, - 7, 10, 1, 1, 1, 1, 1, 14, 17, 1, - 0, 1, 0, 1, 0, 2, 0, 1, 3, 5, - 5, 7, 2, 0, 1, 0, 1, 1, 0, 2, - 2, 0, 9, 12, 7, 2, 0, 3, 2, 1, - 3, 1, 3, 2, 1, 1, 2, 3, 2, 1, - 3, 3, 3, 2, 2, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 4, 5, 1, 3, 3, 1, - 3, 3, 5, 6, 1, 3, 2, 1, 3, 1, - 2, 4, 5, 1, 1, 1, 1, 3, 3, 2, - 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, - 1, 1, 1, 3, 3, 5, 2, 0, 2, 1, - 3, 5, 1, 2, 1, 0, 4, 6, 4, 6, - 4, 6, 3, 5, 5, 5, 1, 3, 1, 3, - 2, 2, 1, 2, 1, 2, 11, 10, 10, 2, - 2, 0, 9, 2, 0, 10, 11, 11, 5, 5, - 8, 3, 3, 6, 6, 1, 1, 1, 1, 1, - 1, 3, 1, 5, 5, 6, 6, 6, 6, 6, - 8, 8, 6, 6, 7, 9, 9, 8, 10, 6, - 6, 6, 6, 6, 8, 6, 8, 6, 8, 7, - 9, 6, 8, 7, 9, 8, 10, 9, 11, 8, - 10, 9, 11, 8, 8, 7, 6, 6, 6, 6, - 8, 8, 8, 8, 6, 9, 1, 0, 2, 0, - 7, 9, 8, 7, 6, 6, 6, 6, 6, 6, - 6, 9, 9, 6, 8, 6, 8, 8, 8, 8, - 6, 8, 6, 8, 7, 9, 7, 9, 6, 7, - 1, 3, 3, 3, 1, 1, 1, 1, 1, 6, - 6, 6, 6, 6, 6, 7, 7, 6, 9, 9, - 6, 6, 6, 6, 8, 8, 8, 6, 7, 6, - 6, 5, 1, 0, 3, 3, 5, 6, 6, 6, - 8, 1, 3, 1, 5, 5, 6, 7, 4, 4, - 4, 6, 13, 1, 1, 3, 3, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - 1, 0, 3, 2, 0, 2, 2, 2, 2, 3, - 3, 2, 2, 2, 2, 3, 2, 5, 4, 3, - 3, 3, 1, 1, 0, 3, 2, 2, 1, 2, - 1, 3, 2, 1, 0, 9, 11, 12, 14, 3, - 4, 4, 0, 2, 5, 1, 0, 1, 2, 3, - 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, - 0, 5, 4, 6, 4, 3, 5, 5, 4, 4, - 6, 4, 6, 6, 5, 7, 9, 6, 1, 0, - 6, 11, 11, 11, 13, 9, 11, 1, 1, 10, - 4, 2, 5, 2, 0, 4, 5, 5, 4, 6, - 1, 3, 1, 1, 1, 1, 1, 2, 4, 1, - 1, 1, 0, 1, 0, 1, 0, 3, 0, 2, - 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 1, 1, 1, 1, 0, - 5, 3, 0, 1, 1, 1, 1, 3, 9, 3, - 0, 2, 3, 2, 3, 7, 1, 3, 1, 4, - 4, 7, 2, 1, 1, 1, 3, 2, 8, 5, - 0, 4, 3, 0, 2, 0, 7, 2, 0, 5, - 3, 0, 2, 2, 2, 3, 1, 3, 1, 2, - 1, 0, 1, 2, 0, 8, 1, 3, 3, 5, - 2, 1, 3, 7, 1, 0, 3, 2, 2, 2, - 0, 2, 2, 1, 1, 3, 3, 1, 2, 4, - 4, 2, 3, 5, 5, 1, 1, 9, 9, 1, - 2, 4, 4, 4, 2, 2, 3, 1, 3, 6, - 1, 0, 2, 0, 3, 3, 4, 4, 4, 4, - 3, 2, 1, 1, 0, 1, 1, 0, 1, 5, - 1, 0, 1, 0, 3, 1, 3, 4, 3, 2, - 2, 1, 1, 1, 0, 2, 4, 5, 2, 3, - 1, 1, 1, 1, 3, 0, 1, 1, 1, 1, - 1, 3, 0, 1, 3, 1, 1, 1, 1, 1, - 2, 4, 4, 5, 2, 0, 1, 3, 1, 0, - 1, 2, 3, 2, 4, 2, 3, 2, 0, 4, - 5, 2, 0, 1, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 1, 4, 3, 4, 5, 4, 5, - 4, 5, 2, 4, 1, 1, 0, 1, 4, 5, - 4, 0, 2, 2, 2, 1, 1, 0, 4, 2, - 1, 2, 2, 4, 1, 3, 1, 2, 3, 6, - 4, 0, 2, 6, 2, 1, 3, 4, 0, 2, - 0, 2, 0, 2, 4, 0, 1, 0, 1, 3, - 3, 7, 12, 1, 3, 2, 3, 3, 1, 2, - 2, 2, 2, 1, 1, 3, 3, 2, 2, 3, - 5, 6, 2, 3, 3, 4, 0, 1, 1, 1, - 1, 1, 2, 4, 1, 1, 1, 1, 2, 3, - 3, 0, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 1, 3, 0, 1, 1, 1, 1, 5, - 2, 1, 1, 1, 1, 4, 1, 2, 2, 1, - 3, 3, 2, 1, 0, 5, 2, 5, 2, 1, - 3, 3, 0, 1, 1, 1, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 3, 0, 1, 4, 1, - 3, 3, 5, 2, 2, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 3, 3, 2, 2, 3, 5, 4, 6, 3, 5, - 4, 6, 4, 6, 5, 7, 3, 2, 4, 2, - 3, 3, 4, 3, 4, 3, 4, 5, 6, 6, - 7, 6, 7, 6, 7, 3, 4, 4, 6, 2, - 3, 4, 1, 1, 3, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 5, 6, 6, 7, 3, 4, 1, 1, - 2, 4, 1, 1, 1, 2, 2, 2, 2, 1, - 1, 4, 3, 5, 6, 8, 6, 6, 4, 4, - 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, - 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, - 4, 4, 4, 4, 6, 5, 5, 5, 4, 6, - 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, - 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, - 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, - 0, 2, 4, 4, 6, 5, 0, 5, 0, 2, - 0, 1, 3, 3, 2, 2, 0, 6, 1, 0, - 3, 0, 2, 2, 0, 1, 4, 2, 2, 2, - 2, 2, 4, 3, 5, 4, 3, 5, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, - 4, 1, 2, 1, 2, 1, 3, 1, 3, 1, - 3, 3, 1, 3, 3, 3, 2, 1, 3, 3, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 3, 2, 3, 0, 3, 3, 2, 2, 1, 0, - 2, 2, 3, 2, 1, 1, 3, 5, 1, 2, - 4, 2, 0, 1, 0, 1, 2, 2, 2, 3, - 5, 1, 0, 1, 2, 0, 2, 1, 0, 1, - 0, 1, 3, 3, 2, 1, 1, 1, 3, 1, - 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 1, 1, 1, 2, 6, 2, 3, - 5, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1 + 0, 18, 28, 30, 31, 46, 66, 68, 69, 75, + 77, 88, 90, 107, 110, 124, 126, 130, 136, 144, + 146, 152, 168, 184, 223, 224, 229, 241, 253, 288, + 296, 309, 315, 316, 318, 323, 328, 331, 336, 342, + 343, 350, 354, 364, 377, 396, 406, 412, 417, 430, + 453, 467, 474, 475, 476, 477, 483, 484, 486, 487, + 488, 489, 491, 495, 507, 512, 513, 516, 517, 518, + 538, 541, 542, 558, 601, 602, 605, 608, 609, 610, + 618, 624, 626, 628, 629, 632, 635, 636, 640, 649, + 653, 654, 655, 656, 659, 661, 662, 663, 664, 672, + 673, 692, 696, 698, 699, 700, 710, 712, 719, 720, + 723, 724, 725, 726, 727, 735, 737, 741, 746, 750, + 751, 759, 760, 763, 768, 779, 806, 809, 810, 811, + 816, 819, 821, 823, 825, 826, 831, 832, 835, 836, + 837, 841, 842, 845, 846, 849, 850, 851, 858, 860, + 861, 862, 867, 869, 870, 876, 877, 878, 879, 880, + 881, 882, 884, 885, 887, 888, 890, 893, 894, 899, + 905, 908, 910, 911, 920, 922, 927, 932, 936, 937, + 938, 939, 940, 941, 944, 979, 390, 433, 863, 25, + 72, 87, 105, 111, 128, 139, 147, 159, 164, 171, + 188, 213, 234, 268, 291, 301, 304, 330, 335, 337, + 344, 347, 366, 372, 376, 377, 380, 384, 393, 398, + 410, 423, 625, 863, 3, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 37, 38, 40, + 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, + 54, 55, 56, 57, 60, 61, 62, 63, 64, 66, + 67, 68, 69, 70, 74, 75, 76, 77, 78, 80, + 81, 82, 84, 85, 86, 87, 88, 89, 92, 93, + 94, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 112, 114, 115, 116, 117, 118, 119, 121, 122, 123, + 124, 127, 128, 129, 130, 131, 133, 134, 135, 137, + 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 151, 153, 154, 155, 156, 158, 160, 164, 165, + 166, 167, 169, 170, 172, 173, 175, 176, 177, 178, + 179, 181, 182, 183, 184, 186, 187, 188, 189, 190, + 191, 193, 195, 196, 197, 198, 199, 200, 201, 203, + 205, 208, 210, 211, 212, 213, 214, 217, 218, 220, + 223, 224, 225, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 246, 247, 248, 249, 250, 252, 253, 255, 257, 258, + 259, 260, 261, 262, 264, 265, 268, 269, 270, 273, + 274, 276, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 290, 291, 292, 293, 294, 295, 296, 297, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 327, 328, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 344, 345, 346, 347, 348, 350, 351, 352, 353, + 354, 356, 357, 358, 359, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 375, 376, + 378, 380, 381, 382, 383, 384, 386, 387, 390, 391, + 392, 393, 394, 396, 397, 398, 399, 400, 401, 402, + 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, + 417, 418, 420, 422, 423, 424, 425, 428, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 933, 1104, + 1118, 1122, 1123, 421, 895, 266, 297, 863, 49, 467, + 549, 20, 25, 37, 59, 72, 83, 105, 111, 128, + 139, 147, 159, 167, 171, 225, 268, 271, 291, 304, + 330, 337, 347, 366, 372, 380, 381, 383, 384, 393, + 398, 404, 407, 410, 559, 607, 715, 769, 780, 26, + 296, 1104, 933, 26, 290, 345, 381, 383, 5, 212, + 817, 818, 1113, 20, 25, 37, 59, 72, 87, 105, + 128, 139, 147, 159, 164, 171, 188, 234, 268, 280, + 291, 304, 330, 335, 337, 344, 347, 366, 372, 377, + 380, 384, 391, 393, 398, 410, 423, 625, 728, 729, + 730, 863, 1104, 90, 421, 467, 602, 605, 608, 894, + 900, 908, 911, 920, 927, 932, 936, 9, 19, 26, + 44, 154, 160, 162, 185, 214, 248, 299, 317, 458, + 459, 747, 748, 933, 1112, 1114, 26, 90, 313, 343, + 752, 753, 754, 1118, 159, 1118, 1109, 1113, 377, 947, + 747, 1118, 323, 350, 354, 390, 1104, 280, 234, 105, + 188, 337, 376, 377, 467, 827, 828, 336, 1118, 26, + 348, 386, 390, 499, 508, 509, 1118, 23, 168, 752, + 753, 297, 863, 1118, 211, 26, 125, 949, 950, 60, + 84, 225, 243, 330, 337, 348, 386, 390, 436, 496, + 497, 498, 499, 26, 348, 386, 390, 499, 390, 267, + 990, 1102, 1118, 947, 460, 1118, 163, 467, 896, 467, + 311, 942, 943, 1104, 942, 937, 938, 941, 0, 470, + 895, 140, 202, 272, 403, 951, 952, 937, 939, 940, + 116, 198, 409, 471, 3, 43, 49, 72, 79, 91, + 98, 161, 163, 180, 194, 206, 207, 209, 219, 221, + 245, 254, 275, 277, 329, 355, 379, 421, 796, 1110, + 1118, 1119, 1122, 1124, 732, 1118, 732, 1105, 1118, 300, + 732, 393, 1104, 104, 377, 784, 1110, 1118, 1124, 3, + 101, 349, 1115, 1116, 1120, 1122, 1123, 1124, 26, 179, + 1102, 260, 423, 8, 15, 16, 17, 67, 151, 454, + 455, 456, 458, 459, 460, 461, 462, 463, 813, 815, + 1066, 1067, 1118, 179, 1104, 1104, 26, 1115, 1116, 1104, + 1104, 179, 1102, 1104, 732, 1104, 323, 350, 26, 179, + 990, 1104, 340, 1104, 732, 26, 232, 1115, 1116, 179, + 1102, 212, 113, 208, 251, 307, 864, 865, 866, 1102, + 1108, 1118, 20, 25, 59, 72, 73, 83, 87, 105, + 128, 139, 147, 159, 164, 188, 213, 234, 268, 291, + 304, 330, 335, 337, 344, 347, 366, 372, 377, 380, + 384, 391, 393, 398, 423, 625, 738, 739, 1113, 907, + 911, 920, 927, 936, 1102, 236, 1110, 1104, 467, 179, + 732, 393, 1105, 732, 393, 179, 1104, 104, 377, 381, + 383, 1115, 1116, 381, 383, 67, 151, 813, 321, 1104, + 1104, 1115, 179, 492, 1118, 179, 1104, 179, 732, 1104, + 1104, 340, 1104, 732, 232, 1115, 311, 344, 377, 423, + 234, 87, 188, 164, 335, 391, 397, 619, 26, 1104, + 934, 506, 1113, 1120, 818, 236, 179, 796, 797, 1104, + 179, 822, 179, 1105, 3, 48, 50, 51, 62, 63, + 108, 109, 129, 155, 179, 200, 201, 203, 244, 246, + 259, 308, 352, 358, 386, 387, 418, 734, 1012, 1014, + 1016, 1018, 1020, 1022, 1023, 1024, 1026, 1027, 1028, 1030, + 1031, 1119, 1122, 393, 104, 377, 179, 783, 784, 179, + 1116, 1117, 79, 423, 67, 151, 179, 814, 815, 53, + 179, 1117, 179, 1104, 179, 1104, 340, 822, 179, 734, + 179, 232, 1117, 212, 179, 731, 732, 179, 1103, 1104, + 179, 1104, 467, 909, 559, 900, 417, 894, 901, 902, + 903, 1120, 895, 1114, 748, 749, 26, 749, 1114, 749, + 26, 749, 1114, 749, 749, 749, 1114, 1112, 1112, 933, + 749, 300, 467, 467, 579, 579, 579, 266, 388, 471, + 579, 337, 990, 991, 471, 859, 509, 497, 499, 26, + 499, 1113, 467, 906, 53, 423, 421, 829, 830, 1102, + 1104, 1118, 43, 450, 208, 469, 269, 269, 266, 162, + 1113, 388, 157, 742, 266, 4, 6, 7, 8, 10, + 34, 48, 50, 51, 58, 59, 62, 63, 70, 72, + 95, 96, 97, 98, 99, 100, 101, 108, 109, 111, + 145, 149, 150, 155, 170, 172, 200, 201, 203, 218, + 226, 227, 244, 246, 251, 256, 257, 259, 268, 278, + 292, 308, 333, 349, 358, 373, 386, 387, 392, 394, + 395, 404, 410, 418, 438, 439, 440, 441, 443, 444, + 445, 446, 451, 458, 459, 460, 467, 937, 1015, 1018, + 1021, 1022, 1023, 1025, 1026, 1027, 1030, 1031, 1035, 1037, + 1038, 1039, 1041, 1062, 1063, 1064, 1068, 1087, 1092, 1099, + 1100, 1110, 1111, 1112, 1113, 1118, 1098, 1099, 1113, 26, + 514, 1101, 1102, 348, 496, 111, 505, 1113, 506, 1113, + 43, 64, 496, 450, 359, 865, 269, 162, 388, 456, + 43, 450, 208, 866, 467, 1102, 460, 465, 469, 1093, + 1095, 991, 3, 161, 163, 421, 891, 892, 894, 161, + 897, 1035, 1071, 942, 471, 467, 898, 468, 468, 476, + 1102, 26, 125, 948, 948, 53, 948, 152, 157, 222, + 263, 955, 957, 958, 973, 975, 976, 977, 951, 952, + 162, 204, 990, 992, 467, 281, 319, 350, 467, 794, + 1095, 281, 315, 319, 350, 469, 733, 281, 319, 350, + 3, 82, 134, 228, 281, 288, 319, 350, 380, 382, + 430, 507, 510, 871, 872, 873, 874, 764, 22, 130, + 281, 319, 350, 414, 522, 1104, 22, 130, 350, 409, + 490, 434, 179, 990, 55, 89, 119, 148, 182, 217, + 251, 281, 282, 319, 327, 334, 342, 350, 362, 370, + 425, 507, 511, 799, 807, 467, 781, 1095, 319, 490, + 185, 145, 22, 28, 69, 119, 123, 130, 133, 158, + 190, 249, 251, 261, 270, 281, 319, 322, 323, 350, + 414, 519, 521, 643, 4, 458, 459, 616, 1114, 26, + 179, 1102, 732, 732, 467, 812, 281, 350, 469, 145, + 266, 22, 130, 281, 319, 350, 185, 485, 319, 430, + 453, 478, 485, 266, 281, 319, 145, 35, 54, 103, + 187, 235, 238, 249, 280, 319, 324, 344, 350, 364, + 519, 613, 614, 281, 319, 422, 643, 651, 281, 319, + 350, 82, 123, 133, 281, 315, 319, 350, 509, 497, + 185, 145, 41, 121, 319, 350, 519, 520, 281, 319, + 323, 350, 80, 122, 283, 382, 266, 22, 28, 130, + 281, 319, 350, 539, 540, 485, 157, 319, 478, 485, + 145, 319, 350, 519, 1104, 220, 113, 267, 435, 471, + 864, 411, 889, 266, 236, 796, 467, 1104, 1012, 393, + 104, 377, 784, 260, 423, 67, 151, 815, 1104, 1104, + 340, 157, 1104, 1012, 212, 732, 1104, 468, 579, 1104, + 467, 705, 794, 65, 1012, 251, 162, 467, 701, 1104, + 478, 35, 883, 1104, 251, 478, 434, 179, 1102, 478, + 732, 732, 701, 407, 559, 266, 157, 843, 844, 478, + 251, 43, 493, 251, 398, 650, 251, 898, 82, 281, + 627, 80, 122, 283, 382, 24, 45, 199, 674, 35, + 701, 157, 179, 478, 423, 179, 1102, 179, 603, 1102, + 1102, 423, 732, 79, 770, 1110, 1104, 157, 625, 49, + 102, 197, 249, 339, 145, 56, 325, 471, 523, 523, + 145, 467, 145, 420, 1029, 1029, 1029, 467, 1017, 1017, + 294, 467, 1019, 145, 62, 63, 1029, 1017, 1014, 432, + 453, 467, 1032, 467, 1032, 471, 523, 34, 1013, 467, + 106, 177, 237, 240, 341, 448, 467, 1033, 1034, 733, + 1017, 434, 145, 471, 523, 145, 471, 179, 731, 179, + 732, 179, 732, 145, 471, 523, 1117, 145, 145, 523, + 145, 80, 122, 283, 382, 157, 145, 523, 145, 157, + 179, 179, 506, 145, 471, 523, 145, 471, 523, 145, + 266, 1071, 377, 468, 471, 150, 266, 395, 503, 506, + 616, 904, 900, 749, 933, 749, 933, 749, 933, 749, + 933, 749, 933, 933, 933, 749, 933, 467, 580, 581, + 1118, 580, 26, 105, 128, 159, 164, 212, 213, 337, + 344, 377, 380, 398, 755, 1101, 1117, 754, 1104, 185, + 471, 923, 1113, 1012, 1074, 35, 1117, 770, 468, 471, + 220, 1118, 157, 157, 755, 1117, 336, 1118, 506, 266, + 467, 1096, 465, 937, 1075, 1035, 1091, 467, 467, 157, + 467, 467, 937, 467, 467, 467, 467, 467, 467, 1035, + 467, 467, 467, 467, 467, 467, 467, 467, 937, 467, + 467, 467, 467, 467, 467, 467, 467, 1035, 1035, 1035, + 937, 1035, 1071, 1095, 1113, 467, 1113, 3, 8, 11, + 15, 16, 17, 32, 35, 40, 47, 71, 180, 185, + 206, 207, 221, 254, 268, 271, 355, 451, 454, 455, + 456, 458, 459, 460, 461, 462, 463, 1066, 1068, 1070, + 431, 1050, 277, 1035, 204, 471, 945, 467, 1113, 1095, + 945, 114, 181, 515, 471, 64, 111, 506, 35, 3, + 111, 225, 504, 616, 1031, 1113, 1113, 85, 127, 1047, + 94, 111, 500, 501, 503, 616, 111, 500, 220, 1102, + 1035, 1094, 3, 26, 30, 31, 32, 33, 34, 35, + 36, 39, 52, 58, 59, 65, 71, 73, 83, 90, + 95, 96, 97, 99, 100, 101, 111, 113, 120, 125, + 126, 132, 136, 140, 150, 152, 157, 159, 162, 168, + 171, 174, 185, 192, 202, 204, 215, 216, 222, 226, + 227, 251, 256, 263, 266, 267, 271, 272, 289, 298, + 313, 326, 343, 349, 360, 374, 377, 385, 388, 389, + 395, 403, 404, 410, 411, 419, 426, 427, 429, 430, + 460, 1107, 1121, 1122, 1123, 1124, 1125, 1093, 86, 324, + 736, 468, 471, 895, 468, 471, 943, 1103, 35, 898, + 939, 939, 953, 954, 1035, 939, 154, 248, 964, 210, + 249, 307, 353, 409, 26, 959, 1035, 960, 962, 1035, + 1037, 973, 974, 958, 957, 955, 956, 157, 976, 261, + 978, 955, 973, 992, 912, 1102, 35, 1118, 350, 1071, + 388, 388, 337, 185, 195, 272, 274, 352, 419, 460, + 787, 788, 789, 791, 793, 795, 1012, 1119, 388, 422, + 388, 337, 1107, 469, 388, 388, 337, 222, 388, 388, + 380, 496, 281, 871, 873, 456, 875, 157, 168, 185, + 328, 765, 766, 65, 83, 141, 159, 298, 404, 576, + 577, 83, 111, 251, 388, 83, 388, 111, 251, 337, + 83, 123, 133, 281, 319, 697, 337, 633, 20, 25, + 59, 72, 87, 128, 139, 159, 164, 234, 268, 337, + 344, 347, 377, 384, 391, 398, 423, 625, 1104, 145, + 319, 350, 519, 266, 616, 266, 342, 217, 388, 1118, + 388, 256, 616, 115, 205, 337, 348, 390, 498, 325, + 350, 799, 808, 468, 782, 787, 388, 410, 380, 1102, + 73, 141, 179, 566, 576, 1118, 73, 83, 833, 266, + 266, 333, 335, 393, 83, 833, 29, 322, 333, 335, + 393, 333, 1102, 158, 190, 261, 732, 467, 388, 388, + 178, 467, 527, 231, 380, 407, 430, 432, 527, 83, + 471, 4, 4, 281, 185, 145, 119, 319, 350, 519, + 411, 411, 250, 1012, 388, 337, 467, 813, 1104, 1102, + 377, 377, 388, 388, 377, 701, 105, 350, 510, 388, + 480, 510, 1102, 388, 388, 1102, 1014, 616, 53, 615, + 616, 616, 103, 235, 238, 53, 388, 478, 242, 337, + 478, 249, 614, 388, 388, 256, 1113, 643, 388, 388, + 337, 1113, 388, 304, 388, 304, 701, 380, 990, 285, + 285, 83, 388, 833, 337, 388, 388, 527, 527, 732, + 732, 732, 732, 1102, 42, 416, 42, 42, 388, 42, + 388, 416, 337, 471, 510, 410, 660, 1116, 388, 480, + 510, 1102, 388, 337, 281, 319, 307, 320, 346, 502, + 864, 1108, 1118, 1102, 206, 1012, 266, 206, 434, 206, + 616, 732, 732, 206, 266, 266, 80, 122, 283, 382, + 1012, 266, 206, 206, 206, 388, 430, 550, 398, 3, + 706, 707, 701, 467, 35, 145, 732, 702, 703, 1121, + 24, 871, 1012, 266, 145, 630, 1104, 251, 285, 467, + 479, 715, 411, 311, 423, 1102, 26, 377, 430, 803, + 479, 145, 1116, 90, 168, 494, 558, 609, 673, 750, + 768, 867, 145, 1113, 651, 652, 145, 266, 1113, 1116, + 228, 732, 732, 732, 732, 261, 116, 198, 396, 409, + 675, 676, 137, 306, 467, 660, 251, 479, 1102, 251, + 611, 613, 251, 35, 261, 285, 467, 579, 579, 179, + 606, 1102, 157, 179, 771, 1108, 467, 785, 35, 1012, + 212, 430, 432, 935, 339, 797, 796, 1012, 1105, 467, + 1071, 1112, 734, 1029, 1029, 34, 1013, 386, 386, 1112, + 1112, 1012, 465, 465, 1112, 388, 388, 388, 467, 388, + 1112, 1017, 783, 784, 1117, 1116, 145, 523, 145, 411, + 145, 411, 814, 815, 523, 1117, 1104, 1104, 1012, 734, + 1117, 660, 145, 145, 523, 731, 732, 1103, 1104, 1104, + 732, 468, 179, 1102, 900, 902, 933, 933, 933, 933, + 933, 933, 580, 468, 471, 468, 165, 345, 378, 1103, + 731, 104, 347, 783, 1103, 260, 1103, 1101, 1101, 1103, + 731, 388, 430, 761, 140, 222, 657, 658, 20, 143, + 333, 353, 924, 990, 255, 925, 468, 471, 907, 388, + 1102, 827, 828, 830, 753, 752, 753, 162, 169, 762, + 1118, 25, 73, 105, 128, 139, 159, 164, 213, 234, + 304, 330, 337, 344, 372, 377, 380, 398, 423, 625, + 743, 744, 1071, 1093, 466, 1071, 1075, 1076, 426, 1088, + 1089, 1035, 1071, 467, 1112, 1112, 3, 106, 177, 237, + 240, 341, 448, 1077, 1078, 1113, 1071, 1071, 1071, 1112, + 1112, 1035, 813, 1035, 1079, 333, 458, 459, 467, 1036, + 1037, 1068, 1081, 468, 1071, 1035, 1071, 1082, 1035, 52, + 162, 216, 389, 1035, 1071, 1085, 1071, 242, 1037, 1035, + 1045, 1046, 1047, 242, 1035, 1047, 468, 471, 1112, 1033, + 1012, 1035, 1035, 1035, 1035, 1121, 386, 39, 374, 1097, + 732, 1035, 467, 937, 1086, 125, 127, 150, 251, 256, + 261, 395, 405, 1035, 467, 1035, 388, 47, 180, 185, + 221, 355, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 26, 33, 360, 1065, 171, 153, 1051, 333, + 467, 1062, 167, 225, 377, 381, 383, 407, 946, 1102, + 1100, 162, 980, 26, 125, 419, 460, 468, 789, 1035, + 1072, 1073, 1119, 980, 1102, 390, 467, 1113, 471, 468, + 466, 472, 178, 178, 523, 1102, 892, 893, 1102, 1035, + 468, 467, 471, 36, 120, 411, 777, 467, 961, 1114, + 353, 210, 267, 471, 333, 334, 963, 1101, 255, 357, + 926, 974, 956, 411, 921, 111, 279, 467, 913, 936, + 35, 1118, 467, 928, 929, 930, 1118, 468, 1116, 1104, + 1104, 274, 53, 1119, 468, 789, 791, 788, 791, 1119, + 272, 468, 471, 733, 1116, 1104, 1104, 1107, 1116, 1104, + 1104, 1116, 1105, 1104, 111, 503, 1114, 330, 410, 752, + 337, 168, 752, 467, 1104, 411, 772, 210, 210, 411, + 467, 600, 179, 1104, 256, 1116, 1104, 1104, 1035, 256, + 1104, 1104, 29, 322, 388, 388, 1104, 388, 634, 236, + 796, 467, 732, 732, 1012, 393, 104, 377, 784, 423, + 67, 151, 815, 1104, 732, 1104, 732, 340, 157, 1012, + 732, 212, 173, 249, 281, 319, 415, 637, 638, 639, + 990, 388, 833, 337, 256, 147, 115, 205, 1116, 1104, + 266, 1104, 468, 471, 1115, 1117, 1104, 319, 519, 179, + 566, 251, 1012, 1104, 1118, 1104, 147, 220, 1104, 26, + 410, 1104, 179, 1104, 179, 1118, 335, 393, 335, 393, + 220, 1104, 26, 410, 1104, 220, 333, 1102, 22, 130, + 350, 644, 645, 646, 647, 1121, 1116, 1104, 111, 163, + 252, 411, 526, 529, 530, 1121, 1104, 264, 69, 264, + 1104, 521, 388, 380, 1102, 266, 388, 833, 337, 1106, + 1118, 1106, 471, 468, 471, 1116, 1104, 838, 839, 1121, + 266, 319, 388, 668, 991, 991, 1116, 1104, 991, 1105, + 1115, 3, 82, 135, 190, 287, 402, 410, 413, 481, + 319, 1116, 1104, 319, 350, 519, 613, 616, 732, 1104, + 616, 732, 1104, 616, 1116, 1104, 1116, 1104, 1104, 1116, + 803, 1104, 847, 848, 1121, 1104, 319, 350, 519, 520, + 1102, 1102, 1104, 1104, 1104, 1104, 1116, 1104, 22, 28, + 130, 281, 319, 350, 281, 319, 350, 701, 319, 350, + 319, 350, 119, 319, 1004, 1118, 179, 711, 1118, 179, + 1118, 1116, 1104, 1104, 1113, 1104, 22, 540, 347, 1115, + 319, 350, 519, 1104, 1104, 388, 388, 78, 401, 307, + 256, 740, 1113, 35, 128, 732, 740, 740, 206, 411, + 411, 740, 732, 732, 212, 732, 740, 740, 740, 303, + 544, 264, 162, 388, 543, 188, 456, 468, 471, 1035, + 1012, 732, 468, 471, 456, 675, 568, 1121, 1104, 56, + 162, 337, 422, 631, 638, 639, 145, 261, 221, 560, + 562, 564, 566, 573, 576, 23, 185, 330, 375, 481, + 482, 157, 1106, 423, 1102, 35, 669, 378, 991, 701, + 492, 1118, 493, 271, 559, 1104, 159, 732, 1071, 304, + 1113, 701, 701, 701, 701, 261, 266, 271, 467, 701, + 1002, 1003, 1004, 347, 145, 467, 145, 145, 144, 936, + 732, 261, 560, 1118, 430, 432, 596, 430, 528, 251, + 35, 579, 1113, 251, 266, 468, 786, 787, 792, 35, + 212, 327, 391, 429, 798, 799, 800, 266, 212, 506, + 176, 176, 157, 523, 35, 1071, 468, 468, 523, 465, + 450, 450, 468, 468, 1112, 466, 1112, 468, 177, 237, + 1034, 237, 1034, 1034, 1112, 240, 468, 523, 731, 732, + 1106, 732, 1106, 523, 523, 212, 523, 347, 157, 506, + 523, 523, 266, 523, 251, 468, 581, 185, 185, 185, + 434, 1103, 616, 617, 171, 756, 757, 1116, 23, 762, + 388, 467, 162, 143, 353, 143, 353, 333, 409, 239, + 1012, 1116, 430, 604, 1102, 1104, 162, 266, 756, 53, + 523, 796, 1012, 393, 377, 784, 260, 423, 1012, 212, + 732, 1104, 468, 466, 466, 471, 1035, 132, 1089, 1090, + 35, 468, 1035, 468, 468, 468, 162, 468, 468, 468, + 468, 468, 471, 468, 289, 1080, 468, 467, 1036, 1036, + 1071, 11, 15, 16, 17, 185, 206, 268, 454, 455, + 456, 458, 459, 460, 461, 462, 463, 1068, 1036, 468, + 468, 157, 162, 1083, 1084, 468, 35, 1085, 1071, 1085, + 1085, 162, 468, 468, 1121, 286, 1049, 35, 468, 471, + 1035, 1121, 471, 1035, 1096, 1035, 468, 450, 1036, 1036, + 138, 1071, 162, 125, 127, 150, 256, 261, 395, 405, + 467, 138, 813, 1035, 374, 1097, 1035, 1086, 1035, 388, + 467, 937, 467, 467, 276, 1055, 467, 1071, 381, 383, + 381, 383, 1102, 947, 947, 947, 215, 334, 447, 467, + 937, 981, 982, 983, 990, 995, 1005, 1038, 1040, 1041, + 1110, 1118, 427, 1000, 1072, 1072, 1073, 468, 13, 14, + 471, 951, 952, 1000, 865, 1112, 1033, 501, 1035, 1094, + 898, 907, 954, 268, 1066, 1069, 452, 778, 1035, 963, + 409, 960, 230, 981, 427, 1001, 417, 376, 410, 914, + 915, 916, 1118, 266, 917, 1118, 930, 931, 471, 980, + 456, 1096, 795, 733, 791, 791, 53, 793, 462, 1117, + 1117, 266, 1103, 269, 266, 1035, 577, 1106, 467, 467, + 467, 600, 188, 580, 690, 145, 523, 388, 1116, 1104, + 506, 1104, 1012, 1104, 434, 732, 732, 732, 732, 80, + 122, 283, 382, 1012, 1104, 620, 1104, 173, 415, 388, + 388, 620, 637, 643, 319, 350, 519, 1104, 1104, 1104, + 196, 1104, 256, 787, 280, 350, 388, 251, 145, 270, + 641, 690, 22, 130, 323, 324, 350, 522, 531, 532, + 643, 834, 1104, 342, 145, 523, 145, 523, 1104, 1104, + 1104, 1104, 342, 342, 220, 646, 647, 646, 468, 471, + 648, 1113, 188, 468, 471, 456, 469, 1116, 1104, 319, + 350, 519, 147, 1104, 1104, 1104, 281, 319, 350, 22, + 130, 281, 319, 350, 1012, 250, 1012, 468, 471, 456, + 1102, 388, 1117, 411, 665, 222, 287, 256, 1113, 287, + 1117, 408, 388, 388, 337, 471, 803, 280, 350, 83, + 388, 833, 337, 157, 533, 388, 388, 232, 232, 232, + 388, 388, 337, 388, 388, 337, 388, 337, 388, 337, + 266, 388, 523, 1012, 251, 1113, 350, 834, 145, 523, + 388, 388, 1104, 388, 337, 1116, 1104, 1012, 732, 206, + 740, 1106, 1106, 206, 206, 1104, 206, 367, 368, 545, + 1113, 544, 173, 250, 268, 458, 459, 616, 704, 791, + 1069, 1113, 1125, 3, 707, 468, 468, 162, 701, 703, + 704, 266, 65, 71, 83, 111, 113, 166, 192, 251, + 256, 298, 313, 404, 569, 570, 572, 144, 426, 478, + 506, 1104, 506, 641, 1102, 1102, 1102, 468, 471, 1117, + 171, 330, 1117, 1112, 398, 1102, 579, 3, 157, 670, + 43, 493, 321, 377, 650, 104, 898, 162, 847, 528, + 580, 1102, 676, 708, 709, 1113, 468, 471, 1104, 157, + 580, 1102, 603, 1102, 1104, 604, 467, 561, 1102, 468, + 264, 527, 264, 266, 597, 527, 35, 145, 936, 528, + 388, 145, 1102, 468, 471, 111, 456, 801, 1113, 506, + 377, 790, 791, 157, 802, 800, 803, 116, 198, 343, + 409, 856, 1104, 173, 936, 1012, 468, 1112, 1032, 1032, + 466, 466, 468, 523, 411, 523, 411, 523, 1104, 1104, + 660, 523, 732, 145, 337, 337, 337, 1103, 471, 1116, + 430, 471, 758, 269, 991, 347, 143, 143, 104, 249, + 1117, 755, 523, 1116, 206, 206, 206, 616, 206, 206, + 206, 1075, 385, 1035, 136, 1012, 468, 1035, 1035, 1035, + 1083, 468, 1071, 471, 1012, 1036, 1036, 1036, 1036, 125, + 127, 251, 261, 1036, 1036, 1036, 1036, 1036, 1036, 1036, + 1036, 1036, 1036, 1035, 1035, 1084, 1083, 1012, 468, 468, + 468, 1071, 468, 471, 53, 1037, 468, 1121, 1046, 295, + 371, 1048, 468, 471, 422, 1042, 35, 468, 1113, 1035, + 32, 32, 1035, 468, 1035, 162, 467, 1074, 1035, 468, + 138, 1036, 1036, 138, 138, 1035, 1035, 952, 427, 467, + 1056, 1118, 468, 1071, 471, 947, 947, 947, 947, 1102, + 1102, 1102, 937, 995, 1005, 162, 467, 937, 982, 983, + 35, 984, 985, 1118, 471, 91, 163, 194, 209, 219, + 245, 329, 987, 985, 35, 984, 986, 1118, 985, 453, + 999, 467, 1095, 1035, 171, 965, 471, 951, 951, 951, + 1035, 1035, 419, 1073, 468, 965, 468, 466, 468, 467, + 778, 154, 214, 468, 267, 94, 1035, 326, 919, 416, + 468, 471, 1096, 81, 919, 468, 471, 929, 1001, 1035, + 468, 462, 795, 398, 165, 338, 345, 378, 399, 767, + 157, 767, 468, 467, 583, 584, 774, 1040, 1118, 580, + 580, 690, 1108, 468, 113, 192, 249, 251, 691, 1104, + 1104, 35, 1104, 411, 411, 732, 732, 732, 732, 212, + 733, 1116, 1104, 388, 833, 337, 388, 196, 53, 380, + 1104, 145, 566, 467, 568, 166, 178, 251, 527, 478, + 104, 166, 251, 366, 369, 527, 614, 350, 532, 398, + 1104, 1118, 342, 645, 1104, 530, 704, 1121, 280, 350, + 388, 833, 337, 1104, 388, 388, 388, 337, 164, 268, + 369, 713, 714, 164, 268, 721, 722, 388, 388, 337, + 468, 468, 468, 839, 250, 616, 791, 840, 1069, 1113, + 1125, 319, 1104, 467, 430, 666, 1114, 1113, 1113, 1113, + 1104, 1104, 1104, 848, 53, 380, 1104, 1104, 1104, 1104, + 417, 1104, 1104, 157, 157, 321, 157, 179, 1116, 1104, + 1104, 1116, 1104, 1104, 1104, 1104, 1104, 1104, 147, 1104, + 71, 524, 145, 24, 45, 398, 1118, 1104, 1113, 643, + 1104, 1104, 468, 206, 740, 206, 206, 740, 740, 206, + 740, 478, 545, 620, 690, 430, 432, 732, 1102, 467, + 732, 1104, 1036, 29, 53, 571, 114, 181, 113, 256, + 210, 1102, 803, 302, 693, 694, 1118, 630, 285, 467, + 561, 574, 191, 590, 564, 1117, 1117, 1012, 467, 528, + 26, 116, 198, 343, 409, 671, 388, 667, 1116, 179, + 1102, 652, 434, 266, 981, 803, 314, 677, 468, 471, + 1004, 641, 660, 468, 611, 35, 261, 285, 467, 909, + 563, 565, 567, 576, 1118, 285, 591, 592, 561, 590, + 77, 380, 598, 936, 606, 604, 598, 1113, 1108, 772, + 792, 1035, 1035, 471, 467, 798, 398, 471, 388, 467, + 620, 468, 466, 1106, 1106, 523, 347, 523, 1103, 1103, + 1103, 616, 168, 757, 468, 1104, 104, 762, 162, 256, + 745, 1113, 745, 745, 206, 745, 745, 745, 1035, 468, + 468, 1084, 468, 1035, 162, 125, 127, 261, 467, 468, + 437, 1044, 1071, 312, 53, 428, 428, 468, 1035, 249, + 1035, 471, 1043, 1014, 1035, 1035, 1035, 1074, 468, 1035, + 32, 32, 1035, 1035, 138, 468, 468, 1035, 1057, 1118, + 468, 1035, 1102, 1102, 1102, 1102, 985, 986, 985, 467, + 442, 1037, 468, 1118, 467, 982, 209, 275, 988, 982, + 988, 209, 987, 988, 209, 379, 993, 467, 1118, 467, + 273, 1072, 53, 174, 972, 468, 468, 468, 1073, 1113, + 972, 1113, 813, 261, 1099, 936, 279, 936, 916, 266, + 467, 918, 456, 930, 919, 398, 468, 388, 752, 162, + 690, 1035, 468, 471, 430, 71, 775, 775, 468, 468, + 803, 114, 181, 190, 113, 413, 523, 1012, 1106, 1106, + 1104, 1104, 1104, 1104, 1104, 1117, 1104, 566, 642, 646, + 571, 179, 256, 616, 571, 256, 1114, 1118, 1012, 523, + 523, 456, 53, 380, 1104, 1104, 1104, 1104, 1116, 1104, + 1104, 1112, 1112, 1012, 471, 1112, 1112, 471, 1116, 1104, + 1104, 388, 1035, 65, 1117, 1104, 388, 388, 162, 185, + 1103, 1103, 732, 1103, 145, 1104, 732, 1113, 1113, 1012, + 523, 523, 206, 740, 740, 740, 740, 467, 546, 547, + 411, 551, 552, 164, 195, 164, 162, 689, 1035, 251, + 570, 111, 35, 803, 579, 411, 599, 1110, 32, 144, + 185, 261, 560, 533, 142, 186, 467, 347, 411, 580, + 35, 1117, 665, 493, 251, 467, 159, 1104, 1071, 247, + 265, 678, 679, 680, 157, 683, 1113, 347, 528, 936, + 732, 261, 560, 604, 468, 471, 430, 568, 53, 596, + 533, 591, 116, 130, 295, 1104, 430, 868, 35, 162, + 266, 467, 1113, 789, 804, 805, 1119, 803, 1012, 157, + 1102, 162, 388, 824, 193, 621, 523, 523, 523, 1104, + 269, 204, 523, 756, 745, 468, 1036, 162, 467, 1074, + 467, 468, 471, 468, 1037, 312, 468, 416, 363, 468, + 468, 468, 1035, 1035, 1035, 468, 285, 1058, 468, 996, + 997, 1040, 467, 1049, 984, 467, 1103, 982, 266, 411, + 989, 982, 209, 982, 1110, 1003, 467, 1003, 1118, 951, + 93, 172, 332, 467, 966, 967, 968, 969, 970, 971, + 1035, 1035, 429, 1052, 951, 1052, 468, 933, 914, 83, + 773, 774, 126, 1035, 756, 266, 756, 468, 803, 584, + 268, 813, 732, 732, 776, 776, 313, 803, 599, 468, + 388, 350, 925, 468, 471, 35, 145, 524, 704, 1117, + 1104, 388, 467, 784, 813, 815, 714, 467, 467, 722, + 1104, 468, 467, 350, 925, 1104, 1104, 467, 467, 430, + 453, 886, 321, 886, 886, 157, 524, 740, 553, 554, + 1121, 49, 92, 117, 134, 138, 158, 161, 175, 256, + 264, 305, 548, 478, 118, 784, 35, 820, 820, 1102, + 690, 468, 178, 599, 233, 582, 188, 467, 694, 302, + 467, 1102, 468, 347, 26, 76, 84, 112, 178, 189, + 369, 575, 575, 1101, 1104, 1106, 468, 936, 666, 145, + 104, 641, 162, 679, 333, 377, 681, 131, 684, 426, + 686, 1104, 35, 604, 561, 1102, 468, 565, 270, 3, + 593, 1122, 597, 591, 596, 334, 334, 57, 65, 225, + 936, 732, 1102, 773, 791, 468, 471, 398, 1000, 361, + 361, 468, 620, 249, 415, 622, 623, 1104, 523, 1036, + 1074, 468, 1045, 1071, 53, 249, 449, 53, 951, 468, + 471, 35, 998, 111, 1010, 1011, 1036, 74, 1103, 468, + 1035, 467, 982, 989, 467, 468, 1003, 468, 468, 467, + 351, 467, 468, 471, 1053, 1054, 1118, 468, 416, 1104, + 468, 471, 252, 409, 758, 767, 523, 775, 599, 467, + 777, 777, 1102, 599, 690, 1104, 380, 646, 178, 411, + 525, 350, 925, 1104, 1074, 157, 717, 717, 1074, 1074, + 1035, 380, 235, 238, 256, 534, 536, 537, 616, 1113, + 534, 535, 731, 732, 731, 732, 1103, 523, 468, 471, + 460, 467, 503, 555, 616, 883, 1113, 883, 251, 256, + 305, 883, 883, 546, 1113, 820, 38, 183, 157, 249, + 578, 467, 612, 163, 284, 356, 266, 586, 587, 588, + 380, 468, 1110, 5, 695, 561, 590, 1104, 468, 641, + 151, 716, 528, 868, 1102, 434, 981, 883, 333, 365, + 685, 467, 144, 641, 936, 591, 561, 590, 568, 467, + 598, 596, 597, 65, 269, 65, 604, 772, 468, 798, + 804, 1012, 126, 430, 430, 415, 620, 641, 468, 468, + 468, 312, 416, 1071, 306, 334, 1059, 999, 996, 467, + 1036, 468, 471, 35, 1006, 1007, 1118, 468, 1103, 1071, + 468, 1071, 467, 1071, 967, 471, 35, 936, 1000, 774, + 350, 162, 776, 427, 585, 813, 778, 778, 579, 690, + 1104, 612, 1035, 380, 468, 272, 340, 310, 718, 718, + 468, 468, 468, 1104, 468, 471, 468, 471, 886, 554, + 503, 556, 557, 1113, 1113, 256, 580, 460, 580, 1113, + 1113, 131, 190, 613, 116, 409, 266, 588, 266, 587, + 1104, 467, 468, 471, 533, 347, 641, 732, 35, 35, + 467, 1104, 682, 1118, 1035, 302, 868, 596, 533, 591, + 467, 594, 595, 1040, 1118, 597, 598, 269, 269, 467, + 528, 803, 27, 199, 857, 164, 164, 47, 94, 400, + 1035, 1060, 1061, 1060, 468, 1003, 471, 1011, 1121, 468, + 471, 157, 1012, 468, 468, 468, 966, 468, 1054, 1056, + 928, 756, 777, 467, 690, 468, 582, 925, 1104, 784, + 53, 925, 388, 537, 534, 732, 468, 471, 580, 333, + 468, 56, 249, 325, 350, 589, 589, 468, 5, 347, + 1104, 713, 936, 641, 468, 1110, 597, 591, 596, 1035, + 468, 471, 775, 775, 598, 773, 598, 252, 467, 852, + 854, 858, 911, 920, 927, 936, 784, 784, 1061, 333, + 156, 293, 156, 293, 468, 1037, 1007, 273, 3, 111, + 251, 256, 1008, 1009, 320, 994, 468, 1000, 523, 778, + 1035, 586, 925, 732, 467, 557, 686, 21, 111, 256, + 1104, 641, 868, 467, 598, 596, 597, 468, 595, 776, + 776, 468, 1000, 853, 854, 855, 937, 938, 471, 471, + 32, 1049, 1036, 1036, 256, 1009, 467, 468, 690, 536, + 144, 641, 4, 687, 688, 1112, 1113, 1121, 597, 598, + 775, 528, 468, 470, 388, 162, 1061, 74, 1035, 468, + 302, 468, 471, 598, 776, 598, 855, 361, 361, 1006, + 468, 1110, 688, 1000, 430, 430, 468, 467, 164, 164, + 687, 784, 784, 468 }; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) @@ -24054,13 +25305,13 @@ do \ else \ { \ yyerror (&yylloc, yyscanner, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) + YYERROR; \ + } \ +while (YYID (0)) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. @@ -24070,7 +25321,7 @@ while (0) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ - if (N) \ + if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ @@ -24084,27 +25335,12 @@ while (0) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (0) + while (YYID (0)) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - - /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ @@ -24114,28 +25350,36 @@ do { \ /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ -YY_ATTRIBUTE_UNUSED +__attribute__((__unused__)) +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) +#else +static unsigned +yy_location_print_ (yyo, yylocp) + FILE *yyo; + YYLTYPE const * const yylocp; +#endif { unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { - res += YYFPRINTF (yyo, "%d", yylocp->first_line); + res += fprintf (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) - res += YYFPRINTF (yyo, ".%d", yylocp->first_column); + res += fprintf (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { - res += YYFPRINTF (yyo, "-%d", yylocp->last_line); + res += fprintf (yyo, "-%d", yylocp->last_line); if (0 <= end_col) - res += YYFPRINTF (yyo, ".%d", end_col); + res += fprintf (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) - res += YYFPRINTF (yyo, "-%d", end_col); + res += fprintf (yyo, "-%d", end_col); } return res; } @@ -24149,36 +25393,75 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) #endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location, yyscanner); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, &yylloc, yyscanner) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location, yyscanner); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + core_yyscan_t yyscanner; +#endif { FILE *yyo = yyoutput; YYUSE (yyo); - YYUSE (yylocationp); - YYUSE (yyscanner); if (!yyvaluep) return; + YYUSE (yylocationp); + YYUSE (yyscanner); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YYUSE (yytype); + switch (yytype) + { + default: + break; + } } @@ -24186,11 +25469,24 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue | Print this symbol on YYOUTPUT. | `--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; + core_yyscan_t yyscanner; +#endif { - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); @@ -24203,8 +25499,16 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYL | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -24215,42 +25519,51 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) +#else +static void +yy_reduce_print (yyvsp, yylsp, yyrule, yyscanner) + YYSTYPE *yyvsp; + YYLTYPE *yylsp; + int yyrule; + core_yyscan_t yyscanner; +#endif { - unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; + unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, yylsp, Rule, yyscanner); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, yylsp, Rule, yyscanner); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -24264,7 +25577,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -24287,8 +25600,15 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -24304,8 +25624,16 @@ yystrlen (const char *yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { char *yyd = yydest; const char *yys = yysrc; @@ -24335,27 +25663,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -24378,11 +25706,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; + const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -24390,6 +25718,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -24439,7 +25771,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -24506,19 +25838,35 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, core_yyscan_t yyscanner) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, yylocationp, yyscanner) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; + core_yyscan_t yyscanner; +#endif { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (yyscanner); + if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } @@ -24528,27 +25876,66 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (core_yyscan_t yyscanner) +#else +int +yyparse (yyscanner) + core_yyscan_t yyscanner; +#endif +#endif { /* The lookahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); - -/* Location data for the lookahead symbol. */ +static YYSTYPE yyval_default; +# define YY_INITIAL_VALUE(Value) = Value +#endif static YYLTYPE yyloc_default # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); + +/* Location data for the lookahead symbol. */ YYLTYPE yylloc = yyloc_default; + /* Number of syntax errors so far. */ int yynerrs; @@ -24557,9 +25944,9 @@ YYLTYPE yylloc = yyloc_default; int yyerrstatus; /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - 'yyls': related to locations. + `yyss': related to states. + `yyvs': related to semantic values. + `yyls': related to locations. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -24638,26 +26025,26 @@ YYLTYPE yylloc = yyloc_default; #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -24665,23 +26052,23 @@ YYLTYPE yylloc = yyloc_default; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -24691,10 +26078,10 @@ YYLTYPE yylloc = yyloc_default; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -24723,7 +26110,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (&yylval, &yylloc, yyscanner); + yychar = YYLEX; } if (yychar <= YYEOF) @@ -24788,7 +26175,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -24803,119 +26190,120 @@ yyreduce: switch (yyn) { case 2: -#line 813 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 813 "gram.y" { - pg_yyget_extra(yyscanner)->parsetree = (yyvsp[0].list); + pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); } -#line 24811 "gram.c" /* yacc.c:1646 */ break; case 3: -#line 829 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 829 "gram.y" { - if ((yyvsp[-2].list) != NIL) + if ((yyvsp[(1) - (3)].list) != NIL) { /* update length of previous stmt */ - updateRawStmtEnd(llast_node(RawStmt, (yyvsp[-2].list)), (yylsp[-1])); + updateRawStmtEnd(llast_node(RawStmt, (yyvsp[(1) - (3)].list)), (yylsp[(2) - (3)])); } - if ((yyvsp[0].node) != NULL) - (yyval.list) = lappend((yyvsp[-2].list), makeRawStmt((yyvsp[0].node), (yylsp[-1]) + 1)); + if ((yyvsp[(3) - (3)].node) != NULL) + (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeRawStmt((yyvsp[(3) - (3)].node), (yylsp[(2) - (3)]) + 1)); else - (yyval.list) = (yyvsp[-2].list); + (yyval.list) = (yyvsp[(1) - (3)].list); } -#line 24827 "gram.c" /* yacc.c:1646 */ break; case 4: -#line 841 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 841 "gram.y" { - if ((yyvsp[0].node) != NULL) - (yyval.list) = list_make1(makeRawStmt((yyvsp[0].node), 0)); + if ((yyvsp[(1) - (1)].node) != NULL) + (yyval.list) = list_make1(makeRawStmt((yyvsp[(1) - (1)].node), 0)); else (yyval.list) = NIL; } -#line 24838 "gram.c" /* yacc.c:1646 */ break; case 128: -#line 974 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 974 "gram.y" { (yyval.node) = NULL; } -#line 24844 "gram.c" /* yacc.c:1646 */ break; case 129: -#line 985 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 985 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_ROLE; - n->role = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->role = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 24856 "gram.c" /* yacc.c:1646 */ break; case 130: -#line 995 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 995 "gram.y" {} -#line 24862 "gram.c" /* yacc.c:1646 */ break; case 131: -#line 996 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 996 "gram.y" {} -#line 24868 "gram.c" /* yacc.c:1646 */ break; case 132: -#line 997 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 997 "gram.y" {} -#line 24874 "gram.c" /* yacc.c:1646 */ break; case 133: -#line 1006 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 24880 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1006 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 134: -#line 1007 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1007 "gram.y" { (yyval.list) = NIL; } -#line 24886 "gram.c" /* yacc.c:1646 */ break; case 135: -#line 1011 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 24892 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1011 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 136: -#line 1012 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1012 "gram.y" { (yyval.list) = NIL; } -#line 24898 "gram.c" /* yacc.c:1646 */ break; case 137: -#line 1017 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1017 "gram.y" { (yyval.defelt) = makeDefElem("password", - (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 24907 "gram.c" /* yacc.c:1646 */ break; case 138: -#line 1022 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1022 "gram.y" { - (yyval.defelt) = makeDefElem("password", NULL, (yylsp[-1])); + (yyval.defelt) = makeDefElem("password", NULL, (yylsp[(1) - (2)])); } -#line 24915 "gram.c" /* yacc.c:1646 */ break; case 139: -#line 1026 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1026 "gram.y" { /* * These days, passwords are always stored in encrypted @@ -24923,3137 +26311,3137 @@ yyreduce: * ENCRYPTED PASSWORD. */ (yyval.defelt) = makeDefElem("password", - (Node *)makeString((yyvsp[0].str)), (yylsp[-2])); + (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 24929 "gram.c" /* yacc.c:1646 */ break; case 140: -#line 1036 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1036 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("UNENCRYPTED PASSWORD is no longer supported"), errhint("Remove UNENCRYPTED to store the password in encrypted form instead."), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(1) - (3)])))); } -#line 24941 "gram.c" /* yacc.c:1646 */ break; case 141: -#line 1044 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1044 "gram.y" { - (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 24949 "gram.c" /* yacc.c:1646 */ break; case 142: -#line 1048 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1048 "gram.y" { - (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[0].ival)), (yylsp[-2])); + (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); } -#line 24957 "gram.c" /* yacc.c:1646 */ break; case 143: -#line 1052 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1052 "gram.y" { - (yyval.defelt) = makeDefElem("validUntil", (Node *)makeString((yyvsp[0].str)), (yylsp[-2])); + (yyval.defelt) = makeDefElem("validUntil", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 24965 "gram.c" /* yacc.c:1646 */ break; case 144: -#line 1057 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1057 "gram.y" { - (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[0].list), (yylsp[-1])); + (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 24973 "gram.c" /* yacc.c:1646 */ break; case 145: -#line 1061 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1061 "gram.y" { /* * We handle identifiers that aren't parser keywords with * the following special-case codes, to avoid bloating the * size of the main parser. */ - if (strcmp((yyvsp[0].str), "superuser") == 0) - (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(TRUE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "nosuperuser") == 0) - (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(FALSE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "createrole") == 0) - (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(TRUE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "nocreaterole") == 0) - (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(FALSE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "replication") == 0) - (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(TRUE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "noreplication") == 0) - (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(FALSE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "createdb") == 0) - (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(TRUE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "nocreatedb") == 0) - (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(FALSE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "login") == 0) - (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(TRUE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "nologin") == 0) - (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(FALSE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "bypassrls") == 0) - (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(TRUE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "nobypassrls") == 0) - (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(FALSE), (yylsp[0])); - else if (strcmp((yyvsp[0].str), "noinherit") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "superuser") == 0) + (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nosuperuser") == 0) + (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "createrole") == 0) + (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nocreaterole") == 0) + (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "replication") == 0) + (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "noreplication") == 0) + (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "createdb") == 0) + (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nocreatedb") == 0) + (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "login") == 0) + (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nologin") == 0) + (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "bypassrls") == 0) + (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "nobypassrls") == 0) + (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + else if (strcmp((yyvsp[(1) - (1)].str), "noinherit") == 0) { /* * Note that INHERIT is a keyword, so it's handled by main parser, but * NOINHERIT is handled here. */ - (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(FALSE), (yylsp[0])); + (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); } else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized role option \"%s\"", (yyvsp[0].str)), - parser_errposition((yylsp[0])))); + errmsg("unrecognized role option \"%s\"", (yyvsp[(1) - (1)].str)), + parser_errposition((yylsp[(1) - (1)])))); } -#line 25022 "gram.c" /* yacc.c:1646 */ break; case 146: -#line 1108 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = (yyvsp[0].defelt); } -#line 25028 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1108 "gram.y" + { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); } break; case 147: -#line 1111 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1111 "gram.y" { - (yyval.defelt) = makeDefElem("sysid", (Node *)makeInteger((yyvsp[0].ival)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("sysid", (Node *)makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); } -#line 25036 "gram.c" /* yacc.c:1646 */ break; case 148: -#line 1115 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1115 "gram.y" { - (yyval.defelt) = makeDefElem("adminmembers", (Node *)(yyvsp[0].list), (yylsp[-1])); + (yyval.defelt) = makeDefElem("adminmembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 25044 "gram.c" /* yacc.c:1646 */ break; case 149: -#line 1119 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1119 "gram.y" { - (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[0].list), (yylsp[-1])); + (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 25052 "gram.c" /* yacc.c:1646 */ break; case 150: -#line 1123 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1123 "gram.y" { - (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 25060 "gram.c" /* yacc.c:1646 */ break; case 151: -#line 1127 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1127 "gram.y" { - (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 25068 "gram.c" /* yacc.c:1646 */ break; case 152: -#line 1141 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1141 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_USER; - n->role = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->role = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25080 "gram.c" /* yacc.c:1646 */ break; case 153: -#line 1159 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1159 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); - n->role = (yyvsp[-2].rolespec); + n->role = (yyvsp[(3) - (5)].rolespec); n->action = +1; /* add, if there are members */ - n->options = (yyvsp[0].list); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25092 "gram.c" /* yacc.c:1646 */ break; case 154: -#line 1167 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1167 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); - n->role = (yyvsp[-2].rolespec); + n->role = (yyvsp[(3) - (5)].rolespec); n->action = +1; /* add, if there are members */ - n->options = (yyvsp[0].list); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25104 "gram.c" /* yacc.c:1646 */ break; case 155: -#line 1177 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1177 "gram.y" { (yyval.str) = NULL; } -#line 25110 "gram.c" /* yacc.c:1646 */ break; case 156: -#line 1178 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 25116 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1178 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].str); } break; case 157: -#line 1183 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1183 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); - n->role = (yyvsp[-2].rolespec); - n->database = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->role = (yyvsp[(3) - (5)].rolespec); + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; } -#line 25128 "gram.c" /* yacc.c:1646 */ break; case 158: -#line 1191 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1191 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = NULL; - n->database = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; } -#line 25140 "gram.c" /* yacc.c:1646 */ break; case 159: -#line 1199 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1199 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); - n->role = (yyvsp[-2].rolespec); - n->database = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->role = (yyvsp[(3) - (5)].rolespec); + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; } -#line 25152 "gram.c" /* yacc.c:1646 */ break; case 160: -#line 1207 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1207 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = NULL; - n->database = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->database = (yyvsp[(4) - (5)].str); + n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; } -#line 25164 "gram.c" /* yacc.c:1646 */ break; case 161: -#line 1228 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1228 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; - n->roles = (yyvsp[0].list); + n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 25175 "gram.c" /* yacc.c:1646 */ break; case 162: -#line 1235 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1235 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = TRUE; - n->roles = (yyvsp[0].list); + n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25186 "gram.c" /* yacc.c:1646 */ break; case 163: -#line 1242 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1242 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; - n->roles = (yyvsp[0].list); + n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 25197 "gram.c" /* yacc.c:1646 */ break; case 164: -#line 1249 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1249 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->roles = (yyvsp[0].list); + n->roles = (yyvsp[(5) - (5)].list); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 25208 "gram.c" /* yacc.c:1646 */ break; case 165: -#line 1256 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1256 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; - n->roles = (yyvsp[0].list); + n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 25219 "gram.c" /* yacc.c:1646 */ break; case 166: -#line 1263 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1263 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = TRUE; - n->roles = (yyvsp[0].list); + n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25230 "gram.c" /* yacc.c:1646 */ break; case 167: -#line 1280 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1280 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_GROUP; - n->role = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->role = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 25242 "gram.c" /* yacc.c:1646 */ break; case 168: -#line 1298 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1298 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); - n->role = (yyvsp[-3].rolespec); - n->action = (yyvsp[-2].ival); + n->role = (yyvsp[(3) - (6)].rolespec); + n->action = (yyvsp[(4) - (6)].ival); n->options = list_make1(makeDefElem("rolemembers", - (Node *)(yyvsp[0].list), (yylsp[0]))); + (Node *)(yyvsp[(6) - (6)].list), (yylsp[(6) - (6)]))); (yyval.node) = (Node *)n; } -#line 25255 "gram.c" /* yacc.c:1646 */ break; case 169: -#line 1308 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1308 "gram.y" { (yyval.ival) = +1; } -#line 25261 "gram.c" /* yacc.c:1646 */ break; case 170: -#line 1309 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1309 "gram.y" { (yyval.ival) = -1; } -#line 25267 "gram.c" /* yacc.c:1646 */ break; case 171: -#line 1321 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1321 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* One can omit the schema name or the authorization id. */ - n->schemaname = (yyvsp[-3].str); - n->authrole = (yyvsp[-1].rolespec); - n->schemaElts = (yyvsp[0].list); + n->schemaname = (yyvsp[(3) - (6)].str); + n->authrole = (yyvsp[(5) - (6)].rolespec); + n->schemaElts = (yyvsp[(6) - (6)].list); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 25281 "gram.c" /* yacc.c:1646 */ break; case 172: -#line 1331 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1331 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not both */ - n->schemaname = (yyvsp[-1].str); + n->schemaname = (yyvsp[(3) - (4)].str); n->authrole = NULL; - n->schemaElts = (yyvsp[0].list); + n->schemaElts = (yyvsp[(4) - (4)].list); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 25295 "gram.c" /* yacc.c:1646 */ break; case 173: -#line 1341 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1341 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* schema name can be omitted here, too */ - n->schemaname = (yyvsp[-3].str); - n->authrole = (yyvsp[-1].rolespec); - if ((yyvsp[0].list) != NIL) + n->schemaname = (yyvsp[(6) - (9)].str); + n->authrole = (yyvsp[(8) - (9)].rolespec); + if ((yyvsp[(9) - (9)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), - parser_errposition((yylsp[0])))); - n->schemaElts = (yyvsp[0].list); + parser_errposition((yylsp[(9) - (9)])))); + n->schemaElts = (yyvsp[(9) - (9)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 25314 "gram.c" /* yacc.c:1646 */ break; case 174: -#line 1356 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1356 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not here */ - n->schemaname = (yyvsp[-1].str); + n->schemaname = (yyvsp[(6) - (7)].str); n->authrole = NULL; - if ((yyvsp[0].list) != NIL) + if ((yyvsp[(7) - (7)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), - parser_errposition((yylsp[0])))); - n->schemaElts = (yyvsp[0].list); + parser_errposition((yylsp[(7) - (7)])))); + n->schemaElts = (yyvsp[(7) - (7)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 25333 "gram.c" /* yacc.c:1646 */ break; case 175: -#line 1373 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 25339 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1373 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 176: -#line 1374 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1374 "gram.y" { (yyval.str) = NULL; } -#line 25345 "gram.c" /* yacc.c:1646 */ break; case 177: -#line 1379 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1379 "gram.y" { if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ - (yyloc) = (yylsp[0]); - (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); + (yyloc) = (yylsp[(2) - (2)]); + (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } -#line 25355 "gram.c" /* yacc.c:1646 */ break; case 178: -#line 1385 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1385 "gram.y" { (yyval.list) = NIL; } -#line 25361 "gram.c" /* yacc.c:1646 */ break; case 185: -#line 1413 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1413 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->type = T_PgpoolVariableSetStmt; /* Hack to keep changes minumum */ n->is_local = false; (yyval.node) = (Node *) n; } -#line 25372 "gram.c" /* yacc.c:1646 */ break; case 186: -#line 1420 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1420 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; } -#line 25382 "gram.c" /* yacc.c:1646 */ break; case 187: -#line 1426 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1426 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = true; (yyval.node) = (Node *) n; } -#line 25392 "gram.c" /* yacc.c:1646 */ break; case 188: -#line 1432 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1432 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; } -#line 25402 "gram.c" /* yacc.c:1646 */ break; case 189: -#line 1441 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1441 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "TRANSACTION"; - n->args = (yyvsp[0].list); + n->args = (yyvsp[(2) - (2)].list); (yyval.vsetstmt) = n; } -#line 25414 "gram.c" /* yacc.c:1646 */ break; case 190: -#line 1449 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1449 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "SESSION CHARACTERISTICS"; - n->args = (yyvsp[0].list); + n->args = (yyvsp[(5) - (5)].list); (yyval.vsetstmt) = n; } -#line 25426 "gram.c" /* yacc.c:1646 */ break; case 192: -#line 1461 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1461 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = (yyvsp[-2].str); - n->args = (yyvsp[0].list); + n->name = (yyvsp[(1) - (3)].str); + n->args = (yyvsp[(3) - (3)].list); (yyval.vsetstmt) = n; } -#line 25438 "gram.c" /* yacc.c:1646 */ break; case 193: -#line 1469 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1469 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = (yyvsp[-2].str); - n->args = (yyvsp[0].list); + n->name = (yyvsp[(1) - (3)].str); + n->args = (yyvsp[(3) - (3)].list); (yyval.vsetstmt) = n; } -#line 25450 "gram.c" /* yacc.c:1646 */ break; case 194: -#line 1477 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1477 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; } -#line 25461 "gram.c" /* yacc.c:1646 */ break; case 195: -#line 1484 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1484 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; } -#line 25472 "gram.c" /* yacc.c:1646 */ break; case 196: -#line 1492 "gram.y" /* yacc.c:1646 */ - {(yyval.vsetstmt) = (yyvsp[0].vsetstmt);} -#line 25478 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1492 "gram.y" + {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);} break; case 197: -#line 1494 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1494 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_CURRENT; - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; } -#line 25489 "gram.c" /* yacc.c:1646 */ break; case 198: -#line 1502 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1502 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "timezone"; - if ((yyvsp[0].node) != NULL) - n->args = list_make1((yyvsp[0].node)); + if ((yyvsp[(3) - (3)].node) != NULL) + n->args = list_make1((yyvsp[(3) - (3)].node)); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; } -#line 25504 "gram.c" /* yacc.c:1646 */ break; case 199: -#line 1513 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1513 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("current database cannot be changed"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(2) - (2)])))); (yyval.vsetstmt) = NULL; /*not reached*/ } -#line 25516 "gram.c" /* yacc.c:1646 */ break; case 200: -#line 1521 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1521 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "search_path"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; } -#line 25528 "gram.c" /* yacc.c:1646 */ break; case 201: -#line 1529 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1529 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "client_encoding"; - if ((yyvsp[0].str) != NULL) - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + if ((yyvsp[(2) - (2)].str) != NULL) + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; } -#line 25543 "gram.c" /* yacc.c:1646 */ break; case 202: -#line 1540 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1540 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "role"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; } -#line 25555 "gram.c" /* yacc.c:1646 */ break; case 203: -#line 1548 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1548 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; } -#line 25567 "gram.c" /* yacc.c:1646 */ break; case 204: -#line 1556 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1556 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = "session_authorization"; (yyval.vsetstmt) = n; } -#line 25578 "gram.c" /* yacc.c:1646 */ break; case 205: -#line 1563 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1563 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "xmloption"; - n->args = list_make1(makeStringConst((yyvsp[0].ival) == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].ival) == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; } -#line 25590 "gram.c" /* yacc.c:1646 */ break; case 206: -#line 1572 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1572 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "TRANSACTION SNAPSHOT"; - n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; } -#line 25602 "gram.c" /* yacc.c:1646 */ break; case 207: -#line 1581 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 25608 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1581 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 208: -#line 1583 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = psprintf("%s.%s", (yyvsp[-2].str), (yyvsp[0].str)); } -#line 25614 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1583 "gram.y" + { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); } break; case 209: -#line 1586 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 25620 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1586 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 210: -#line 1587 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 25626 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1587 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 211: -#line 1591 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } -#line 25632 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1591 "gram.y" + { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } break; case 212: -#line 1593 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } -#line 25638 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1593 "gram.y" + { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); } break; case 213: -#line 1596 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1596 "gram.y" { (yyval.str) = "read uncommitted"; } -#line 25644 "gram.c" /* yacc.c:1646 */ break; case 214: -#line 1597 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1597 "gram.y" { (yyval.str) = "read committed"; } -#line 25650 "gram.c" /* yacc.c:1646 */ break; case 215: -#line 1598 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1598 "gram.y" { (yyval.str) = "repeatable read"; } -#line 25656 "gram.c" /* yacc.c:1646 */ break; case 216: -#line 1599 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1599 "gram.y" { (yyval.str) = "serializable"; } -#line 25662 "gram.c" /* yacc.c:1646 */ break; case 217: -#line 1603 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1603 "gram.y" { (yyval.str) = "true"; } -#line 25668 "gram.c" /* yacc.c:1646 */ break; case 218: -#line 1604 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1604 "gram.y" { (yyval.str) = "false"; } -#line 25674 "gram.c" /* yacc.c:1646 */ break; case 219: -#line 1605 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1605 "gram.y" { (yyval.str) = "on"; } -#line 25680 "gram.c" /* yacc.c:1646 */ break; case 220: -#line 1611 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 25686 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1611 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 221: -#line 1624 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1624 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 25694 "gram.c" /* yacc.c:1646 */ break; case 222: -#line 1628 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1628 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 25702 "gram.c" /* yacc.c:1646 */ break; case 223: -#line 1632 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1632 "gram.y" { - TypeName *t = (yyvsp[-2].typnam); - if ((yyvsp[0].list) != NIL) + TypeName *t = (yyvsp[(1) - (3)].typnam); + if ((yyvsp[(3) - (3)].list) != NIL) { - A_Const *n = (A_Const *) linitial((yyvsp[0].list)); + A_Const *n = (A_Const *) linitial((yyvsp[(3) - (3)].list)); if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(3) - (3)])))); } - t->typmods = (yyvsp[0].list); - (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); + t->typmods = (yyvsp[(3) - (3)].list); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); } -#line 25721 "gram.c" /* yacc.c:1646 */ break; case 224: -#line 1647 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1647 "gram.y" { - TypeName *t = (yyvsp[-4].typnam); + TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); } -#line 25732 "gram.c" /* yacc.c:1646 */ break; case 225: -#line 1653 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } -#line 25738 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1653 "gram.y" + { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); } break; case 226: -#line 1654 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1654 "gram.y" { (yyval.node) = NULL; } -#line 25744 "gram.c" /* yacc.c:1646 */ break; case 227: -#line 1655 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1655 "gram.y" { (yyval.node) = NULL; } -#line 25750 "gram.c" /* yacc.c:1646 */ break; case 228: -#line 1659 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 25756 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1659 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 229: -#line 1660 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1660 "gram.y" { (yyval.str) = NULL; } -#line 25762 "gram.c" /* yacc.c:1646 */ break; case 230: -#line 1661 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1661 "gram.y" { (yyval.str) = NULL; } -#line 25768 "gram.c" /* yacc.c:1646 */ break; case 231: -#line 1665 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 25774 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1665 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 232: -#line 1666 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 25780 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1666 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 233: -#line 1670 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[0].vsetstmt); } -#line 25786 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1670 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(2) - (2)].vsetstmt); } break; case 234: -#line 1672 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1672 "gram.y" { - VariableSetStmt *n = (yyvsp[0].vsetstmt); + VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->type = T_PgpoolVariableSetStmt; /* Hack to keep the changes minumum */ (yyval.node) = (Node *) n; } -#line 25796 "gram.c" /* yacc.c:1646 */ break; case 235: -#line 1680 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } -#line 25802 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1680 "gram.y" + { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); } break; case 236: -#line 1682 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1682 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "timezone"; (yyval.vsetstmt) = n; } -#line 25813 "gram.c" /* yacc.c:1646 */ break; case 237: -#line 1689 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1689 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "transaction_isolation"; (yyval.vsetstmt) = n; } -#line 25824 "gram.c" /* yacc.c:1646 */ break; case 238: -#line 1696 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1696 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "session_authorization"; (yyval.vsetstmt) = n; } -#line 25835 "gram.c" /* yacc.c:1646 */ break; case 239: -#line 1706 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1706 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(1) - (1)].str); (yyval.vsetstmt) = n; } -#line 25846 "gram.c" /* yacc.c:1646 */ break; case 240: -#line 1713 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1713 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; (yyval.vsetstmt) = n; } -#line 25856 "gram.c" /* yacc.c:1646 */ break; case 241: -#line 1722 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } -#line 25862 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1722 "gram.y" + { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); } break; case 242: -#line 1723 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[0].node); } -#line 25868 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1723 "gram.y" + { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); } break; case 243: -#line 1728 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } -#line 25874 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1728 "gram.y" + { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); } break; case 244: -#line 1729 "gram.y" /* yacc.c:1646 */ - { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[0].node); } -#line 25880 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1729 "gram.y" + { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); } break; case 245: -#line 1736 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1736 "gram.y" { VariableShowStmt *n = (VariableShowStmt *)newNode(sizeof(VariableShowStmt),T_PgpoolVariableShowStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; } -#line 25890 "gram.c" /* yacc.c:1646 */ break; case 246: -#line 1742 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1742 "gram.y" { VariableShowStmt *n = (VariableShowStmt *)newNode(sizeof(VariableShowStmt),T_PgpoolVariableShowStmt); n->name = "all"; (yyval.node) = (Node *) n; } -#line 25900 "gram.c" /* yacc.c:1646 */ break; case 247: -#line 1748 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1748 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; } -#line 25910 "gram.c" /* yacc.c:1646 */ break; case 248: -#line 1754 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1754 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "timezone"; (yyval.node) = (Node *) n; } -#line 25920 "gram.c" /* yacc.c:1646 */ break; case 249: -#line 1760 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1760 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "transaction_isolation"; (yyval.node) = (Node *) n; } -#line 25930 "gram.c" /* yacc.c:1646 */ break; case 250: -#line 1766 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1766 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "session_authorization"; (yyval.node) = (Node *) n; } -#line 25940 "gram.c" /* yacc.c:1646 */ break; case 251: -#line 1772 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1772 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "all"; (yyval.node) = (Node *) n; } -#line 25950 "gram.c" /* yacc.c:1646 */ break; case 252: -#line 1782 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1782 "gram.y" { ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); - n->constraints = (yyvsp[-1].list); - n->deferred = (yyvsp[0].boolean); + n->constraints = (yyvsp[(3) - (4)].list); + n->deferred = (yyvsp[(4) - (4)].boolean); (yyval.node) = (Node *) n; } -#line 25961 "gram.c" /* yacc.c:1646 */ break; case 253: -#line 1791 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1791 "gram.y" { (yyval.list) = NIL; } -#line 25967 "gram.c" /* yacc.c:1646 */ break; case 254: -#line 1792 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 25973 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1792 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 255: -#line 1796 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1796 "gram.y" { (yyval.boolean) = TRUE; } -#line 25979 "gram.c" /* yacc.c:1646 */ break; case 256: -#line 1797 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1797 "gram.y" { (yyval.boolean) = FALSE; } -#line 25985 "gram.c" /* yacc.c:1646 */ break; case 257: -#line 1806 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1806 "gram.y" { CheckPointStmt *n = makeNode(CheckPointStmt); (yyval.node) = (Node *)n; } -#line 25994 "gram.c" /* yacc.c:1646 */ break; case 258: -#line 1821 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1821 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_ALL; (yyval.node) = (Node *) n; } -#line 26004 "gram.c" /* yacc.c:1646 */ break; case 259: -#line 1827 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1827 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; } -#line 26014 "gram.c" /* yacc.c:1646 */ break; case 260: -#line 1833 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1833 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; } -#line 26024 "gram.c" /* yacc.c:1646 */ break; case 261: -#line 1839 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1839 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_PLANS; (yyval.node) = (Node *) n; } -#line 26034 "gram.c" /* yacc.c:1646 */ break; case 262: -#line 1845 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1845 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_SEQUENCES; (yyval.node) = (Node *) n; } -#line 26044 "gram.c" /* yacc.c:1646 */ break; case 263: -#line 1864 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1864 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26057 "gram.c" /* yacc.c:1646 */ break; case 264: -#line 1873 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1873 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26070 "gram.c" /* yacc.c:1646 */ break; case 265: -#line 1882 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1882 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = list_make1((yyvsp[0].node)); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = list_make1((yyvsp[(4) - (4)].node)); n->relkind = OBJECT_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26083 "gram.c" /* yacc.c:1646 */ break; case 266: -#line 1891 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1891 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = list_make1((yyvsp[0].node)); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = list_make1((yyvsp[(6) - (6)].node)); n->relkind = OBJECT_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26096 "gram.c" /* yacc.c:1646 */ break; case 267: -#line 1900 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1900 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-4].str); + n->orig_tablespacename = (yyvsp[(6) - (10)].str); n->objtype = OBJECT_TABLE; n->roles = NIL; - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->new_tablespacename = (yyvsp[(9) - (10)].str); + n->nowait = (yyvsp[(10) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 26111 "gram.c" /* yacc.c:1646 */ break; case 268: -#line 1911 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1911 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-7].str); + n->orig_tablespacename = (yyvsp[(6) - (13)].str); n->objtype = OBJECT_TABLE; - n->roles = (yyvsp[-4].list); - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->roles = (yyvsp[(9) - (13)].list); + n->new_tablespacename = (yyvsp[(12) - (13)].str); + n->nowait = (yyvsp[(13) - (13)].boolean); (yyval.node) = (Node *)n; } -#line 26126 "gram.c" /* yacc.c:1646 */ break; case 269: -#line 1922 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1922 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_INDEX; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26139 "gram.c" /* yacc.c:1646 */ break; case 270: -#line 1931 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1931 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_INDEX; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26152 "gram.c" /* yacc.c:1646 */ break; case 271: -#line 1940 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1940 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-4].str); + n->orig_tablespacename = (yyvsp[(6) - (10)].str); n->objtype = OBJECT_INDEX; n->roles = NIL; - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->new_tablespacename = (yyvsp[(9) - (10)].str); + n->nowait = (yyvsp[(10) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 26167 "gram.c" /* yacc.c:1646 */ break; case 272: -#line 1951 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1951 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-7].str); + n->orig_tablespacename = (yyvsp[(6) - (13)].str); n->objtype = OBJECT_INDEX; - n->roles = (yyvsp[-4].list); - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->roles = (yyvsp[(9) - (13)].list); + n->new_tablespacename = (yyvsp[(12) - (13)].str); + n->nowait = (yyvsp[(13) - (13)].boolean); (yyval.node) = (Node *)n; } -#line 26182 "gram.c" /* yacc.c:1646 */ break; case 273: -#line 1962 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1962 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_SEQUENCE; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26195 "gram.c" /* yacc.c:1646 */ break; case 274: -#line 1971 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1971 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_SEQUENCE; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26208 "gram.c" /* yacc.c:1646 */ break; case 275: -#line 1980 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1980 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_VIEW; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26221 "gram.c" /* yacc.c:1646 */ break; case 276: -#line 1989 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1989 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(5) - (6)].range); + n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_VIEW; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26234 "gram.c" /* yacc.c:1646 */ break; case 277: -#line 1998 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1998 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(4) - (5)].range); + n->cmds = (yyvsp[(5) - (5)].list); n->relkind = OBJECT_MATVIEW; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26247 "gram.c" /* yacc.c:1646 */ break; case 278: -#line 2007 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2007 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(6) - (7)].range); + n->cmds = (yyvsp[(7) - (7)].list); n->relkind = OBJECT_MATVIEW; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26260 "gram.c" /* yacc.c:1646 */ break; case 279: -#line 2016 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2016 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-4].str); + n->orig_tablespacename = (yyvsp[(7) - (11)].str); n->objtype = OBJECT_MATVIEW; n->roles = NIL; - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->new_tablespacename = (yyvsp[(10) - (11)].str); + n->nowait = (yyvsp[(11) - (11)].boolean); (yyval.node) = (Node *)n; } -#line 26275 "gram.c" /* yacc.c:1646 */ break; case 280: -#line 2027 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2027 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); - n->orig_tablespacename = (yyvsp[-7].str); + n->orig_tablespacename = (yyvsp[(7) - (14)].str); n->objtype = OBJECT_MATVIEW; - n->roles = (yyvsp[-4].list); - n->new_tablespacename = (yyvsp[-1].str); - n->nowait = (yyvsp[0].boolean); + n->roles = (yyvsp[(10) - (14)].list); + n->new_tablespacename = (yyvsp[(13) - (14)].str); + n->nowait = (yyvsp[(14) - (14)].boolean); (yyval.node) = (Node *)n; } -#line 26290 "gram.c" /* yacc.c:1646 */ break; case 281: -#line 2040 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 26296 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2040 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 282: -#line 2041 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 26302 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2041 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 283: -#line 2047 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2047 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_AttachPartition; - cmd->name = (yyvsp[-1].range); - cmd->bound = (yyvsp[0].partboundspec); + cmd->name = (yyvsp[(3) - (4)].range); + cmd->bound = (yyvsp[(4) - (4)].partboundspec); n->def = (Node *) cmd; (yyval.node) = (Node *) n; } -#line 26318 "gram.c" /* yacc.c:1646 */ break; case 284: -#line 2060 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2060 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_DetachPartition; - cmd->name = (yyvsp[0].range); + cmd->name = (yyvsp[(3) - (3)].range); cmd->bound = NULL; n->def = (Node *) cmd; (yyval.node) = (Node *) n; } -#line 26334 "gram.c" /* yacc.c:1646 */ break; case 285: -#line 2076 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2076 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(2) - (2)].node); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26346 "gram.c" /* yacc.c:1646 */ break; case 286: -#line 2085 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2085 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(5) - (5)].node); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26358 "gram.c" /* yacc.c:1646 */ break; case 287: -#line 2094 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2094 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(3) - (3)].node); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26370 "gram.c" /* yacc.c:1646 */ break; case 288: -#line 2103 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2103 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(6) - (6)].node); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26382 "gram.c" /* yacc.c:1646 */ break; case 289: -#line 2112 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2112 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ColumnDefault; - n->name = (yyvsp[-1].str); - n->def = (yyvsp[0].node); + n->name = (yyvsp[(3) - (4)].str); + n->def = (yyvsp[(4) - (4)].node); (yyval.node) = (Node *)n; } -#line 26394 "gram.c" /* yacc.c:1646 */ break; case 290: -#line 2121 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2121 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropNotNull; - n->name = (yyvsp[-3].str); + n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *)n; } -#line 26405 "gram.c" /* yacc.c:1646 */ break; case 291: -#line 2129 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2129 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetNotNull; - n->name = (yyvsp[-3].str); + n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *)n; } -#line 26416 "gram.c" /* yacc.c:1646 */ break; case 292: -#line 2137 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2137 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; - n->name = (yyvsp[-3].str); - n->def = (Node *) makeInteger((yyvsp[0].ival)); + n->name = (yyvsp[(3) - (6)].str); + n->def = (Node *) makeInteger((yyvsp[(6) - (6)].ival)); (yyval.node) = (Node *)n; } -#line 26428 "gram.c" /* yacc.c:1646 */ break; case 293: -#line 2146 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2146 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetOptions; - n->name = (yyvsp[-2].str); - n->def = (Node *) (yyvsp[0].list); + n->name = (yyvsp[(3) - (5)].str); + n->def = (Node *) (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 26440 "gram.c" /* yacc.c:1646 */ break; case 294: -#line 2155 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2155 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetOptions; - n->name = (yyvsp[-2].str); - n->def = (Node *) (yyvsp[0].list); + n->name = (yyvsp[(3) - (5)].str); + n->def = (Node *) (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 26452 "gram.c" /* yacc.c:1646 */ break; case 295: -#line 2164 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2164 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStorage; - n->name = (yyvsp[-3].str); - n->def = (Node *) makeString((yyvsp[0].str)); + n->name = (yyvsp[(3) - (6)].str); + n->def = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; } -#line 26464 "gram.c" /* yacc.c:1646 */ break; case 296: -#line 2173 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2173 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); c->contype = CONSTR_IDENTITY; - c->generated_when = (yyvsp[-3].ival); - c->options = (yyvsp[0].list); - c->location = (yylsp[-4]); + c->generated_when = (yyvsp[(6) - (9)].ival); + c->options = (yyvsp[(9) - (9)].list); + c->location = (yylsp[(5) - (9)]); n->subtype = AT_AddIdentity; - n->name = (yyvsp[-6].str); + n->name = (yyvsp[(3) - (9)].str); n->def = (Node *) c; (yyval.node) = (Node *)n; } -#line 26484 "gram.c" /* yacc.c:1646 */ break; case 297: -#line 2190 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2190 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetIdentity; - n->name = (yyvsp[-1].str); - n->def = (Node *) (yyvsp[0].list); + n->name = (yyvsp[(3) - (4)].str); + n->def = (Node *) (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 26496 "gram.c" /* yacc.c:1646 */ break; case 298: -#line 2199 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2199 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropIdentity; - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(3) - (5)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26508 "gram.c" /* yacc.c:1646 */ break; case 299: -#line 2208 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2208 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropIdentity; - n->name = (yyvsp[-4].str); + n->name = (yyvsp[(3) - (7)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 26520 "gram.c" /* yacc.c:1646 */ break; case 300: -#line 2217 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2217 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(5) - (6)].str); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 26533 "gram.c" /* yacc.c:1646 */ break; case 301: -#line 2227 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2227 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(3) - (4)].str); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 26546 "gram.c" /* yacc.c:1646 */ break; case 302: -#line 2240 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2240 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); n->subtype = AT_AlterColumnType; - n->name = (yyvsp[-5].str); + n->name = (yyvsp[(3) - (8)].str); n->def = (Node *) def; /* We only use these fields of the ColumnDef node */ - def->typeName = (yyvsp[-2].typnam); - def->collClause = (CollateClause *) (yyvsp[-1].node); - def->raw_default = (yyvsp[0].node); - def->location = (yylsp[-5]); + def->typeName = (yyvsp[(6) - (8)].typnam); + def->collClause = (CollateClause *) (yyvsp[(7) - (8)].node); + def->raw_default = (yyvsp[(8) - (8)].node); + def->location = (yylsp[(3) - (8)]); (yyval.node) = (Node *)n; } -#line 26564 "gram.c" /* yacc.c:1646 */ break; case 303: -#line 2255 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2255 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AlterColumnGenericOptions; - n->name = (yyvsp[-1].str); - n->def = (Node *) (yyvsp[0].list); + n->name = (yyvsp[(3) - (4)].str); + n->def = (Node *) (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 26576 "gram.c" /* yacc.c:1646 */ break; case 304: -#line 2264 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2264 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddConstraint; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(2) - (2)].node); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 26588 "gram.c" /* yacc.c:1646 */ break; case 305: -#line 2273 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2273 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); n->subtype = AT_AlterConstraint; n->def = (Node *) c; c->contype = CONSTR_FOREIGN; /* others not supported, yet */ - c->conname = (yyvsp[-1].str); - processCASbits((yyvsp[0].ival), (yylsp[0]), "ALTER CONSTRAINT statement", + c->conname = (yyvsp[(3) - (4)].str); + processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "ALTER CONSTRAINT statement", &c->deferrable, &c->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 26606 "gram.c" /* yacc.c:1646 */ break; case 306: -#line 2288 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2288 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ValidateConstraint; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26617 "gram.c" /* yacc.c:1646 */ break; case 307: -#line 2296 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2296 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(5) - (6)].str); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 26630 "gram.c" /* yacc.c:1646 */ break; case 308: -#line 2306 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2306 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(3) - (4)].str); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 26643 "gram.c" /* yacc.c:1646 */ break; case 309: -#line 2316 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2316 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddOids; (yyval.node) = (Node *)n; } -#line 26653 "gram.c" /* yacc.c:1646 */ break; case 310: -#line 2323 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2323 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOids; (yyval.node) = (Node *)n; } -#line 26663 "gram.c" /* yacc.c:1646 */ break; case 311: -#line 2330 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2330 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ClusterOn; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26674 "gram.c" /* yacc.c:1646 */ break; case 312: -#line 2338 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2338 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropCluster; n->name = NULL; (yyval.node) = (Node *)n; } -#line 26685 "gram.c" /* yacc.c:1646 */ break; case 313: -#line 2346 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2346 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetLogged; (yyval.node) = (Node *)n; } -#line 26695 "gram.c" /* yacc.c:1646 */ break; case 314: -#line 2353 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2353 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetUnLogged; (yyval.node) = (Node *)n; } -#line 26705 "gram.c" /* yacc.c:1646 */ break; case 315: -#line 2360 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2360 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26716 "gram.c" /* yacc.c:1646 */ break; case 316: -#line 2368 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2368 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 26727 "gram.c" /* yacc.c:1646 */ break; case 317: -#line 2376 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2376 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 26738 "gram.c" /* yacc.c:1646 */ break; case 318: -#line 2384 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2384 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigAll; (yyval.node) = (Node *)n; } -#line 26748 "gram.c" /* yacc.c:1646 */ break; case 319: -#line 2391 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2391 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigUser; (yyval.node) = (Node *)n; } -#line 26758 "gram.c" /* yacc.c:1646 */ break; case 320: -#line 2398 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2398 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrig; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26769 "gram.c" /* yacc.c:1646 */ break; case 321: -#line 2406 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2406 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigAll; (yyval.node) = (Node *)n; } -#line 26779 "gram.c" /* yacc.c:1646 */ break; case 322: -#line 2413 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2413 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigUser; (yyval.node) = (Node *)n; } -#line 26789 "gram.c" /* yacc.c:1646 */ break; case 323: -#line 2420 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2420 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26800 "gram.c" /* yacc.c:1646 */ break; case 324: -#line 2428 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2428 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 26811 "gram.c" /* yacc.c:1646 */ break; case 325: -#line 2436 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2436 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 26822 "gram.c" /* yacc.c:1646 */ break; case 326: -#line 2444 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2444 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRule; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26833 "gram.c" /* yacc.c:1646 */ break; case 327: -#line 2452 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2452 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddInherit; - n->def = (Node *) (yyvsp[0].range); + n->def = (Node *) (yyvsp[(2) - (2)].range); (yyval.node) = (Node *)n; } -#line 26844 "gram.c" /* yacc.c:1646 */ break; case 328: -#line 2460 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2460 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropInherit; - n->def = (Node *) (yyvsp[0].range); + n->def = (Node *) (yyvsp[(3) - (3)].range); (yyval.node) = (Node *)n; } -#line 26855 "gram.c" /* yacc.c:1646 */ break; case 329: -#line 2468 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2468 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); - TypeName *def = makeTypeNameFromNameList((yyvsp[0].list)); - def->location = (yylsp[0]); + TypeName *def = makeTypeNameFromNameList((yyvsp[(2) - (2)].list)); + def->location = (yylsp[(2) - (2)]); n->subtype = AT_AddOf; n->def = (Node *) def; (yyval.node) = (Node *)n; } -#line 26868 "gram.c" /* yacc.c:1646 */ break; case 330: -#line 2478 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2478 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOf; (yyval.node) = (Node *)n; } -#line 26878 "gram.c" /* yacc.c:1646 */ break; case 331: -#line 2485 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2485 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; - n->newowner = (yyvsp[0].rolespec); + n->newowner = (yyvsp[(3) - (3)].rolespec); (yyval.node) = (Node *)n; } -#line 26889 "gram.c" /* yacc.c:1646 */ break; case 332: -#line 2493 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2493 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetTableSpace; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 26900 "gram.c" /* yacc.c:1646 */ break; case 333: -#line 2501 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2501 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; - n->def = (Node *)(yyvsp[0].list); + n->def = (Node *)(yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; } -#line 26911 "gram.c" /* yacc.c:1646 */ break; case 334: -#line 2509 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2509 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; - n->def = (Node *)(yyvsp[0].list); + n->def = (Node *)(yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; } -#line 26922 "gram.c" /* yacc.c:1646 */ break; case 335: -#line 2517 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2517 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ReplicaIdentity; - n->def = (yyvsp[0].node); + n->def = (yyvsp[(3) - (3)].node); (yyval.node) = (Node *)n; } -#line 26933 "gram.c" /* yacc.c:1646 */ break; case 336: -#line 2525 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2525 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRowSecurity; (yyval.node) = (Node *)n; } -#line 26943 "gram.c" /* yacc.c:1646 */ break; case 337: -#line 2532 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2532 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRowSecurity; (yyval.node) = (Node *)n; } -#line 26953 "gram.c" /* yacc.c:1646 */ break; case 338: -#line 2539 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2539 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ForceRowSecurity; (yyval.node) = (Node *)n; } -#line 26963 "gram.c" /* yacc.c:1646 */ break; case 339: -#line 2546 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2546 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_NoForceRowSecurity; (yyval.node) = (Node *)n; } -#line 26973 "gram.c" /* yacc.c:1646 */ break; case 340: -#line 2552 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2552 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_GenericOptions; - n->def = (Node *)(yyvsp[0].list); + n->def = (Node *)(yyvsp[(1) - (1)].list); (yyval.node) = (Node *) n; } -#line 26984 "gram.c" /* yacc.c:1646 */ break; case 341: -#line 2561 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 26990 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2561 "gram.y" + { (yyval.node) = (yyvsp[(3) - (3)].node); } break; case 342: -#line 2562 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2562 "gram.y" { (yyval.node) = NULL; } -#line 26996 "gram.c" /* yacc.c:1646 */ break; case 343: -#line 2566 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2566 "gram.y" { (yyval.dbehavior) = DROP_CASCADE; } -#line 27002 "gram.c" /* yacc.c:1646 */ break; case 344: -#line 2567 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2567 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; } -#line 27008 "gram.c" /* yacc.c:1646 */ break; case 345: -#line 2568 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2568 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; /* default */ } -#line 27014 "gram.c" /* yacc.c:1646 */ break; case 346: -#line 2573 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2573 "gram.y" { CollateClause *n = makeNode(CollateClause); n->arg = NULL; - n->collname = (yyvsp[0].list); - n->location = (yylsp[-1]); + n->collname = (yyvsp[(2) - (2)].list); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; } -#line 27026 "gram.c" /* yacc.c:1646 */ break; case 347: -#line 2580 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2580 "gram.y" { (yyval.node) = NULL; } -#line 27032 "gram.c" /* yacc.c:1646 */ break; case 348: -#line 2584 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 27038 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2584 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 349: -#line 2585 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2585 "gram.y" { (yyval.node) = NULL; } -#line 27044 "gram.c" /* yacc.c:1646 */ break; case 350: -#line 2590 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2590 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_NOTHING; n->name = NULL; (yyval.node) = (Node *) n; } -#line 27055 "gram.c" /* yacc.c:1646 */ break; case 351: -#line 2597 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2597 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_FULL; n->name = NULL; (yyval.node) = (Node *) n; } -#line 27066 "gram.c" /* yacc.c:1646 */ break; case 352: -#line 2604 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2604 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_DEFAULT; n->name = NULL; (yyval.node) = (Node *) n; } -#line 27077 "gram.c" /* yacc.c:1646 */ break; case 353: -#line 2611 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2611 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_INDEX; - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; } -#line 27088 "gram.c" /* yacc.c:1646 */ break; case 354: -#line 2620 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 27094 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2620 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 355: -#line 2623 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27100 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2623 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 356: -#line 2624 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2624 "gram.y" { (yyval.list) = NIL; } -#line 27106 "gram.c" /* yacc.c:1646 */ break; case 357: -#line 2628 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 27112 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2628 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 358: -#line 2629 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 27118 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2629 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; case 359: -#line 2635 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2635 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node), (yylsp[-2])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); } -#line 27126 "gram.c" /* yacc.c:1646 */ break; case 360: -#line 2639 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2639 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL, (yylsp[0])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); } -#line 27134 "gram.c" /* yacc.c:1646 */ break; case 361: -#line 2643 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2643 "gram.y" { - (yyval.defelt) = makeDefElemExtended((yyvsp[-4].str), (yyvsp[-2].str), (Node *) (yyvsp[0].node), - DEFELEM_UNSPEC, (yylsp[-4])); + (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (Node *) (yyvsp[(5) - (5)].node), + DEFELEM_UNSPEC, (yylsp[(1) - (5)])); } -#line 27143 "gram.c" /* yacc.c:1646 */ break; case 362: -#line 2648 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2648 "gram.y" { - (yyval.defelt) = makeDefElemExtended((yyvsp[-2].str), (yyvsp[0].str), NULL, DEFELEM_UNSPEC, (yylsp[-2])); + (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, DEFELEM_UNSPEC, (yylsp[(1) - (3)])); } -#line 27151 "gram.c" /* yacc.c:1646 */ break; case 363: -#line 2655 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 27157 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2655 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 364: -#line 2657 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 27163 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2657 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 365: -#line 2662 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2662 "gram.y" { - (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[0])); + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); } -#line 27171 "gram.c" /* yacc.c:1646 */ break; case 366: -#line 2666 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2666 "gram.y" { - (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[0].value), (yylsp[-2])); + (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); } -#line 27179 "gram.c" /* yacc.c:1646 */ break; case 367: -#line 2670 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2670 "gram.y" { - if (strcmp((yyvsp[0].defelt)->defname, "as") == 0 || - strcmp((yyvsp[0].defelt)->defname, "restart") == 0 || - strcmp((yyvsp[0].defelt)->defname, "owned_by") == 0) + if (strcmp((yyvsp[(2) - (2)].defelt)->defname, "as") == 0 || + strcmp((yyvsp[(2) - (2)].defelt)->defname, "restart") == 0 || + strcmp((yyvsp[(2) - (2)].defelt)->defname, "owned_by") == 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("sequence option \"%s\" not supported here", (yyvsp[0].defelt)->defname), - parser_errposition((yylsp[0])))); - (yyval.defelt) = (yyvsp[0].defelt); + errmsg("sequence option \"%s\" not supported here", (yyvsp[(2) - (2)].defelt)->defname), + parser_errposition((yylsp[(2) - (2)])))); + (yyval.defelt) = (yyvsp[(2) - (2)].defelt); } -#line 27194 "gram.c" /* yacc.c:1646 */ break; case 368: -#line 2681 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2681 "gram.y" { - (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[0].ival)), (yylsp[-2])); + (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); } -#line 27202 "gram.c" /* yacc.c:1646 */ break; case 369: -#line 2689 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2689 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->strategy = PARTITION_STRATEGY_LIST; - n->listdatums = (yyvsp[-1].list); - n->location = (yylsp[-3]); + n->listdatums = (yyvsp[(5) - (6)].list); + n->location = (yylsp[(3) - (6)]); (yyval.partboundspec) = n; } -#line 27216 "gram.c" /* yacc.c:1646 */ break; case 370: -#line 2701 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2701 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->strategy = PARTITION_STRATEGY_RANGE; - n->lowerdatums = (yyvsp[-5].list); - n->upperdatums = (yyvsp[-1].list); - n->location = (yylsp[-7]); + n->lowerdatums = (yyvsp[(5) - (10)].list); + n->upperdatums = (yyvsp[(9) - (10)].list); + n->location = (yylsp[(3) - (10)]); (yyval.partboundspec) = n; } -#line 27231 "gram.c" /* yacc.c:1646 */ break; case 371: -#line 2714 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } -#line 27237 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2714 "gram.y" + { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } break; case 372: -#line 2715 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } -#line 27243 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2715 "gram.y" + { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); } break; case 373: -#line 2716 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeNullAConst((yylsp[0])); } -#line 27249 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2716 "gram.y" + { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); } break; case 374: -#line 2720 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 27255 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2720 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 375: -#line 2722 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 27261 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2722 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 376: -#line 2726 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 27267 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2726 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 377: -#line 2728 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 27273 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2728 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 378: -#line 2733 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2733 "gram.y" { PartitionRangeDatum *n = makeNode(PartitionRangeDatum); n->kind = PARTITION_RANGE_DATUM_MINVALUE; n->value = NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *) n; } -#line 27287 "gram.c" /* yacc.c:1646 */ break; case 379: -#line 2743 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2743 "gram.y" { PartitionRangeDatum *n = makeNode(PartitionRangeDatum); n->kind = PARTITION_RANGE_DATUM_MAXVALUE; n->value = NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *) n; } -#line 27301 "gram.c" /* yacc.c:1646 */ break; case 380: -#line 2753 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2753 "gram.y" { PartitionRangeDatum *n = makeNode(PartitionRangeDatum); n->kind = PARTITION_RANGE_DATUM_VALUE; - n->value = (yyvsp[0].node); - n->location = (yylsp[0]); + n->value = (yyvsp[(1) - (1)].node); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *) n; } -#line 27315 "gram.c" /* yacc.c:1646 */ break; case 381: -#line 2773 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2773 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); /* can't use qualified_name, sigh */ - n->relation = makeRangeVarFromAnyName((yyvsp[-1].list), (yylsp[-1]), yyscanner); - n->cmds = (yyvsp[0].list); + n->relation = makeRangeVarFromAnyName((yyvsp[(3) - (4)].list), (yylsp[(3) - (4)]), yyscanner); + n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_TYPE; (yyval.node) = (Node *)n; } -#line 27329 "gram.c" /* yacc.c:1646 */ break; case 382: -#line 2785 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 27335 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2785 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 383: -#line 2786 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 27341 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2786 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 384: -#line 2792 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2792 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; - n->def = (yyvsp[-1].node); - n->behavior = (yyvsp[0].dbehavior); + n->def = (yyvsp[(3) - (4)].node); + n->behavior = (yyvsp[(4) - (4)].dbehavior); (yyval.node) = (Node *)n; } -#line 27353 "gram.c" /* yacc.c:1646 */ break; case 385: -#line 2801 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2801 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(5) - (6)].str); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 27366 "gram.c" /* yacc.c:1646 */ break; case 386: -#line 2811 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2811 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->name = (yyvsp[(3) - (4)].str); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 27379 "gram.c" /* yacc.c:1646 */ break; case 387: -#line 2821 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2821 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); n->subtype = AT_AlterColumnType; - n->name = (yyvsp[-5].str); + n->name = (yyvsp[(3) - (8)].str); n->def = (Node *) def; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(8) - (8)].dbehavior); /* We only use these fields of the ColumnDef node */ - def->typeName = (yyvsp[-2].typnam); - def->collClause = (CollateClause *) (yyvsp[-1].node); + def->typeName = (yyvsp[(6) - (8)].typnam); + def->collClause = (CollateClause *) (yyvsp[(7) - (8)].node); def->raw_default = NULL; - def->location = (yylsp[-5]); + def->location = (yylsp[(3) - (8)]); (yyval.node) = (Node *)n; } -#line 27398 "gram.c" /* yacc.c:1646 */ break; case 388: -#line 2847 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2847 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 27408 "gram.c" /* yacc.c:1646 */ break; case 389: -#line 2853 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2853 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = NULL; (yyval.node) = (Node *)n; } -#line 27418 "gram.c" /* yacc.c:1646 */ break; case 390: -#line 2887 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2887 "gram.y" { CopyStmt *n = makeNode(CopyStmt); - n->relation = (yyvsp[-8].range); + n->relation = (yyvsp[(3) - (11)].range); n->query = NULL; - n->attlist = (yyvsp[-7].list); - n->is_from = (yyvsp[-5].boolean); - n->is_program = (yyvsp[-4].boolean); - n->filename = (yyvsp[-3].str); + n->attlist = (yyvsp[(4) - (11)].list); + n->is_from = (yyvsp[(6) - (11)].boolean); + n->is_program = (yyvsp[(7) - (11)].boolean); + n->filename = (yyvsp[(8) - (11)].str); if (n->is_program && n->filename == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[-3])))); + parser_errposition((yylsp[(8) - (11)])))); n->options = NIL; /* Concatenate user-supplied flags */ - if ((yyvsp[-9].defelt)) - n->options = lappend(n->options, (yyvsp[-9].defelt)); - if ((yyvsp[-6].defelt)) - n->options = lappend(n->options, (yyvsp[-6].defelt)); - if ((yyvsp[-2].defelt)) - n->options = lappend(n->options, (yyvsp[-2].defelt)); - if ((yyvsp[0].list)) - n->options = list_concat(n->options, (yyvsp[0].list)); + if ((yyvsp[(2) - (11)].defelt)) + n->options = lappend(n->options, (yyvsp[(2) - (11)].defelt)); + if ((yyvsp[(5) - (11)].defelt)) + n->options = lappend(n->options, (yyvsp[(5) - (11)].defelt)); + if ((yyvsp[(9) - (11)].defelt)) + n->options = lappend(n->options, (yyvsp[(9) - (11)].defelt)); + if ((yyvsp[(11) - (11)].list)) + n->options = list_concat(n->options, (yyvsp[(11) - (11)].list)); (yyval.node) = (Node *)n; } -#line 27450 "gram.c" /* yacc.c:1646 */ break; case 391: -#line 2915 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2915 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = NULL; - n->query = (yyvsp[-6].node); + n->query = (yyvsp[(3) - (9)].node); n->attlist = NIL; n->is_from = false; - n->is_program = (yyvsp[-3].boolean); - n->filename = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->is_program = (yyvsp[(6) - (9)].boolean); + n->filename = (yyvsp[(7) - (9)].str); + n->options = (yyvsp[(9) - (9)].list); if (n->is_program && n->filename == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[-4])))); + parser_errposition((yylsp[(5) - (9)])))); (yyval.node) = (Node *)n; } -#line 27473 "gram.c" /* yacc.c:1646 */ break; case 392: -#line 2936 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2936 "gram.y" { (yyval.boolean) = TRUE; } -#line 27479 "gram.c" /* yacc.c:1646 */ break; case 393: -#line 2937 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2937 "gram.y" { (yyval.boolean) = FALSE; } -#line 27485 "gram.c" /* yacc.c:1646 */ break; case 394: -#line 2941 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2941 "gram.y" { (yyval.boolean) = TRUE; } -#line 27491 "gram.c" /* yacc.c:1646 */ break; case 395: -#line 2942 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2942 "gram.y" { (yyval.boolean) = FALSE; } -#line 27497 "gram.c" /* yacc.c:1646 */ break; case 396: -#line 2951 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 27503 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2951 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 397: -#line 2952 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2952 "gram.y" { (yyval.str) = NULL; } -#line 27509 "gram.c" /* yacc.c:1646 */ break; case 398: -#line 2953 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2953 "gram.y" { (yyval.str) = NULL; } -#line 27515 "gram.c" /* yacc.c:1646 */ break; case 399: -#line 2956 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27521 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2956 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 400: -#line 2957 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 27527 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2957 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 401: -#line 2962 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 27533 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2962 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 402: -#line 2963 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2963 "gram.y" { (yyval.list) = NIL; } -#line 27539 "gram.c" /* yacc.c:1646 */ break; case 403: -#line 2968 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2968 "gram.y" { - (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[0])); + (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); } -#line 27547 "gram.c" /* yacc.c:1646 */ break; case 404: -#line 2972 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2972 "gram.y" { - (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 27555 "gram.c" /* yacc.c:1646 */ break; case 405: -#line 2976 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2976 "gram.y" { - (yyval.defelt) = makeDefElem("freeze", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("freeze", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 27563 "gram.c" /* yacc.c:1646 */ break; case 406: -#line 2980 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2980 "gram.y" { - (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[0].str)), (yylsp[-2])); + (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 27571 "gram.c" /* yacc.c:1646 */ break; case 407: -#line 2984 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2984 "gram.y" { - (yyval.defelt) = makeDefElem("null", (Node *)makeString((yyvsp[0].str)), (yylsp[-2])); + (yyval.defelt) = makeDefElem("null", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 27579 "gram.c" /* yacc.c:1646 */ break; case 408: -#line 2988 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2988 "gram.y" { - (yyval.defelt) = makeDefElem("format", (Node *)makeString("csv"), (yylsp[0])); + (yyval.defelt) = makeDefElem("format", (Node *)makeString("csv"), (yylsp[(1) - (1)])); } -#line 27587 "gram.c" /* yacc.c:1646 */ break; case 409: -#line 2992 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2992 "gram.y" { - (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 27595 "gram.c" /* yacc.c:1646 */ break; case 410: -#line 2996 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2996 "gram.y" { - (yyval.defelt) = makeDefElem("quote", (Node *)makeString((yyvsp[0].str)), (yylsp[-2])); + (yyval.defelt) = makeDefElem("quote", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 27603 "gram.c" /* yacc.c:1646 */ break; case 411: -#line 3000 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3000 "gram.y" { - (yyval.defelt) = makeDefElem("escape", (Node *)makeString((yyvsp[0].str)), (yylsp[-2])); + (yyval.defelt) = makeDefElem("escape", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 27611 "gram.c" /* yacc.c:1646 */ break; case 412: -#line 3004 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3004 "gram.y" { - (yyval.defelt) = makeDefElem("force_quote", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("force_quote", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 27619 "gram.c" /* yacc.c:1646 */ break; case 413: -#line 3008 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3008 "gram.y" { - (yyval.defelt) = makeDefElem("force_quote", (Node *)makeNode(A_Star), (yylsp[-2])); + (yyval.defelt) = makeDefElem("force_quote", (Node *)makeNode(A_Star), (yylsp[(1) - (3)])); } -#line 27627 "gram.c" /* yacc.c:1646 */ break; case 414: -#line 3012 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3012 "gram.y" { - (yyval.defelt) = makeDefElem("force_not_null", (Node *)(yyvsp[0].list), (yylsp[-3])); + (yyval.defelt) = makeDefElem("force_not_null", (Node *)(yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); } -#line 27635 "gram.c" /* yacc.c:1646 */ break; case 415: -#line 3016 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3016 "gram.y" { - (yyval.defelt) = makeDefElem("force_null", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("force_null", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 27643 "gram.c" /* yacc.c:1646 */ break; case 416: -#line 3020 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3020 "gram.y" { - (yyval.defelt) = makeDefElem("encoding", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("encoding", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 27651 "gram.c" /* yacc.c:1646 */ break; case 417: -#line 3029 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3029 "gram.y" { - (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[0])); + (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); } -#line 27659 "gram.c" /* yacc.c:1646 */ break; case 418: -#line 3032 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3032 "gram.y" { (yyval.defelt) = NULL; } -#line 27665 "gram.c" /* yacc.c:1646 */ break; case 419: -#line 3037 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3037 "gram.y" { - (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[-1])); + (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[(1) - (2)])); } -#line 27673 "gram.c" /* yacc.c:1646 */ break; case 420: -#line 3040 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3040 "gram.y" { (yyval.defelt) = NULL; } -#line 27679 "gram.c" /* yacc.c:1646 */ break; case 421: -#line 3045 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3045 "gram.y" { - (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); } -#line 27687 "gram.c" /* yacc.c:1646 */ break; case 422: -#line 3048 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3048 "gram.y" { (yyval.defelt) = NULL; } -#line 27693 "gram.c" /* yacc.c:1646 */ break; case 423: -#line 3052 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3052 "gram.y" {} -#line 27699 "gram.c" /* yacc.c:1646 */ break; case 424: -#line 3053 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3053 "gram.y" {} -#line 27705 "gram.c" /* yacc.c:1646 */ break; case 425: -#line 3059 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3059 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 27713 "gram.c" /* yacc.c:1646 */ break; case 426: -#line 3063 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3063 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 27721 "gram.c" /* yacc.c:1646 */ break; case 427: -#line 3070 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3070 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } -#line 27729 "gram.c" /* yacc.c:1646 */ break; case 428: -#line 3076 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 27735 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3076 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; case 429: -#line 3077 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[0].value); } -#line 27741 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3077 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); } break; case 430: -#line 3078 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3078 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); } -#line 27747 "gram.c" /* yacc.c:1646 */ break; case 431: -#line 3079 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[-1].list); } -#line 27753 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3079 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); } break; case 432: -#line 3080 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3080 "gram.y" { (yyval.node) = NULL; } -#line 27759 "gram.c" /* yacc.c:1646 */ break; case 433: -#line 3085 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3085 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 27767 "gram.c" /* yacc.c:1646 */ break; case 434: -#line 3089 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3089 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 27775 "gram.c" /* yacc.c:1646 */ break; case 435: -#line 3096 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 27781 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3096 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; case 436: -#line 3109 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3109 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-8].range)->relpersistence = (yyvsp[-10].ival); - n->relation = (yyvsp[-8].range); - n->tableElts = (yyvsp[-6].list); - n->inhRelations = (yyvsp[-4].list); - n->partspec = (yyvsp[-3].partspec); + (yyvsp[(4) - (12)].range)->relpersistence = (yyvsp[(2) - (12)].ival); + n->relation = (yyvsp[(4) - (12)].range); + n->tableElts = (yyvsp[(6) - (12)].list); + n->inhRelations = (yyvsp[(8) - (12)].list); + n->partspec = (yyvsp[(9) - (12)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(10) - (12)].list); + n->oncommit = (yyvsp[(11) - (12)].oncommit); + n->tablespacename = (yyvsp[(12) - (12)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 27801 "gram.c" /* yacc.c:1646 */ break; case 437: -#line 3127 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3127 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-8].range)->relpersistence = (yyvsp[-13].ival); - n->relation = (yyvsp[-8].range); - n->tableElts = (yyvsp[-6].list); - n->inhRelations = (yyvsp[-4].list); - n->partspec = (yyvsp[-3].partspec); + (yyvsp[(7) - (15)].range)->relpersistence = (yyvsp[(2) - (15)].ival); + n->relation = (yyvsp[(7) - (15)].range); + n->tableElts = (yyvsp[(9) - (15)].list); + n->inhRelations = (yyvsp[(11) - (15)].list); + n->partspec = (yyvsp[(12) - (15)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(13) - (15)].list); + n->oncommit = (yyvsp[(14) - (15)].oncommit); + n->tablespacename = (yyvsp[(15) - (15)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 27821 "gram.c" /* yacc.c:1646 */ break; case 438: -#line 3145 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3145 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-7].range)->relpersistence = (yyvsp[-9].ival); - n->relation = (yyvsp[-7].range); - n->tableElts = (yyvsp[-4].list); + (yyvsp[(4) - (11)].range)->relpersistence = (yyvsp[(2) - (11)].ival); + n->relation = (yyvsp[(4) - (11)].range); + n->tableElts = (yyvsp[(7) - (11)].list); n->inhRelations = NIL; - n->partspec = (yyvsp[-3].partspec); - n->ofTypename = makeTypeNameFromNameList((yyvsp[-5].list)); - n->ofTypename->location = (yylsp[-5]); + n->partspec = (yyvsp[(8) - (11)].partspec); + n->ofTypename = makeTypeNameFromNameList((yyvsp[(6) - (11)].list)); + n->ofTypename->location = (yylsp[(6) - (11)]); n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(9) - (11)].list); + n->oncommit = (yyvsp[(10) - (11)].oncommit); + n->tablespacename = (yyvsp[(11) - (11)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 27842 "gram.c" /* yacc.c:1646 */ break; case 439: -#line 3164 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3164 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-7].range)->relpersistence = (yyvsp[-12].ival); - n->relation = (yyvsp[-7].range); - n->tableElts = (yyvsp[-4].list); + (yyvsp[(7) - (14)].range)->relpersistence = (yyvsp[(2) - (14)].ival); + n->relation = (yyvsp[(7) - (14)].range); + n->tableElts = (yyvsp[(10) - (14)].list); n->inhRelations = NIL; - n->partspec = (yyvsp[-3].partspec); - n->ofTypename = makeTypeNameFromNameList((yyvsp[-5].list)); - n->ofTypename->location = (yylsp[-5]); + n->partspec = (yyvsp[(11) - (14)].partspec); + n->ofTypename = makeTypeNameFromNameList((yyvsp[(9) - (14)].list)); + n->ofTypename->location = (yylsp[(9) - (14)]); n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(12) - (14)].list); + n->oncommit = (yyvsp[(13) - (14)].oncommit); + n->tablespacename = (yyvsp[(14) - (14)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 27863 "gram.c" /* yacc.c:1646 */ break; case 440: -#line 3183 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3183 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-9].range)->relpersistence = (yyvsp[-11].ival); - n->relation = (yyvsp[-9].range); - n->tableElts = (yyvsp[-5].list); - n->inhRelations = list_make1((yyvsp[-6].range)); - n->partbound = (yyvsp[-4].partboundspec); - n->partspec = (yyvsp[-3].partspec); + (yyvsp[(4) - (13)].range)->relpersistence = (yyvsp[(2) - (13)].ival); + n->relation = (yyvsp[(4) - (13)].range); + n->tableElts = (yyvsp[(8) - (13)].list); + n->inhRelations = list_make1((yyvsp[(7) - (13)].range)); + n->partbound = (yyvsp[(9) - (13)].partboundspec); + n->partspec = (yyvsp[(10) - (13)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(11) - (13)].list); + n->oncommit = (yyvsp[(12) - (13)].oncommit); + n->tablespacename = (yyvsp[(13) - (13)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 27884 "gram.c" /* yacc.c:1646 */ break; case 441: -#line 3202 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3202 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[-9].range)->relpersistence = (yyvsp[-14].ival); - n->relation = (yyvsp[-9].range); - n->tableElts = (yyvsp[-5].list); - n->inhRelations = list_make1((yyvsp[-6].range)); - n->partbound = (yyvsp[-4].partboundspec); - n->partspec = (yyvsp[-3].partspec); + (yyvsp[(7) - (16)].range)->relpersistence = (yyvsp[(2) - (16)].ival); + n->relation = (yyvsp[(7) - (16)].range); + n->tableElts = (yyvsp[(11) - (16)].list); + n->inhRelations = list_make1((yyvsp[(10) - (16)].range)); + n->partbound = (yyvsp[(12) - (16)].partboundspec); + n->partspec = (yyvsp[(13) - (16)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[-2].list); - n->oncommit = (yyvsp[-1].oncommit); - n->tablespacename = (yyvsp[0].str); + n->options = (yyvsp[(14) - (16)].list); + n->oncommit = (yyvsp[(15) - (16)].oncommit); + n->tablespacename = (yyvsp[(16) - (16)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 27905 "gram.c" /* yacc.c:1646 */ break; case 442: -#line 3231 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3231 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 27911 "gram.c" /* yacc.c:1646 */ break; case 443: -#line 3232 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3232 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 27917 "gram.c" /* yacc.c:1646 */ break; case 444: -#line 3233 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3233 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 27923 "gram.c" /* yacc.c:1646 */ break; case 445: -#line 3234 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3234 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 27929 "gram.c" /* yacc.c:1646 */ break; case 446: -#line 3236 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3236 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 27940 "gram.c" /* yacc.c:1646 */ break; case 447: -#line 3243 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3243 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; } -#line 27951 "gram.c" /* yacc.c:1646 */ break; case 448: -#line 3249 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3249 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; } -#line 27957 "gram.c" /* yacc.c:1646 */ break; case 449: -#line 3250 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3250 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; } -#line 27963 "gram.c" /* yacc.c:1646 */ break; case 450: -#line 3254 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 27969 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3254 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 451: -#line 3255 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3255 "gram.y" { (yyval.list) = NIL; } -#line 27975 "gram.c" /* yacc.c:1646 */ break; case 452: -#line 3259 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 27981 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3259 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 453: -#line 3260 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3260 "gram.y" { (yyval.list) = NIL; } -#line 27987 "gram.c" /* yacc.c:1646 */ break; case 454: -#line 3265 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3265 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 27995 "gram.c" /* yacc.c:1646 */ break; case 455: -#line 3269 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3269 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 28003 "gram.c" /* yacc.c:1646 */ break; case 456: -#line 3276 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3276 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 28011 "gram.c" /* yacc.c:1646 */ break; case 457: -#line 3280 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3280 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 28019 "gram.c" /* yacc.c:1646 */ break; case 458: -#line 3286 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28025 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3286 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 459: -#line 3287 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28031 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3287 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 460: -#line 3288 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28037 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3288 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 461: -#line 3292 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28043 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3292 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 462: -#line 3293 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28049 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3293 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 463: -#line 3297 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3297 "gram.y" { ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[-3].str); - n->typeName = (yyvsp[-2].typnam); + n->colname = (yyvsp[(1) - (4)].str); + n->typeName = (yyvsp[(2) - (4)].typnam); n->inhcount = 0; n->is_local = true; n->is_not_null = false; @@ -28063,20 +29451,20 @@ yyreduce: n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; - n->fdwoptions = (yyvsp[-1].list); - SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + n->fdwoptions = (yyvsp[(3) - (4)].list); + SplitColQualList((yyvsp[(4) - (4)].list), &n->constraints, &n->collClause, yyscanner); - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)n; } -#line 28073 "gram.c" /* yacc.c:1646 */ break; case 464: -#line 3319 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3319 "gram.y" { ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[-1].str); + n->colname = (yyvsp[(1) - (2)].str); n->typeName = NULL; n->inhcount = 0; n->is_local = true; @@ -28087,19 +29475,19 @@ yyreduce: n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; - SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + SplitColQualList((yyvsp[(2) - (2)].list), &n->constraints, &n->collClause, yyscanner); - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 28096 "gram.c" /* yacc.c:1646 */ break; case 465: -#line 3338 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3338 "gram.y" { ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[-3].str); + n->colname = (yyvsp[(1) - (4)].str); n->typeName = NULL; n->inhcount = 0; n->is_local = true; @@ -28110,51 +29498,51 @@ yyreduce: n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; - SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + SplitColQualList((yyvsp[(4) - (4)].list), &n->constraints, &n->collClause, yyscanner); - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)n; } -#line 28119 "gram.c" /* yacc.c:1646 */ break; case 466: -#line 3359 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 28125 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3359 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; case 467: -#line 3360 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3360 "gram.y" { (yyval.list) = NIL; } -#line 28131 "gram.c" /* yacc.c:1646 */ break; case 468: -#line 3365 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3365 "gram.y" { - Constraint *n = castNode(Constraint, (yyvsp[0].node)); - n->conname = (yyvsp[-1].str); - n->location = (yylsp[-2]); + Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); + n->conname = (yyvsp[(2) - (3)].str); + n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) n; } -#line 28142 "gram.c" /* yacc.c:1646 */ break; case 469: -#line 3371 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28148 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3371 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 470: -#line 3372 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28154 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3372 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 471: -#line 3374 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3374 "gram.y" { /* * Note: the CollateClause is momentarily included in @@ -28163,1206 +29551,1206 @@ yyreduce: */ CollateClause *n = makeNode(CollateClause); n->arg = NULL; - n->collname = (yyvsp[0].list); - n->location = (yylsp[-1]); + n->collname = (yyvsp[(2) - (2)].list); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; } -#line 28171 "gram.c" /* yacc.c:1646 */ break; case 472: -#line 3405 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3405 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 28182 "gram.c" /* yacc.c:1646 */ break; case 473: -#line 3412 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3412 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; } -#line 28193 "gram.c" /* yacc.c:1646 */ break; case 474: -#line 3419 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3419 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; - n->location = (yylsp[-2]); + n->location = (yylsp[(1) - (3)]); n->keys = NULL; - n->options = (yyvsp[-1].list); + n->options = (yyvsp[(2) - (3)].list); n->indexname = NULL; - n->indexspace = (yyvsp[0].str); + n->indexspace = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 28208 "gram.c" /* yacc.c:1646 */ break; case 475: -#line 3430 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3430 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (4)]); n->keys = NULL; - n->options = (yyvsp[-1].list); + n->options = (yyvsp[(3) - (4)].list); n->indexname = NULL; - n->indexspace = (yyvsp[0].str); + n->indexspace = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; } -#line 28223 "gram.c" /* yacc.c:1646 */ break; case 476: -#line 3441 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3441 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; - n->location = (yylsp[-4]); - n->is_no_inherit = (yyvsp[0].boolean); - n->raw_expr = (yyvsp[-2].node); + n->location = (yylsp[(1) - (5)]); + n->is_no_inherit = (yyvsp[(5) - (5)].boolean); + n->raw_expr = (yyvsp[(3) - (5)].node); n->cooked_expr = NULL; n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; } -#line 28239 "gram.c" /* yacc.c:1646 */ break; case 477: -#line 3453 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3453 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_DEFAULT; - n->location = (yylsp[-1]); - n->raw_expr = (yyvsp[0].node); + n->location = (yylsp[(1) - (2)]); + n->raw_expr = (yyvsp[(2) - (2)].node); n->cooked_expr = NULL; n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; } -#line 28254 "gram.c" /* yacc.c:1646 */ break; case 478: -#line 3464 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3464 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_IDENTITY; - n->generated_when = (yyvsp[-3].ival); - n->options = (yyvsp[0].list); - n->location = (yylsp[-4]); + n->generated_when = (yyvsp[(2) - (5)].ival); + n->options = (yyvsp[(5) - (5)].list); + n->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *)n; } -#line 28267 "gram.c" /* yacc.c:1646 */ break; case 479: -#line 3473 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3473 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; - n->location = (yylsp[-4]); - n->pktable = (yyvsp[-3].range); + n->location = (yylsp[(1) - (5)]); + n->pktable = (yyvsp[(2) - (5)].range); n->fk_attrs = NIL; - n->pk_attrs = (yyvsp[-2].list); - n->fk_matchtype = (yyvsp[-1].ival); - n->fk_upd_action = (char) ((yyvsp[0].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[0].ival) & 0xFF); + n->pk_attrs = (yyvsp[(3) - (5)].list); + n->fk_matchtype = (yyvsp[(4) - (5)].ival); + n->fk_upd_action = (char) ((yyvsp[(5) - (5)].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[(5) - (5)].ival) & 0xFF); n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; } -#line 28286 "gram.c" /* yacc.c:1646 */ break; case 480: -#line 3490 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3490 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_ALWAYS; } -#line 28292 "gram.c" /* yacc.c:1646 */ break; case 481: -#line 3491 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3491 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; } -#line 28298 "gram.c" /* yacc.c:1646 */ break; case 482: -#line 3511 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3511 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRABLE; - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; } -#line 28309 "gram.c" /* yacc.c:1646 */ break; case 483: -#line 3518 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3518 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_NOT_DEFERRABLE; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 28320 "gram.c" /* yacc.c:1646 */ break; case 484: -#line 3525 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3525 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRED; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 28331 "gram.c" /* yacc.c:1646 */ break; case 485: -#line 3532 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3532 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_IMMEDIATE; - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 28342 "gram.c" /* yacc.c:1646 */ break; case 486: -#line 3543 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3543 "gram.y" { TableLikeClause *n = makeNode(TableLikeClause); - n->relation = (yyvsp[-1].range); - n->options = (yyvsp[0].ival); + n->relation = (yyvsp[(2) - (3)].range); + n->options = (yyvsp[(3) - (3)].ival); (yyval.node) = (Node *)n; } -#line 28353 "gram.c" /* yacc.c:1646 */ break; case 487: -#line 3552 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } -#line 28359 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3552 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); } break; case 488: -#line 3553 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) & ~(yyvsp[0].ival); } -#line 28365 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3553 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); } break; case 489: -#line 3554 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3554 "gram.y" { (yyval.ival) = 0; } -#line 28371 "gram.c" /* yacc.c:1646 */ break; case 490: -#line 3558 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3558 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_DEFAULTS; } -#line 28377 "gram.c" /* yacc.c:1646 */ break; case 491: -#line 3559 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3559 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_CONSTRAINTS; } -#line 28383 "gram.c" /* yacc.c:1646 */ break; case 492: -#line 3560 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3560 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_IDENTITY; } -#line 28389 "gram.c" /* yacc.c:1646 */ break; case 493: -#line 3561 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3561 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INDEXES; } -#line 28395 "gram.c" /* yacc.c:1646 */ break; case 494: -#line 3562 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3562 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STORAGE; } -#line 28401 "gram.c" /* yacc.c:1646 */ break; case 495: -#line 3563 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3563 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMMENTS; } -#line 28407 "gram.c" /* yacc.c:1646 */ break; case 496: -#line 3564 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3564 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_ALL; } -#line 28413 "gram.c" /* yacc.c:1646 */ break; case 497: -#line 3574 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3574 "gram.y" { - Constraint *n = castNode(Constraint, (yyvsp[0].node)); - n->conname = (yyvsp[-1].str); - n->location = (yylsp[-2]); + Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); + n->conname = (yyvsp[(2) - (3)].str); + n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) n; } -#line 28424 "gram.c" /* yacc.c:1646 */ break; case 498: -#line 3580 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 28430 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3580 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 499: -#line 3585 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3585 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; - n->location = (yylsp[-4]); - n->raw_expr = (yyvsp[-2].node); + n->location = (yylsp[(1) - (5)]); + n->raw_expr = (yyvsp[(3) - (5)].node); n->cooked_expr = NULL; - processCASbits((yyvsp[0].ival), (yylsp[0]), "CHECK", + processCASbits((yyvsp[(5) - (5)].ival), (yylsp[(5) - (5)]), "CHECK", NULL, NULL, &n->skip_validation, &n->is_no_inherit, yyscanner); n->initially_valid = !n->skip_validation; (yyval.node) = (Node *)n; } -#line 28447 "gram.c" /* yacc.c:1646 */ break; case 500: -#line 3599 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3599 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; - n->location = (yylsp[-6]); - n->keys = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); + n->location = (yylsp[(1) - (7)]); + n->keys = (yyvsp[(3) - (7)].list); + n->options = (yyvsp[(5) - (7)].list); n->indexname = NULL; - n->indexspace = (yyvsp[-1].str); - processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + n->indexspace = (yyvsp[(6) - (7)].str); + processCASbits((yyvsp[(7) - (7)].ival), (yylsp[(7) - (7)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 28465 "gram.c" /* yacc.c:1646 */ break; case 501: -#line 3613 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3613 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; - n->location = (yylsp[-2]); + n->location = (yylsp[(1) - (3)]); n->keys = NIL; n->options = NIL; - n->indexname = (yyvsp[-1].str); + n->indexname = (yyvsp[(2) - (3)].str); n->indexspace = NULL; - processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + processCASbits((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 28483 "gram.c" /* yacc.c:1646 */ break; case 502: -#line 3628 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3628 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; - n->location = (yylsp[-7]); - n->keys = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); + n->location = (yylsp[(1) - (8)]); + n->keys = (yyvsp[(4) - (8)].list); + n->options = (yyvsp[(6) - (8)].list); n->indexname = NULL; - n->indexspace = (yyvsp[-1].str); - processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + n->indexspace = (yyvsp[(7) - (8)].str); + processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "PRIMARY KEY", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 28501 "gram.c" /* yacc.c:1646 */ break; case 503: -#line 3642 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3642 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; - n->location = (yylsp[-3]); + n->location = (yylsp[(1) - (4)]); n->keys = NIL; n->options = NIL; - n->indexname = (yyvsp[-1].str); + n->indexname = (yyvsp[(3) - (4)].str); n->indexspace = NULL; - processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "PRIMARY KEY", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 28519 "gram.c" /* yacc.c:1646 */ break; case 504: -#line 3658 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3658 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_EXCLUSION; - n->location = (yylsp[-8]); - n->access_method = (yyvsp[-7].str); - n->exclusions = (yyvsp[-5].list); - n->options = (yyvsp[-3].list); + n->location = (yylsp[(1) - (9)]); + n->access_method = (yyvsp[(2) - (9)].str); + n->exclusions = (yyvsp[(4) - (9)].list); + n->options = (yyvsp[(6) - (9)].list); n->indexname = NULL; - n->indexspace = (yyvsp[-2].str); - n->where_clause = (yyvsp[-1].node); - processCASbits((yyvsp[0].ival), (yylsp[0]), "EXCLUDE", + n->indexspace = (yyvsp[(7) - (9)].str); + n->where_clause = (yyvsp[(8) - (9)].node); + processCASbits((yyvsp[(9) - (9)].ival), (yylsp[(9) - (9)]), "EXCLUDE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; } -#line 28539 "gram.c" /* yacc.c:1646 */ break; case 505: -#line 3675 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3675 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; - n->location = (yylsp[-10]); - n->pktable = (yyvsp[-4].range); - n->fk_attrs = (yyvsp[-7].list); - n->pk_attrs = (yyvsp[-3].list); - n->fk_matchtype = (yyvsp[-2].ival); - n->fk_upd_action = (char) ((yyvsp[-1].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[-1].ival) & 0xFF); - processCASbits((yyvsp[0].ival), (yylsp[0]), "FOREIGN KEY", + n->location = (yylsp[(1) - (11)]); + n->pktable = (yyvsp[(7) - (11)].range); + n->fk_attrs = (yyvsp[(4) - (11)].list); + n->pk_attrs = (yyvsp[(8) - (11)].list); + n->fk_matchtype = (yyvsp[(9) - (11)].ival); + n->fk_upd_action = (char) ((yyvsp[(10) - (11)].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[(10) - (11)].ival) & 0xFF); + processCASbits((yyvsp[(11) - (11)].ival), (yylsp[(11) - (11)]), "FOREIGN KEY", &n->deferrable, &n->initdeferred, &n->skip_validation, NULL, yyscanner); n->initially_valid = !n->skip_validation; (yyval.node) = (Node *)n; } -#line 28561 "gram.c" /* yacc.c:1646 */ break; case 506: -#line 3694 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3694 "gram.y" { (yyval.boolean) = TRUE; } -#line 28567 "gram.c" /* yacc.c:1646 */ break; case 507: -#line 3695 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3695 "gram.y" { (yyval.boolean) = FALSE; } -#line 28573 "gram.c" /* yacc.c:1646 */ break; case 508: -#line 3699 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 28579 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3699 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 509: -#line 3700 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3700 "gram.y" { (yyval.list) = NIL; } -#line 28585 "gram.c" /* yacc.c:1646 */ break; case 510: -#line 3704 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 28591 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3704 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 511: -#line 3705 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 28597 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3705 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 512: -#line 3709 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3709 "gram.y" { - (yyval.node) = (Node *) makeString((yyvsp[0].str)); + (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } -#line 28605 "gram.c" /* yacc.c:1646 */ break; case 513: -#line 3715 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3715 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_FULL; } -#line 28613 "gram.c" /* yacc.c:1646 */ break; case 514: -#line 3719 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3719 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("MATCH PARTIAL not yet implemented"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = FKCONSTR_MATCH_PARTIAL; } -#line 28625 "gram.c" /* yacc.c:1646 */ break; case 515: -#line 3727 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3727 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; } -#line 28633 "gram.c" /* yacc.c:1646 */ break; case 516: -#line 3731 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3731 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; } -#line 28641 "gram.c" /* yacc.c:1646 */ break; case 517: -#line 3737 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].list)); } -#line 28647 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3737 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); } break; case 518: -#line 3739 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } -#line 28653 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3739 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; case 519: -#line 3743 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3743 "gram.y" { - (yyval.list) = list_make2((yyvsp[-2].ielem), (yyvsp[0].list)); + (yyval.list) = list_make2((yyvsp[(1) - (3)].ielem), (yyvsp[(3) - (3)].list)); } -#line 28661 "gram.c" /* yacc.c:1646 */ break; case 520: -#line 3748 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3748 "gram.y" { - (yyval.list) = list_make2((yyvsp[-5].ielem), (yyvsp[-1].list)); + (yyval.list) = list_make2((yyvsp[(1) - (6)].ielem), (yyvsp[(5) - (6)].list)); } -#line 28669 "gram.c" /* yacc.c:1646 */ break; case 521: -#line 3754 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 28675 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3754 "gram.y" + { (yyval.node) = (yyvsp[(3) - (4)].node); } break; case 522: -#line 3755 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3755 "gram.y" { (yyval.node) = NULL; } -#line 28681 "gram.c" /* yacc.c:1646 */ break; case 523: -#line 3766 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = ((yyvsp[0].ival) << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } -#line 28687 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3766 "gram.y" + { (yyval.ival) = ((yyvsp[(1) - (1)].ival) << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } break; case 524: -#line 3768 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[0].ival) & 0xFF); } -#line 28693 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3768 "gram.y" + { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[(1) - (1)].ival) & 0xFF); } break; case 525: -#line 3770 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = ((yyvsp[-1].ival) << 8) | ((yyvsp[0].ival) & 0xFF); } -#line 28699 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3770 "gram.y" + { (yyval.ival) = ((yyvsp[(1) - (2)].ival) << 8) | ((yyvsp[(2) - (2)].ival) & 0xFF); } break; case 526: -#line 3772 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = ((yyvsp[0].ival) << 8) | ((yyvsp[-1].ival) & 0xFF); } -#line 28705 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3772 "gram.y" + { (yyval.ival) = ((yyvsp[(2) - (2)].ival) << 8) | ((yyvsp[(1) - (2)].ival) & 0xFF); } break; case 527: -#line 3774 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3774 "gram.y" { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } -#line 28711 "gram.c" /* yacc.c:1646 */ break; case 528: -#line 3777 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 28717 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3777 "gram.y" + { (yyval.ival) = (yyvsp[(3) - (3)].ival); } break; case 529: -#line 3780 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 28723 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3780 "gram.y" + { (yyval.ival) = (yyvsp[(3) - (3)].ival); } break; case 530: -#line 3784 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3784 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_NOACTION; } -#line 28729 "gram.c" /* yacc.c:1646 */ break; case 531: -#line 3785 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3785 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_RESTRICT; } -#line 28735 "gram.c" /* yacc.c:1646 */ break; case 532: -#line 3786 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3786 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_CASCADE; } -#line 28741 "gram.c" /* yacc.c:1646 */ break; case 533: -#line 3787 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3787 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETNULL; } -#line 28747 "gram.c" /* yacc.c:1646 */ break; case 534: -#line 3788 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3788 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETDEFAULT; } -#line 28753 "gram.c" /* yacc.c:1646 */ break; case 535: -#line 3791 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 28759 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3791 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 536: -#line 3792 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3792 "gram.y" { (yyval.list) = NIL; } -#line 28765 "gram.c" /* yacc.c:1646 */ break; case 537: -#line 3796 "gram.y" /* yacc.c:1646 */ - { (yyval.partspec) = (yyvsp[0].partspec); } -#line 28771 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3796 "gram.y" + { (yyval.partspec) = (yyvsp[(1) - (1)].partspec); } break; case 538: -#line 3797 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3797 "gram.y" { (yyval.partspec) = NULL; } -#line 28777 "gram.c" /* yacc.c:1646 */ break; case 539: -#line 3801 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3801 "gram.y" { PartitionSpec *n = makeNode(PartitionSpec); - n->strategy = (yyvsp[-3].str); - n->partParams = (yyvsp[-1].list); - n->location = (yylsp[-5]); + n->strategy = (yyvsp[(3) - (6)].str); + n->partParams = (yyvsp[(5) - (6)].list); + n->location = (yylsp[(1) - (6)]); (yyval.partspec) = n; } -#line 28791 "gram.c" /* yacc.c:1646 */ break; case 540: -#line 3812 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28797 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3812 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 541: -#line 3813 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 28803 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3813 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 542: -#line 3816 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].partelem)); } -#line 28809 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3816 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].partelem)); } break; case 543: -#line 3817 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].partelem)); } -#line 28815 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3817 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].partelem)); } break; case 544: -#line 3821 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3821 "gram.y" { PartitionElem *n = makeNode(PartitionElem); - n->name = (yyvsp[-2].str); + n->name = (yyvsp[(1) - (3)].str); n->expr = NULL; - n->collation = (yyvsp[-1].list); - n->opclass = (yyvsp[0].list); - n->location = (yylsp[-2]); + n->collation = (yyvsp[(2) - (3)].list); + n->opclass = (yyvsp[(3) - (3)].list); + n->location = (yylsp[(1) - (3)]); (yyval.partelem) = n; } -#line 28830 "gram.c" /* yacc.c:1646 */ break; case 545: -#line 3832 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3832 "gram.y" { PartitionElem *n = makeNode(PartitionElem); n->name = NULL; - n->expr = (yyvsp[-2].node); - n->collation = (yyvsp[-1].list); - n->opclass = (yyvsp[0].list); - n->location = (yylsp[-2]); + n->expr = (yyvsp[(1) - (3)].node); + n->collation = (yyvsp[(2) - (3)].list); + n->opclass = (yyvsp[(3) - (3)].list); + n->location = (yylsp[(1) - (3)]); (yyval.partelem) = n; } -#line 28845 "gram.c" /* yacc.c:1646 */ break; case 546: -#line 3843 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3843 "gram.y" { PartitionElem *n = makeNode(PartitionElem); n->name = NULL; - n->expr = (yyvsp[-3].node); - n->collation = (yyvsp[-1].list); - n->opclass = (yyvsp[0].list); - n->location = (yylsp[-4]); + n->expr = (yyvsp[(2) - (5)].node); + n->collation = (yyvsp[(4) - (5)].list); + n->opclass = (yyvsp[(5) - (5)].list); + n->location = (yylsp[(1) - (5)]); (yyval.partelem) = n; } -#line 28860 "gram.c" /* yacc.c:1646 */ break; case 547: -#line 3856 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 28866 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3856 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 548: -#line 3857 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(true), (yylsp[-1]))); } -#line 28872 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3857 "gram.y" + { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(true), (yylsp[(1) - (2)]))); } break; case 549: -#line 3858 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(false), (yylsp[-1]))); } -#line 28878 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3858 "gram.y" + { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(false), (yylsp[(1) - (2)]))); } break; case 550: -#line 3859 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3859 "gram.y" { (yyval.list) = NIL; } -#line 28884 "gram.c" /* yacc.c:1646 */ break; case 551: -#line 3862 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3862 "gram.y" { (yyval.oncommit) = ONCOMMIT_DROP; } -#line 28890 "gram.c" /* yacc.c:1646 */ break; case 552: -#line 3863 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3863 "gram.y" { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; } -#line 28896 "gram.c" /* yacc.c:1646 */ break; case 553: -#line 3864 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3864 "gram.y" { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; } -#line 28902 "gram.c" /* yacc.c:1646 */ break; case 554: -#line 3865 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3865 "gram.y" { (yyval.oncommit) = ONCOMMIT_NOOP; } -#line 28908 "gram.c" /* yacc.c:1646 */ break; case 555: -#line 3868 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28914 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3868 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 556: -#line 3869 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3869 "gram.y" { (yyval.str) = NULL; } -#line 28920 "gram.c" /* yacc.c:1646 */ break; case 557: -#line 3872 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28926 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3872 "gram.y" + { (yyval.str) = (yyvsp[(4) - (4)].str); } break; case 558: -#line 3873 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3873 "gram.y" { (yyval.str) = NULL; } -#line 28932 "gram.c" /* yacc.c:1646 */ break; case 559: -#line 3876 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 28938 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3876 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].str); } break; case 560: -#line 3896 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3896 "gram.y" { CreateStatsStmt *n = makeNode(CreateStatsStmt); - n->defnames = (yyvsp[-5].list); - n->stat_types = (yyvsp[-4].list); - n->exprs = (yyvsp[-2].list); - n->relations = (yyvsp[0].list); + n->defnames = (yyvsp[(3) - (8)].list); + n->stat_types = (yyvsp[(4) - (8)].list); + n->exprs = (yyvsp[(6) - (8)].list); + n->relations = (yyvsp[(8) - (8)].list); n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 28952 "gram.c" /* yacc.c:1646 */ break; case 561: -#line 3907 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3907 "gram.y" { CreateStatsStmt *n = makeNode(CreateStatsStmt); - n->defnames = (yyvsp[-5].list); - n->stat_types = (yyvsp[-4].list); - n->exprs = (yyvsp[-2].list); - n->relations = (yyvsp[0].list); + n->defnames = (yyvsp[(6) - (11)].list); + n->stat_types = (yyvsp[(7) - (11)].list); + n->exprs = (yyvsp[(9) - (11)].list); + n->relations = (yyvsp[(11) - (11)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 28966 "gram.c" /* yacc.c:1646 */ break; case 562: -#line 3930 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3930 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(6) - (7)].node); + ctas->into = (yyvsp[(4) - (7)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = false; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-5].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(4) - (7)].into)->rel->relpersistence = (yyvsp[(2) - (7)].ival); + (yyvsp[(4) - (7)].into)->skipData = !((yyvsp[(7) - (7)].boolean)); (yyval.node) = (Node *) ctas; } -#line 28983 "gram.c" /* yacc.c:1646 */ break; case 563: -#line 3943 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3943 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(9) - (10)].node); + ctas->into = (yyvsp[(7) - (10)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = true; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-8].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(7) - (10)].into)->rel->relpersistence = (yyvsp[(2) - (10)].ival); + (yyvsp[(7) - (10)].into)->skipData = !((yyvsp[(10) - (10)].boolean)); (yyval.node) = (Node *) ctas; } -#line 29000 "gram.c" /* yacc.c:1646 */ break; case 564: -#line 3959 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3959 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[-4].range); - (yyval.into)->colNames = (yyvsp[-3].list); - (yyval.into)->options = (yyvsp[-2].list); - (yyval.into)->onCommit = (yyvsp[-1].oncommit); - (yyval.into)->tableSpaceName = (yyvsp[0].str); + (yyval.into)->rel = (yyvsp[(1) - (5)].range); + (yyval.into)->colNames = (yyvsp[(2) - (5)].list); + (yyval.into)->options = (yyvsp[(3) - (5)].list); + (yyval.into)->onCommit = (yyvsp[(4) - (5)].oncommit); + (yyval.into)->tableSpaceName = (yyvsp[(5) - (5)].str); (yyval.into)->viewQuery = NULL; (yyval.into)->skipData = false; /* might get changed later */ } -#line 29015 "gram.c" /* yacc.c:1646 */ break; case 565: -#line 3972 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3972 "gram.y" { (yyval.boolean) = TRUE; } -#line 29021 "gram.c" /* yacc.c:1646 */ break; case 566: -#line 3973 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3973 "gram.y" { (yyval.boolean) = FALSE; } -#line 29027 "gram.c" /* yacc.c:1646 */ break; case 567: -#line 3974 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3974 "gram.y" { (yyval.boolean) = TRUE; } -#line 29033 "gram.c" /* yacc.c:1646 */ break; case 568: -#line 3987 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3987 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(7) - (8)].node); + ctas->into = (yyvsp[(5) - (8)].into); ctas->relkind = OBJECT_MATVIEW; ctas->is_select_into = false; ctas->if_not_exists = false; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-6].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(5) - (8)].into)->rel->relpersistence = (yyvsp[(2) - (8)].ival); + (yyvsp[(5) - (8)].into)->skipData = !((yyvsp[(8) - (8)].boolean)); (yyval.node) = (Node *) ctas; } -#line 29050 "gram.c" /* yacc.c:1646 */ break; case 569: -#line 4000 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4000 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); - ctas->query = (yyvsp[-1].node); - ctas->into = (yyvsp[-3].into); + ctas->query = (yyvsp[(10) - (11)].node); + ctas->into = (yyvsp[(8) - (11)].into); ctas->relkind = OBJECT_MATVIEW; ctas->is_select_into = false; ctas->if_not_exists = true; /* cram additional flags into the IntoClause */ - (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-9].ival); - (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(8) - (11)].into)->rel->relpersistence = (yyvsp[(2) - (11)].ival); + (yyvsp[(8) - (11)].into)->skipData = !((yyvsp[(11) - (11)].boolean)); (yyval.node) = (Node *) ctas; } -#line 29067 "gram.c" /* yacc.c:1646 */ break; case 570: -#line 4016 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4016 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[-3].range); - (yyval.into)->colNames = (yyvsp[-2].list); - (yyval.into)->options = (yyvsp[-1].list); + (yyval.into)->rel = (yyvsp[(1) - (4)].range); + (yyval.into)->colNames = (yyvsp[(2) - (4)].list); + (yyval.into)->options = (yyvsp[(3) - (4)].list); (yyval.into)->onCommit = ONCOMMIT_NOOP; - (yyval.into)->tableSpaceName = (yyvsp[0].str); + (yyval.into)->tableSpaceName = (yyvsp[(4) - (4)].str); (yyval.into)->viewQuery = NULL; /* filled at analysis time */ (yyval.into)->skipData = false; /* might get changed later */ } -#line 29082 "gram.c" /* yacc.c:1646 */ break; case 571: -#line 4028 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4028 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; } -#line 29088 "gram.c" /* yacc.c:1646 */ break; case 572: -#line 4029 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4029 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; } -#line 29094 "gram.c" /* yacc.c:1646 */ break; case 573: -#line 4042 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4042 "gram.y" { RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); - n->concurrent = (yyvsp[-2].boolean); - n->relation = (yyvsp[-1].range); - n->skipData = !((yyvsp[0].boolean)); + n->concurrent = (yyvsp[(4) - (6)].boolean); + n->relation = (yyvsp[(5) - (6)].range); + n->skipData = !((yyvsp[(6) - (6)].boolean)); (yyval.node) = (Node *) n; } -#line 29106 "gram.c" /* yacc.c:1646 */ break; case 574: -#line 4062 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4062 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); - (yyvsp[-1].range)->relpersistence = (yyvsp[-3].ival); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + (yyvsp[(4) - (5)].range)->relpersistence = (yyvsp[(2) - (5)].ival); + n->sequence = (yyvsp[(4) - (5)].range); + n->options = (yyvsp[(5) - (5)].list); n->ownerId = InvalidOid; n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 29120 "gram.c" /* yacc.c:1646 */ break; case 575: -#line 4072 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4072 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); - (yyvsp[-1].range)->relpersistence = (yyvsp[-6].ival); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + (yyvsp[(7) - (8)].range)->relpersistence = (yyvsp[(2) - (8)].ival); + n->sequence = (yyvsp[(7) - (8)].range); + n->options = (yyvsp[(8) - (8)].list); n->ownerId = InvalidOid; n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 29134 "gram.c" /* yacc.c:1646 */ break; case 576: -#line 4085 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4085 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + n->sequence = (yyvsp[(3) - (4)].range); + n->options = (yyvsp[(4) - (4)].list); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 29146 "gram.c" /* yacc.c:1646 */ break; case 577: -#line 4093 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4093 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); - n->sequence = (yyvsp[-1].range); - n->options = (yyvsp[0].list); + n->sequence = (yyvsp[(5) - (6)].range); + n->options = (yyvsp[(6) - (6)].list); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 29158 "gram.c" /* yacc.c:1646 */ break; case 578: -#line 4103 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29164 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4103 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 579: -#line 4104 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4104 "gram.y" { (yyval.list) = NIL; } -#line 29170 "gram.c" /* yacc.c:1646 */ break; case 580: -#line 4107 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 29176 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4107 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 581: -#line 4108 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4108 "gram.y" { (yyval.list) = NIL; } -#line 29182 "gram.c" /* yacc.c:1646 */ break; case 582: -#line 4111 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 29188 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4111 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 583: -#line 4112 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 29194 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4112 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 584: -#line 4116 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4116 "gram.y" { - (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[0].typnam), (yylsp[-1])); + (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); } -#line 29202 "gram.c" /* yacc.c:1646 */ break; case 585: -#line 4120 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4120 "gram.y" { - (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[0].value), (yylsp[-1])); + (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 29210 "gram.c" /* yacc.c:1646 */ break; case 586: -#line 4124 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4124 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 29218 "gram.c" /* yacc.c:1646 */ break; case 587: -#line 4128 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4128 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(FALSE), (yylsp[-1])); + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); } -#line 29226 "gram.c" /* yacc.c:1646 */ break; case 588: -#line 4132 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4132 "gram.y" { - (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[0].value), (yylsp[-2])); + (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); } -#line 29234 "gram.c" /* yacc.c:1646 */ break; case 589: -#line 4136 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4136 "gram.y" { - (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[0].value), (yylsp[-1])); + (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 29242 "gram.c" /* yacc.c:1646 */ break; case 590: -#line 4140 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4140 "gram.y" { - (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[0].value), (yylsp[-1])); + (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 29250 "gram.c" /* yacc.c:1646 */ break; case 591: -#line 4144 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4144 "gram.y" { - (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[-1])); + (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); } -#line 29258 "gram.c" /* yacc.c:1646 */ break; case 592: -#line 4148 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4148 "gram.y" { - (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[-1])); + (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); } -#line 29266 "gram.c" /* yacc.c:1646 */ break; case 593: -#line 4152 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4152 "gram.y" { - (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 29274 "gram.c" /* yacc.c:1646 */ break; case 594: -#line 4156 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4156 "gram.y" { /* not documented, only used by pg_dump */ - (yyval.defelt) = makeDefElem("sequence_name", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("sequence_name", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 29283 "gram.c" /* yacc.c:1646 */ break; case 595: -#line 4161 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4161 "gram.y" { - (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[0].value), (yylsp[-2])); + (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); } -#line 29291 "gram.c" /* yacc.c:1646 */ break; case 596: -#line 4165 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4165 "gram.y" { - (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[0])); + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); } -#line 29299 "gram.c" /* yacc.c:1646 */ break; case 597: -#line 4169 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4169 "gram.y" { - (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[0].value), (yylsp[-2])); + (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); } -#line 29307 "gram.c" /* yacc.c:1646 */ break; case 598: -#line 4174 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4174 "gram.y" {} -#line 29313 "gram.c" /* yacc.c:1646 */ break; case 599: -#line 4175 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4175 "gram.y" {} -#line 29319 "gram.c" /* yacc.c:1646 */ break; case 600: -#line 4179 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeFloat((yyvsp[0].str)); } -#line 29325 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4179 "gram.y" + { (yyval.value) = makeFloat((yyvsp[(1) - (1)].str)); } break; case 601: -#line 4180 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeFloat((yyvsp[0].str)); } -#line 29331 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4180 "gram.y" + { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); } break; case 602: -#line 4182 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4182 "gram.y" { - (yyval.value) = makeFloat((yyvsp[0].str)); + (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); doNegateFloat((yyval.value)); } -#line 29340 "gram.c" /* yacc.c:1646 */ break; case 603: -#line 4186 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeInteger((yyvsp[0].ival)); } -#line 29346 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4186 "gram.y" + { (yyval.value) = makeInteger((yyvsp[(1) - (1)].ival)); } break; case 604: -#line 4189 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].value)); } -#line 29352 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4189 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); } break; case 605: -#line 4190 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].value)); } -#line 29358 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4190 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); } break; case 606: -#line 4203 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4203 "gram.y" { CreatePLangStmt *n = makeNode(CreatePLangStmt); - n->replace = (yyvsp[-4].boolean); - n->plname = (yyvsp[0].str); + n->replace = (yyvsp[(2) - (6)].boolean); + n->plname = (yyvsp[(6) - (6)].str); /* parameters are all to be supplied by system */ n->plhandler = NIL; n->plinline = NIL; @@ -29370,906 +30758,906 @@ yyreduce: n->pltrusted = false; (yyval.node) = (Node *)n; } -#line 29374 "gram.c" /* yacc.c:1646 */ break; case 607: -#line 4216 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4216 "gram.y" { CreatePLangStmt *n = makeNode(CreatePLangStmt); - n->replace = (yyvsp[-8].boolean); - n->plname = (yyvsp[-4].str); - n->plhandler = (yyvsp[-2].list); - n->plinline = (yyvsp[-1].list); - n->plvalidator = (yyvsp[0].list); - n->pltrusted = (yyvsp[-7].boolean); + n->replace = (yyvsp[(2) - (10)].boolean); + n->plname = (yyvsp[(6) - (10)].str); + n->plhandler = (yyvsp[(8) - (10)].list); + n->plinline = (yyvsp[(9) - (10)].list); + n->plvalidator = (yyvsp[(10) - (10)].list); + n->pltrusted = (yyvsp[(3) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 29389 "gram.c" /* yacc.c:1646 */ break; case 608: -#line 4229 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4229 "gram.y" { (yyval.boolean) = TRUE; } -#line 29395 "gram.c" /* yacc.c:1646 */ break; case 609: -#line 4230 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4230 "gram.y" { (yyval.boolean) = FALSE; } -#line 29401 "gram.c" /* yacc.c:1646 */ break; case 610: -#line 4238 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 29407 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4238 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 611: -#line 4239 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } -#line 29413 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4239 "gram.y" + { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); } break; case 612: -#line 4243 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29419 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4243 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 613: -#line 4244 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4244 "gram.y" { (yyval.list) = NIL; } -#line 29425 "gram.c" /* yacc.c:1646 */ break; case 614: -#line 4248 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29431 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4248 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 615: -#line 4249 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4249 "gram.y" { (yyval.list) = NIL; } -#line 29437 "gram.c" /* yacc.c:1646 */ break; case 616: -#line 4253 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 29443 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4253 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 617: -#line 4254 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4254 "gram.y" { (yyval.list) = NIL; } -#line 29449 "gram.c" /* yacc.c:1646 */ break; case 618: -#line 4259 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4259 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(makeString((yyvsp[-1].str))); - n->behavior = (yyvsp[0].dbehavior); + n->objects = list_make1(makeString((yyvsp[(4) - (5)].str))); + n->behavior = (yyvsp[(5) - (5)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 29463 "gram.c" /* yacc.c:1646 */ break; case 619: -#line 4269 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4269 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(makeString((yyvsp[-1].str))); - n->behavior = (yyvsp[0].dbehavior); + n->objects = list_make1(makeString((yyvsp[(6) - (7)].str))); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 29477 "gram.c" /* yacc.c:1646 */ break; case 620: -#line 4281 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4281 "gram.y" {} -#line 29483 "gram.c" /* yacc.c:1646 */ break; case 621: -#line 4282 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4282 "gram.y" {} -#line 29489 "gram.c" /* yacc.c:1646 */ break; case 622: -#line 4293 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4293 "gram.y" { CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); - n->tablespacename = (yyvsp[-4].str); - n->owner = (yyvsp[-3].rolespec); - n->location = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->tablespacename = (yyvsp[(3) - (7)].str); + n->owner = (yyvsp[(4) - (7)].rolespec); + n->location = (yyvsp[(6) - (7)].str); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; } -#line 29502 "gram.c" /* yacc.c:1646 */ break; case 623: -#line 4303 "gram.y" /* yacc.c:1646 */ - { (yyval.rolespec) = (yyvsp[0].rolespec); } -#line 29508 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4303 "gram.y" + { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); } break; case 624: -#line 4304 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4304 "gram.y" { (yyval.rolespec) = NULL; } -#line 29514 "gram.c" /* yacc.c:1646 */ break; case 625: -#line 4318 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4318 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); - n->tablespacename = (yyvsp[0].str); + n->tablespacename = (yyvsp[(3) - (3)].str); n->missing_ok = false; (yyval.node) = (Node *) n; } -#line 29525 "gram.c" /* yacc.c:1646 */ break; case 626: -#line 4325 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4325 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); - n->tablespacename = (yyvsp[0].str); + n->tablespacename = (yyvsp[(5) - (5)].str); n->missing_ok = true; (yyval.node) = (Node *) n; } -#line 29536 "gram.c" /* yacc.c:1646 */ break; case 627: -#line 4342 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4342 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); - n->extname = (yyvsp[-2].str); + n->extname = (yyvsp[(3) - (5)].str); n->if_not_exists = false; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; } -#line 29548 "gram.c" /* yacc.c:1646 */ break; case 628: -#line 4350 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4350 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); - n->extname = (yyvsp[-2].str); + n->extname = (yyvsp[(6) - (8)].str); n->if_not_exists = true; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 29560 "gram.c" /* yacc.c:1646 */ break; case 629: -#line 4361 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 29566 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4361 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 630: -#line 4363 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4363 "gram.y" { (yyval.list) = NIL; } -#line 29572 "gram.c" /* yacc.c:1646 */ break; case 631: -#line 4368 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4368 "gram.y" { - (yyval.defelt) = makeDefElem("schema", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("schema", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 29580 "gram.c" /* yacc.c:1646 */ break; case 632: -#line 4372 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4372 "gram.y" { - (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 29588 "gram.c" /* yacc.c:1646 */ break; case 633: -#line 4376 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4376 "gram.y" { - (yyval.defelt) = makeDefElem("old_version", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("old_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 29596 "gram.c" /* yacc.c:1646 */ break; case 634: -#line 4380 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4380 "gram.y" { - (yyval.defelt) = makeDefElem("cascade", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("cascade", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 29604 "gram.c" /* yacc.c:1646 */ break; case 635: -#line 4392 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4392 "gram.y" { AlterExtensionStmt *n = makeNode(AlterExtensionStmt); - n->extname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->extname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; } -#line 29615 "gram.c" /* yacc.c:1646 */ break; case 636: -#line 4402 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 29621 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4402 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 637: -#line 4404 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4404 "gram.y" { (yyval.list) = NIL; } -#line 29627 "gram.c" /* yacc.c:1646 */ break; case 638: -#line 4409 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4409 "gram.y" { - (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 29635 "gram.c" /* yacc.c:1646 */ break; case 639: -#line 4422 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4422 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_ACCESS_METHOD; - n->object = (Node *) makeString((yyvsp[0].str)); + n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 29648 "gram.c" /* yacc.c:1646 */ break; case 640: -#line 4431 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4431 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_AGGREGATE; - n->object = (Node *) (yyvsp[0].objwithargs); + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; } -#line 29661 "gram.c" /* yacc.c:1646 */ break; case 641: -#line 4440 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4440 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-7].str); - n->action = (yyvsp[-6].ival); + n->extname = (yyvsp[(3) - (10)].str); + n->action = (yyvsp[(4) - (10)].ival); n->objtype = OBJECT_CAST; - n->object = (Node *) list_make2((yyvsp[-3].typnam), (yyvsp[-1].typnam)); + n->object = (Node *) list_make2((yyvsp[(7) - (10)].typnam), (yyvsp[(9) - (10)].typnam)); (yyval.node) = (Node *) n; } -#line 29674 "gram.c" /* yacc.c:1646 */ break; case 642: -#line 4449 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4449 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_COLLATION; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29687 "gram.c" /* yacc.c:1646 */ break; case 643: -#line 4458 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4458 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_CONVERSION; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29700 "gram.c" /* yacc.c:1646 */ break; case 644: -#line 4467 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4467 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_DOMAIN; - n->object = (Node *) (yyvsp[0].typnam); + n->object = (Node *) (yyvsp[(6) - (6)].typnam); (yyval.node) = (Node *)n; } -#line 29713 "gram.c" /* yacc.c:1646 */ break; case 645: -#line 4476 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4476 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[0].objwithargs); + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; } -#line 29726 "gram.c" /* yacc.c:1646 */ break; case 646: -#line 4485 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4485 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_LANGUAGE; - n->object = (Node *) makeString((yyvsp[0].str)); + n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 29739 "gram.c" /* yacc.c:1646 */ break; case 647: -#line 4494 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4494 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_OPERATOR; - n->object = (Node *) (yyvsp[0].objwithargs); + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; } -#line 29752 "gram.c" /* yacc.c:1646 */ break; case 648: -#line 4503 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4503 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-6].str); - n->action = (yyvsp[-5].ival); + n->extname = (yyvsp[(3) - (9)].str); + n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_OPCLASS; - n->object = (Node *) lcons(makeString((yyvsp[0].str)), (yyvsp[-2].list)); + n->object = (Node *) lcons(makeString((yyvsp[(9) - (9)].str)), (yyvsp[(7) - (9)].list)); (yyval.node) = (Node *)n; } -#line 29765 "gram.c" /* yacc.c:1646 */ break; case 649: -#line 4512 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4512 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-6].str); - n->action = (yyvsp[-5].ival); + n->extname = (yyvsp[(3) - (9)].str); + n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_OPFAMILY; - n->object = (Node *) lcons(makeString((yyvsp[0].str)), (yyvsp[-2].list)); + n->object = (Node *) lcons(makeString((yyvsp[(9) - (9)].str)), (yyvsp[(7) - (9)].list)); (yyval.node) = (Node *)n; } -#line 29778 "gram.c" /* yacc.c:1646 */ break; case 650: -#line 4521 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4521 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_SCHEMA; - n->object = (Node *) makeString((yyvsp[0].str)); + n->object = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; } -#line 29791 "gram.c" /* yacc.c:1646 */ break; case 651: -#line 4530 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4530 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_EVENT_TRIGGER; - n->object = (Node *) makeString((yyvsp[0].str)); + n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 29804 "gram.c" /* yacc.c:1646 */ break; case 652: -#line 4539 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4539 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_TABLE; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29817 "gram.c" /* yacc.c:1646 */ break; case 653: -#line 4548 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4548 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSPARSER; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 29830 "gram.c" /* yacc.c:1646 */ break; case 654: -#line 4557 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4557 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSDICTIONARY; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 29843 "gram.c" /* yacc.c:1646 */ break; case 655: -#line 4566 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4566 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSTEMPLATE; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 29856 "gram.c" /* yacc.c:1646 */ break; case 656: -#line 4575 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4575 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSCONFIGURATION; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 29869 "gram.c" /* yacc.c:1646 */ break; case 657: -#line 4584 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4584 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_SEQUENCE; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29882 "gram.c" /* yacc.c:1646 */ break; case 658: -#line 4593 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4593 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_VIEW; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 29895 "gram.c" /* yacc.c:1646 */ break; case 659: -#line 4602 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4602 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_MATVIEW; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 29908 "gram.c" /* yacc.c:1646 */ break; case 660: -#line 4611 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4611 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-4].str); - n->action = (yyvsp[-3].ival); + n->extname = (yyvsp[(3) - (7)].str); + n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_FOREIGN_TABLE; - n->object = (Node *) (yyvsp[0].list); + n->object = (Node *) (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 29921 "gram.c" /* yacc.c:1646 */ break; case 661: -#line 4620 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4620 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-5].str); - n->action = (yyvsp[-4].ival); + n->extname = (yyvsp[(3) - (8)].str); + n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_FDW; - n->object = (Node *) makeString((yyvsp[0].str)); + n->object = (Node *) makeString((yyvsp[(8) - (8)].str)); (yyval.node) = (Node *)n; } -#line 29934 "gram.c" /* yacc.c:1646 */ break; case 662: -#line 4629 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4629 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_FOREIGN_SERVER; - n->object = (Node *) makeString((yyvsp[0].str)); + n->object = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; } -#line 29947 "gram.c" /* yacc.c:1646 */ break; case 663: -#line 4638 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4638 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-6].str); - n->action = (yyvsp[-5].ival); + n->extname = (yyvsp[(3) - (9)].str); + n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_TRANSFORM; - n->object = (Node *) list_make2((yyvsp[-2].typnam), makeString((yyvsp[0].str))); + n->object = (Node *) list_make2((yyvsp[(7) - (9)].typnam), makeString((yyvsp[(9) - (9)].str))); (yyval.node) = (Node *)n; } -#line 29960 "gram.c" /* yacc.c:1646 */ break; case 664: -#line 4647 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4647 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = (yyvsp[-3].str); - n->action = (yyvsp[-2].ival); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_TYPE; - n->object = (Node *) (yyvsp[0].typnam); + n->object = (Node *) (yyvsp[(6) - (6)].typnam); (yyval.node) = (Node *)n; } -#line 29973 "gram.c" /* yacc.c:1646 */ break; case 665: -#line 4665 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4665 "gram.y" { CreateFdwStmt *n = makeNode(CreateFdwStmt); - n->fdwname = (yyvsp[-2].str); - n->func_options = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->fdwname = (yyvsp[(5) - (7)].str); + n->func_options = (yyvsp[(6) - (7)].list); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; } -#line 29985 "gram.c" /* yacc.c:1646 */ break; case 666: -#line 4675 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("handler", (Node *)(yyvsp[0].list), (yylsp[-1])); } -#line 29991 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4675 "gram.y" + { (yyval.defelt) = makeDefElem("handler", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } break; case 667: -#line 4676 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("handler", NULL, (yylsp[-1])); } -#line 29997 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4676 "gram.y" + { (yyval.defelt) = makeDefElem("handler", NULL, (yylsp[(1) - (2)])); } break; case 668: -#line 4677 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("validator", (Node *)(yyvsp[0].list), (yylsp[-1])); } -#line 30003 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4677 "gram.y" + { (yyval.defelt) = makeDefElem("validator", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } break; case 669: -#line 4678 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("validator", NULL, (yylsp[-1])); } -#line 30009 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4678 "gram.y" + { (yyval.defelt) = makeDefElem("validator", NULL, (yylsp[(1) - (2)])); } break; case 670: -#line 4682 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 30015 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4682 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 671: -#line 4683 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 30021 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4683 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 672: -#line 4687 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 30027 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4687 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 673: -#line 4688 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4688 "gram.y" { (yyval.list) = NIL; } -#line 30033 "gram.c" /* yacc.c:1646 */ break; case 674: -#line 4699 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4699 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); - n->fdwname = (yyvsp[-2].str); - n->func_options = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->fdwname = (yyvsp[(5) - (7)].str); + n->func_options = (yyvsp[(6) - (7)].list); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; } -#line 30045 "gram.c" /* yacc.c:1646 */ break; case 675: -#line 4707 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4707 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); - n->fdwname = (yyvsp[-1].str); - n->func_options = (yyvsp[0].list); + n->fdwname = (yyvsp[(5) - (6)].str); + n->func_options = (yyvsp[(6) - (6)].list); n->options = NIL; (yyval.node) = (Node *) n; } -#line 30057 "gram.c" /* yacc.c:1646 */ break; case 676: -#line 4718 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 30063 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4718 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 677: -#line 4719 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4719 "gram.y" { (yyval.list) = NIL; } -#line 30069 "gram.c" /* yacc.c:1646 */ break; case 678: -#line 4724 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4724 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 30077 "gram.c" /* yacc.c:1646 */ break; case 679: -#line 4728 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4728 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 30085 "gram.c" /* yacc.c:1646 */ break; case 680: -#line 4735 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 30091 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4735 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 681: -#line 4740 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4740 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 30099 "gram.c" /* yacc.c:1646 */ break; case 682: -#line 4744 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4744 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 30107 "gram.c" /* yacc.c:1646 */ break; case 683: -#line 4751 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4751 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(1) - (1)].defelt); } -#line 30115 "gram.c" /* yacc.c:1646 */ break; case 684: -#line 4755 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4755 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_SET; } -#line 30124 "gram.c" /* yacc.c:1646 */ break; case 685: -#line 4760 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4760 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_ADD; } -#line 30133 "gram.c" /* yacc.c:1646 */ break; case 686: -#line 4765 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4765 "gram.y" { - (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[0].str), NULL, DEFELEM_DROP, (yylsp[0])); + (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); } -#line 30141 "gram.c" /* yacc.c:1646 */ break; case 687: -#line 4772 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4772 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } -#line 30149 "gram.c" /* yacc.c:1646 */ break; case 688: -#line 4778 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30155 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4778 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 689: -#line 4783 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 30161 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4783 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; case 690: -#line 4795 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4795 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); - n->servername = (yyvsp[-7].str); - n->servertype = (yyvsp[-6].str); - n->version = (yyvsp[-5].str); - n->fdwname = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(3) - (10)].str); + n->servertype = (yyvsp[(4) - (10)].str); + n->version = (yyvsp[(5) - (10)].str); + n->fdwname = (yyvsp[(9) - (10)].str); + n->options = (yyvsp[(10) - (10)].list); n->if_not_exists = false; (yyval.node) = (Node *) n; } -#line 30176 "gram.c" /* yacc.c:1646 */ break; case 691: -#line 4807 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4807 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); - n->servername = (yyvsp[-7].str); - n->servertype = (yyvsp[-6].str); - n->version = (yyvsp[-5].str); - n->fdwname = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(6) - (13)].str); + n->servertype = (yyvsp[(7) - (13)].str); + n->version = (yyvsp[(8) - (13)].str); + n->fdwname = (yyvsp[(12) - (13)].str); + n->options = (yyvsp[(13) - (13)].list); n->if_not_exists = true; (yyval.node) = (Node *) n; } -#line 30191 "gram.c" /* yacc.c:1646 */ break; case 692: -#line 4820 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30197 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4820 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 693: -#line 4821 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4821 "gram.y" { (yyval.str) = NULL; } -#line 30203 "gram.c" /* yacc.c:1646 */ break; case 694: -#line 4826 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30209 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4826 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 695: -#line 4827 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4827 "gram.y" { (yyval.str) = NULL; } -#line 30215 "gram.c" /* yacc.c:1646 */ break; case 696: -#line 4831 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30221 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4831 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 697: -#line 4832 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4832 "gram.y" { (yyval.str) = NULL; } -#line 30227 "gram.c" /* yacc.c:1646 */ break; case 698: -#line 4843 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4843 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); - n->servername = (yyvsp[-2].str); - n->version = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(3) - (5)].str); + n->version = (yyvsp[(4) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); n->has_version = true; (yyval.node) = (Node *) n; } -#line 30240 "gram.c" /* yacc.c:1646 */ break; case 699: -#line 4852 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4852 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); - n->servername = (yyvsp[-1].str); - n->version = (yyvsp[0].str); + n->servername = (yyvsp[(3) - (4)].str); + n->version = (yyvsp[(4) - (4)].str); n->has_version = true; (yyval.node) = (Node *) n; } -#line 30252 "gram.c" /* yacc.c:1646 */ break; case 700: -#line 4860 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4860 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(3) - (4)].str); + n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; } -#line 30263 "gram.c" /* yacc.c:1646 */ break; case 701: -#line 4879 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4879 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); - (yyvsp[-7].range)->relpersistence = RELPERSISTENCE_PERMANENT; - n->base.relation = (yyvsp[-7].range); - n->base.tableElts = (yyvsp[-5].list); - n->base.inhRelations = (yyvsp[-3].list); + (yyvsp[(4) - (11)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(4) - (11)].range); + n->base.tableElts = (yyvsp[(6) - (11)].list); + n->base.inhRelations = (yyvsp[(8) - (11)].list); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; @@ -30277,21 +31665,21 @@ yyreduce: n->base.tablespacename = NULL; n->base.if_not_exists = false; /* FDW-specific data */ - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(10) - (11)].str); + n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *) n; } -#line 30285 "gram.c" /* yacc.c:1646 */ break; case 702: -#line 4899 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4899 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); - (yyvsp[-7].range)->relpersistence = RELPERSISTENCE_PERMANENT; - n->base.relation = (yyvsp[-7].range); - n->base.tableElts = (yyvsp[-5].list); - n->base.inhRelations = (yyvsp[-3].list); + (yyvsp[(7) - (14)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(7) - (14)].range); + n->base.tableElts = (yyvsp[(9) - (14)].list); + n->base.inhRelations = (yyvsp[(11) - (14)].list); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; @@ -30299,22 +31687,22 @@ yyreduce: n->base.tablespacename = NULL; n->base.if_not_exists = true; /* FDW-specific data */ - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(13) - (14)].str); + n->options = (yyvsp[(14) - (14)].list); (yyval.node) = (Node *) n; } -#line 30307 "gram.c" /* yacc.c:1646 */ break; case 703: -#line 4919 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4919 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); - (yyvsp[-8].range)->relpersistence = RELPERSISTENCE_PERMANENT; - n->base.relation = (yyvsp[-8].range); - n->base.inhRelations = list_make1((yyvsp[-5].range)); - n->base.tableElts = (yyvsp[-4].list); - n->base.partbound = (yyvsp[-3].partboundspec); + (yyvsp[(4) - (12)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(4) - (12)].range); + n->base.inhRelations = list_make1((yyvsp[(7) - (12)].range)); + n->base.tableElts = (yyvsp[(8) - (12)].list); + n->base.partbound = (yyvsp[(9) - (12)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; @@ -30322,22 +31710,22 @@ yyreduce: n->base.tablespacename = NULL; n->base.if_not_exists = false; /* FDW-specific data */ - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(11) - (12)].str); + n->options = (yyvsp[(12) - (12)].list); (yyval.node) = (Node *) n; } -#line 30330 "gram.c" /* yacc.c:1646 */ break; case 704: -#line 4940 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4940 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); - (yyvsp[-8].range)->relpersistence = RELPERSISTENCE_PERMANENT; - n->base.relation = (yyvsp[-8].range); - n->base.inhRelations = list_make1((yyvsp[-5].range)); - n->base.tableElts = (yyvsp[-4].list); - n->base.partbound = (yyvsp[-3].partboundspec); + (yyvsp[(7) - (15)].range)->relpersistence = RELPERSISTENCE_PERMANENT; + n->base.relation = (yyvsp[(7) - (15)].range); + n->base.inhRelations = list_make1((yyvsp[(10) - (15)].range)); + n->base.tableElts = (yyvsp[(11) - (15)].list); + n->base.partbound = (yyvsp[(12) - (15)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; @@ -30345,396 +31733,396 @@ yyreduce: n->base.tablespacename = NULL; n->base.if_not_exists = true; /* FDW-specific data */ - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->servername = (yyvsp[(14) - (15)].str); + n->options = (yyvsp[(15) - (15)].list); (yyval.node) = (Node *) n; } -#line 30353 "gram.c" /* yacc.c:1646 */ break; case 705: -#line 4969 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4969 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(4) - (5)].range); + n->cmds = (yyvsp[(5) - (5)].list); n->relkind = OBJECT_FOREIGN_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 30366 "gram.c" /* yacc.c:1646 */ break; case 706: -#line 4978 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 4978 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = (yyvsp[-1].range); - n->cmds = (yyvsp[0].list); + n->relation = (yyvsp[(6) - (7)].range); + n->cmds = (yyvsp[(7) - (7)].list); n->relkind = OBJECT_FOREIGN_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 30379 "gram.c" /* yacc.c:1646 */ break; case 707: -#line 5000 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5000 "gram.y" { ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); - n->server_name = (yyvsp[-3].str); - n->remote_schema = (yyvsp[-7].str); - n->local_schema = (yyvsp[-1].str); - n->list_type = (yyvsp[-6].importqual)->type; - n->table_list = (yyvsp[-6].importqual)->table_names; - n->options = (yyvsp[0].list); + n->server_name = (yyvsp[(8) - (11)].str); + n->remote_schema = (yyvsp[(4) - (11)].str); + n->local_schema = (yyvsp[(10) - (11)].str); + n->list_type = (yyvsp[(5) - (11)].importqual)->type; + n->table_list = (yyvsp[(5) - (11)].importqual)->table_names; + n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *) n; } -#line 30394 "gram.c" /* yacc.c:1646 */ break; case 708: -#line 5013 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5013 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_LIMIT_TO; } -#line 30400 "gram.c" /* yacc.c:1646 */ break; case 709: -#line 5014 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5014 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_EXCEPT; } -#line 30406 "gram.c" /* yacc.c:1646 */ break; case 710: -#line 5019 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5019 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); - n->type = (yyvsp[-3].ival); - n->table_names = (yyvsp[-1].list); + n->type = (yyvsp[(1) - (4)].ival); + n->table_names = (yyvsp[(3) - (4)].list); (yyval.importqual) = n; } -#line 30417 "gram.c" /* yacc.c:1646 */ break; case 711: -#line 5026 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5026 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = FDW_IMPORT_SCHEMA_ALL; n->table_names = NIL; (yyval.importqual) = n; } -#line 30428 "gram.c" /* yacc.c:1646 */ break; case 712: -#line 5042 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5042 "gram.y" { CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); - n->user = (yyvsp[-3].rolespec); - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->user = (yyvsp[(5) - (8)].rolespec); + n->servername = (yyvsp[(7) - (8)].str); + n->options = (yyvsp[(8) - (8)].list); n->if_not_exists = false; (yyval.node) = (Node *) n; } -#line 30441 "gram.c" /* yacc.c:1646 */ break; case 713: -#line 5051 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5051 "gram.y" { CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); - n->user = (yyvsp[-3].rolespec); - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->user = (yyvsp[(8) - (11)].rolespec); + n->servername = (yyvsp[(10) - (11)].str); + n->options = (yyvsp[(11) - (11)].list); n->if_not_exists = true; (yyval.node) = (Node *) n; } -#line 30454 "gram.c" /* yacc.c:1646 */ break; case 714: -#line 5062 "gram.y" /* yacc.c:1646 */ - { (yyval.rolespec) = (yyvsp[0].rolespec); } -#line 30460 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5062 "gram.y" + { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); } break; case 715: -#line 5063 "gram.y" /* yacc.c:1646 */ - { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[0])); } -#line 30466 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5063 "gram.y" + { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); } break; case 716: -#line 5076 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5076 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); - n->user = (yyvsp[-2].rolespec); - n->servername = (yyvsp[0].str); + n->user = (yyvsp[(5) - (7)].rolespec); + n->servername = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *) n; } -#line 30478 "gram.c" /* yacc.c:1646 */ break; case 717: -#line 5084 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5084 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); - n->user = (yyvsp[-2].rolespec); - n->servername = (yyvsp[0].str); + n->user = (yyvsp[(7) - (9)].rolespec); + n->servername = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *) n; } -#line 30490 "gram.c" /* yacc.c:1646 */ break; case 718: -#line 5101 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5101 "gram.y" { AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); - n->user = (yyvsp[-3].rolespec); - n->servername = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->user = (yyvsp[(5) - (8)].rolespec); + n->servername = (yyvsp[(7) - (8)].str); + n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 30502 "gram.c" /* yacc.c:1646 */ break; case 719: -#line 5127 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5127 "gram.y" { CreatePolicyStmt *n = makeNode(CreatePolicyStmt); - n->policy_name = (yyvsp[-7].str); - n->table = (yyvsp[-5].range); - n->permissive = (yyvsp[-4].boolean); - n->cmd_name = (yyvsp[-3].str); - n->roles = (yyvsp[-2].list); - n->qual = (yyvsp[-1].node); - n->with_check = (yyvsp[0].node); + n->policy_name = (yyvsp[(3) - (10)].str); + n->table = (yyvsp[(5) - (10)].range); + n->permissive = (yyvsp[(6) - (10)].boolean); + n->cmd_name = (yyvsp[(7) - (10)].str); + n->roles = (yyvsp[(8) - (10)].list); + n->qual = (yyvsp[(9) - (10)].node); + n->with_check = (yyvsp[(10) - (10)].node); (yyval.node) = (Node *) n; } -#line 30518 "gram.c" /* yacc.c:1646 */ break; case 720: -#line 5143 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5143 "gram.y" { AlterPolicyStmt *n = makeNode(AlterPolicyStmt); - n->policy_name = (yyvsp[-5].str); - n->table = (yyvsp[-3].range); - n->roles = (yyvsp[-2].list); - n->qual = (yyvsp[-1].node); - n->with_check = (yyvsp[0].node); + n->policy_name = (yyvsp[(3) - (8)].str); + n->table = (yyvsp[(5) - (8)].range); + n->roles = (yyvsp[(6) - (8)].list); + n->qual = (yyvsp[(7) - (8)].node); + n->with_check = (yyvsp[(8) - (8)].node); (yyval.node) = (Node *) n; } -#line 30532 "gram.c" /* yacc.c:1646 */ break; case 721: -#line 5155 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 30538 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5155 "gram.y" + { (yyval.node) = (yyvsp[(3) - (4)].node); } break; case 722: -#line 5156 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5156 "gram.y" { (yyval.node) = NULL; } -#line 30544 "gram.c" /* yacc.c:1646 */ break; case 723: -#line 5160 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 30550 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5160 "gram.y" + { (yyval.node) = (yyvsp[(4) - (5)].node); } break; case 724: -#line 5161 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5161 "gram.y" { (yyval.node) = NULL; } -#line 30556 "gram.c" /* yacc.c:1646 */ break; case 725: -#line 5165 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 30562 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5165 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 726: -#line 5166 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5166 "gram.y" { (yyval.list) = list_make1(makeRoleSpec(ROLESPEC_PUBLIC, -1)); } -#line 30568 "gram.c" /* yacc.c:1646 */ break; case 727: -#line 5170 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 30574 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5170 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 728: -#line 5171 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5171 "gram.y" { (yyval.list) = NULL; } -#line 30580 "gram.c" /* yacc.c:1646 */ break; case 729: -#line 5176 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5176 "gram.y" { - if (strcmp((yyvsp[0].str), "permissive") == 0) + if (strcmp((yyvsp[(2) - (2)].str), "permissive") == 0) (yyval.boolean) = true; - else if (strcmp((yyvsp[0].str), "restrictive") == 0) + else if (strcmp((yyvsp[(2) - (2)].str), "restrictive") == 0) (yyval.boolean) = false; else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized row security option \"%s\"", (yyvsp[0].str)), + errmsg("unrecognized row security option \"%s\"", (yyvsp[(2) - (2)].str)), errhint("Only PERMISSIVE or RESTRICTIVE policies are supported currently."), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(2) - (2)])))); } -#line 30598 "gram.c" /* yacc.c:1646 */ break; case 730: -#line 5189 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5189 "gram.y" { (yyval.boolean) = true; } -#line 30604 "gram.c" /* yacc.c:1646 */ break; case 731: -#line 5193 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30610 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5193 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 732: -#line 5194 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5194 "gram.y" { (yyval.str) = "all"; } -#line 30616 "gram.c" /* yacc.c:1646 */ break; case 733: -#line 5198 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5198 "gram.y" { (yyval.str) = "all"; } -#line 30622 "gram.c" /* yacc.c:1646 */ break; case 734: -#line 5199 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5199 "gram.y" { (yyval.str) = "select"; } -#line 30628 "gram.c" /* yacc.c:1646 */ break; case 735: -#line 5200 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5200 "gram.y" { (yyval.str) = "insert"; } -#line 30634 "gram.c" /* yacc.c:1646 */ break; case 736: -#line 5201 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5201 "gram.y" { (yyval.str) = "update"; } -#line 30640 "gram.c" /* yacc.c:1646 */ break; case 737: -#line 5202 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5202 "gram.y" { (yyval.str) = "delete"; } -#line 30646 "gram.c" /* yacc.c:1646 */ break; case 738: -#line 5213 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5213 "gram.y" { CreateAmStmt *n = makeNode(CreateAmStmt); - n->amname = (yyvsp[-4].str); - n->handler_name = (yyvsp[0].list); + n->amname = (yyvsp[(4) - (8)].str); + n->handler_name = (yyvsp[(8) - (8)].list); n->amtype = AMTYPE_INDEX; (yyval.node) = (Node *) n; } -#line 30658 "gram.c" /* yacc.c:1646 */ break; case 739: -#line 5233 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5233 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = (yyvsp[-13].str); - n->relation = (yyvsp[-9].range); - n->funcname = (yyvsp[-3].list); - n->args = (yyvsp[-1].list); - n->row = (yyvsp[-7].boolean); - n->timing = (yyvsp[-12].ival); - n->events = intVal(linitial((yyvsp[-11].list))); - n->columns = (List *) lsecond((yyvsp[-11].list)); - n->whenClause = (yyvsp[-6].node); - n->transitionRels = (yyvsp[-8].list); + n->trigname = (yyvsp[(3) - (16)].str); + n->relation = (yyvsp[(7) - (16)].range); + n->funcname = (yyvsp[(13) - (16)].list); + n->args = (yyvsp[(15) - (16)].list); + n->row = (yyvsp[(9) - (16)].boolean); + n->timing = (yyvsp[(4) - (16)].ival); + n->events = intVal(linitial((yyvsp[(5) - (16)].list))); + n->columns = (List *) lsecond((yyvsp[(5) - (16)].list)); + n->whenClause = (yyvsp[(10) - (16)].node); + n->transitionRels = (yyvsp[(8) - (16)].list); n->isconstraint = FALSE; n->deferrable = FALSE; n->initdeferred = FALSE; n->constrrel = NULL; (yyval.node) = (Node *)n; } -#line 30681 "gram.c" /* yacc.c:1646 */ break; case 740: -#line 5255 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5255 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = (yyvsp[-16].str); - n->relation = (yyvsp[-12].range); - n->funcname = (yyvsp[-3].list); - n->args = (yyvsp[-1].list); + n->trigname = (yyvsp[(4) - (20)].str); + n->relation = (yyvsp[(8) - (20)].range); + n->funcname = (yyvsp[(17) - (20)].list); + n->args = (yyvsp[(19) - (20)].list); n->row = TRUE; n->timing = TRIGGER_TYPE_AFTER; - n->events = intVal(linitial((yyvsp[-14].list))); - n->columns = (List *) lsecond((yyvsp[-14].list)); - n->whenClause = (yyvsp[-6].node); + n->events = intVal(linitial((yyvsp[(6) - (20)].list))); + n->columns = (List *) lsecond((yyvsp[(6) - (20)].list)); + n->whenClause = (yyvsp[(14) - (20)].node); n->transitionRels = NIL; n->isconstraint = TRUE; - processCASbits((yyvsp[-10].ival), (yylsp[-10]), "TRIGGER", + processCASbits((yyvsp[(10) - (20)].ival), (yylsp[(10) - (20)]), "TRIGGER", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); - n->constrrel = (yyvsp[-11].range); + n->constrrel = (yyvsp[(9) - (20)].range); (yyval.node) = (Node *)n; } -#line 30705 "gram.c" /* yacc.c:1646 */ break; case 741: -#line 5277 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5277 "gram.y" { (yyval.ival) = TRIGGER_TYPE_BEFORE; } -#line 30711 "gram.c" /* yacc.c:1646 */ break; case 742: -#line 5278 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5278 "gram.y" { (yyval.ival) = TRIGGER_TYPE_AFTER; } -#line 30717 "gram.c" /* yacc.c:1646 */ break; case 743: -#line 5279 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5279 "gram.y" { (yyval.ival) = TRIGGER_TYPE_INSTEAD; } -#line 30723 "gram.c" /* yacc.c:1646 */ break; case 744: -#line 5284 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 30729 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5284 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 745: -#line 5286 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5286 "gram.y" { - int events1 = intVal(linitial((yyvsp[-2].list))); - int events2 = intVal(linitial((yyvsp[0].list))); - List *columns1 = (List *) lsecond((yyvsp[-2].list)); - List *columns2 = (List *) lsecond((yyvsp[0].list)); + int events1 = intVal(linitial((yyvsp[(1) - (3)].list))); + int events2 = intVal(linitial((yyvsp[(3) - (3)].list))); + List *columns1 = (List *) lsecond((yyvsp[(1) - (3)].list)); + List *columns2 = (List *) lsecond((yyvsp[(3) - (3)].list)); if (events1 & events2) parser_yyerror("duplicate trigger events specified"); @@ -30748,115 +32136,115 @@ yyreduce: (yyval.list) = list_make2(makeInteger(events1 | events2), list_concat(columns1, columns2)); } -#line 30752 "gram.c" /* yacc.c:1646 */ break; case 746: -#line 5308 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5308 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } -#line 30758 "gram.c" /* yacc.c:1646 */ break; case 747: -#line 5310 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5310 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } -#line 30764 "gram.c" /* yacc.c:1646 */ break; case 748: -#line 5312 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5312 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } -#line 30770 "gram.c" /* yacc.c:1646 */ break; case 749: -#line 5314 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[0].list)); } -#line 30776 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5314 "gram.y" + { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[(3) - (3)].list)); } break; case 750: -#line 5316 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5316 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); } -#line 30782 "gram.c" /* yacc.c:1646 */ break; case 751: -#line 5320 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 30788 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5320 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 752: -#line 5321 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5321 "gram.y" { (yyval.list) = NIL; } -#line 30794 "gram.c" /* yacc.c:1646 */ break; case 753: -#line 5325 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 30800 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5325 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 754: -#line 5326 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 30806 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5326 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; case 755: -#line 5331 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5331 "gram.y" { TriggerTransition *n = makeNode(TriggerTransition); - n->name = (yyvsp[0].str); - n->isNew = (yyvsp[-3].boolean); - n->isTable = (yyvsp[-2].boolean); + n->name = (yyvsp[(4) - (4)].str); + n->isNew = (yyvsp[(1) - (4)].boolean); + n->isTable = (yyvsp[(2) - (4)].boolean); (yyval.node) = (Node *)n; } -#line 30818 "gram.c" /* yacc.c:1646 */ break; case 756: -#line 5341 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5341 "gram.y" { (yyval.boolean) = TRUE; } -#line 30824 "gram.c" /* yacc.c:1646 */ break; case 757: -#line 5342 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5342 "gram.y" { (yyval.boolean) = FALSE; } -#line 30830 "gram.c" /* yacc.c:1646 */ break; case 758: -#line 5346 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5346 "gram.y" { (yyval.boolean) = TRUE; } -#line 30836 "gram.c" /* yacc.c:1646 */ break; case 759: -#line 5355 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5355 "gram.y" { (yyval.boolean) = FALSE; } -#line 30842 "gram.c" /* yacc.c:1646 */ break; case 760: -#line 5359 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 30848 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5359 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 761: -#line 5364 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5364 "gram.y" { - (yyval.boolean) = (yyvsp[0].boolean); + (yyval.boolean) = (yyvsp[(3) - (3)].boolean); } -#line 30856 "gram.c" /* yacc.c:1646 */ break; case 762: -#line 5368 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5368 "gram.y" { /* * If ROW/STATEMENT not specified, default to @@ -30864,270 +32252,270 @@ yyreduce: */ (yyval.boolean) = FALSE; } -#line 30868 "gram.c" /* yacc.c:1646 */ break; case 763: -#line 5378 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5378 "gram.y" {} -#line 30874 "gram.c" /* yacc.c:1646 */ break; case 764: -#line 5379 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5379 "gram.y" {} -#line 30880 "gram.c" /* yacc.c:1646 */ break; case 765: -#line 5383 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5383 "gram.y" { (yyval.boolean) = TRUE; } -#line 30886 "gram.c" /* yacc.c:1646 */ break; case 766: -#line 5384 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5384 "gram.y" { (yyval.boolean) = FALSE; } -#line 30892 "gram.c" /* yacc.c:1646 */ break; case 767: -#line 5388 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 30898 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5388 "gram.y" + { (yyval.node) = (yyvsp[(3) - (4)].node); } break; case 768: -#line 5389 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5389 "gram.y" { (yyval.node) = NULL; } -#line 30904 "gram.c" /* yacc.c:1646 */ break; case 769: -#line 5393 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].value)); } -#line 30910 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5393 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); } break; case 770: -#line 5394 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].value)); } -#line 30916 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5394 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); } break; case 771: -#line 5395 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5395 "gram.y" { (yyval.list) = NIL; } -#line 30922 "gram.c" /* yacc.c:1646 */ break; case 772: -#line 5400 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5400 "gram.y" { - (yyval.value) = makeString(psprintf("%d", (yyvsp[0].ival))); + (yyval.value) = makeString(psprintf("%d", (yyvsp[(1) - (1)].ival))); } -#line 30930 "gram.c" /* yacc.c:1646 */ break; case 773: -#line 5403 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeString((yyvsp[0].str)); } -#line 30936 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5403 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } break; case 774: -#line 5404 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeString((yyvsp[0].str)); } -#line 30942 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5404 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } break; case 775: -#line 5405 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeString((yyvsp[0].str)); } -#line 30948 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5405 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } break; case 776: -#line 5409 "gram.y" /* yacc.c:1646 */ - { (yyval.range) = (yyvsp[0].range); } -#line 30954 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5409 "gram.y" + { (yyval.range) = (yyvsp[(2) - (2)].range); } break; case 777: -#line 5410 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5410 "gram.y" { (yyval.range) = NULL; } -#line 30960 "gram.c" /* yacc.c:1646 */ break; case 778: -#line 5415 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5415 "gram.y" { (yyval.ival) = 0; } -#line 30966 "gram.c" /* yacc.c:1646 */ break; case 779: -#line 5417 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5417 "gram.y" { /* * We must complain about conflicting options. * We could, but choose not to, complain about redundant * options (ie, where $2's bit is already set in $1). */ - int newspec = (yyvsp[-1].ival) | (yyvsp[0].ival); + int newspec = (yyvsp[(1) - (2)].ival) | (yyvsp[(2) - (2)].ival); /* special message for this case */ if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(2) - (2)])))); /* generic message for other conflicts */ if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("conflicting constraint properties"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(2) - (2)])))); (yyval.ival) = newspec; } -#line 30994 "gram.c" /* yacc.c:1646 */ break; case 780: -#line 5443 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5443 "gram.y" { (yyval.ival) = CAS_NOT_DEFERRABLE; } -#line 31000 "gram.c" /* yacc.c:1646 */ break; case 781: -#line 5444 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5444 "gram.y" { (yyval.ival) = CAS_DEFERRABLE; } -#line 31006 "gram.c" /* yacc.c:1646 */ break; case 782: -#line 5445 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5445 "gram.y" { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; } -#line 31012 "gram.c" /* yacc.c:1646 */ break; case 783: -#line 5446 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5446 "gram.y" { (yyval.ival) = CAS_INITIALLY_DEFERRED; } -#line 31018 "gram.c" /* yacc.c:1646 */ break; case 784: -#line 5447 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5447 "gram.y" { (yyval.ival) = CAS_NOT_VALID; } -#line 31024 "gram.c" /* yacc.c:1646 */ break; case 785: -#line 5448 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5448 "gram.y" { (yyval.ival) = CAS_NO_INHERIT; } -#line 31030 "gram.c" /* yacc.c:1646 */ break; case 786: -#line 5463 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5463 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); - n->trigname = (yyvsp[-7].str); - n->eventname = (yyvsp[-5].str); + n->trigname = (yyvsp[(4) - (11)].str); + n->eventname = (yyvsp[(6) - (11)].str); n->whenclause = NULL; - n->funcname = (yyvsp[-2].list); + n->funcname = (yyvsp[(9) - (11)].list); (yyval.node) = (Node *)n; } -#line 31043 "gram.c" /* yacc.c:1646 */ break; case 787: -#line 5474 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5474 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); - n->trigname = (yyvsp[-9].str); - n->eventname = (yyvsp[-7].str); - n->whenclause = (yyvsp[-5].list); - n->funcname = (yyvsp[-2].list); + n->trigname = (yyvsp[(4) - (13)].str); + n->eventname = (yyvsp[(6) - (13)].str); + n->whenclause = (yyvsp[(8) - (13)].list); + n->funcname = (yyvsp[(11) - (13)].list); (yyval.node) = (Node *)n; } -#line 31056 "gram.c" /* yacc.c:1646 */ break; case 788: -#line 5486 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 31062 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5486 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 789: -#line 5488 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 31068 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5488 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; case 790: -#line 5493 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem((yyvsp[-4].str), (Node *) (yyvsp[-1].list), (yylsp[-4])); } -#line 31074 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5493 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (5)].str), (Node *) (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } break; case 791: -#line 5498 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 31080 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5498 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 792: -#line 5500 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 31086 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5500 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; case 793: -#line 5505 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5505 "gram.y" { AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); - n->trigname = (yyvsp[-1].str); - n->tgenabled = (yyvsp[0].chr); + n->trigname = (yyvsp[(4) - (5)].str); + n->tgenabled = (yyvsp[(5) - (5)].chr); (yyval.node) = (Node *) n; } -#line 31097 "gram.c" /* yacc.c:1646 */ break; case 794: -#line 5514 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5514 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_ORIGIN; } -#line 31103 "gram.c" /* yacc.c:1646 */ break; case 795: -#line 5515 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5515 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_REPLICA; } -#line 31109 "gram.c" /* yacc.c:1646 */ break; case 796: -#line 5516 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5516 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ALWAYS; } -#line 31115 "gram.c" /* yacc.c:1646 */ break; case 797: -#line 5517 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5517 "gram.y" { (yyval.chr) = TRIGGER_DISABLED; } -#line 31121 "gram.c" /* yacc.c:1646 */ break; case 798: -#line 5531 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5531 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = (yyvsp[-5].str); - n->args = list_make1((yyvsp[-2].node)); + n->trigname = (yyvsp[(3) - (8)].str); + n->args = list_make1((yyvsp[(6) - (8)].node)); n->isconstraint = TRUE; - processCASbits((yyvsp[0].ival), (yylsp[0]), "ASSERTION", + processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "ASSERTION", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); @@ -31137,565 +32525,565 @@ yyreduce: (yyval.node) = (Node *)n; } -#line 31141 "gram.c" /* yacc.c:1646 */ break; case 799: -#line 5550 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5550 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = NIL; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->removeType = OBJECT_TRIGGER; /* XXX */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("DROP ASSERTION is not yet implemented"))); (yyval.node) = (Node *) n; } -#line 31156 "gram.c" /* yacc.c:1646 */ break; case 800: -#line 5572 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5572 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = false; - n->defnames = (yyvsp[-2].list); - n->args = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(3) - (5)].list); + n->args = (yyvsp[(4) - (5)].list); + n->definition = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 31170 "gram.c" /* yacc.c:1646 */ break; case 801: -#line 5582 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5582 "gram.y" { /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = true; - n->defnames = (yyvsp[-1].list); + n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; - n->definition = (yyvsp[0].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 31185 "gram.c" /* yacc.c:1646 */ break; case 802: -#line 5593 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5593 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_OPERATOR; n->oldstyle = false; - n->defnames = (yyvsp[-1].list); + n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; - n->definition = (yyvsp[0].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 31199 "gram.c" /* yacc.c:1646 */ break; case 803: -#line 5603 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5603 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; n->oldstyle = false; - n->defnames = (yyvsp[-1].list); + n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; - n->definition = (yyvsp[0].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 31213 "gram.c" /* yacc.c:1646 */ break; case 804: -#line 5613 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5613 "gram.y" { /* Shell type (identified by lack of definition) */ DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; n->oldstyle = false; - n->defnames = (yyvsp[0].list); + n->defnames = (yyvsp[(3) - (3)].list); n->args = NIL; n->definition = NIL; (yyval.node) = (Node *)n; } -#line 31228 "gram.c" /* yacc.c:1646 */ break; case 805: -#line 5624 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5624 "gram.y" { CompositeTypeStmt *n = makeNode(CompositeTypeStmt); /* can't use qualified_name, sigh */ - n->typevar = makeRangeVarFromAnyName((yyvsp[-4].list), (yylsp[-4]), yyscanner); - n->coldeflist = (yyvsp[-1].list); + n->typevar = makeRangeVarFromAnyName((yyvsp[(3) - (7)].list), (yylsp[(3) - (7)]), yyscanner); + n->coldeflist = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; } -#line 31241 "gram.c" /* yacc.c:1646 */ break; case 806: -#line 5633 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5633 "gram.y" { CreateEnumStmt *n = makeNode(CreateEnumStmt); - n->typeName = (yyvsp[-5].list); - n->vals = (yyvsp[-1].list); + n->typeName = (yyvsp[(3) - (8)].list); + n->vals = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *)n; } -#line 31252 "gram.c" /* yacc.c:1646 */ break; case 807: -#line 5640 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5640 "gram.y" { CreateRangeStmt *n = makeNode(CreateRangeStmt); - n->typeName = (yyvsp[-3].list); - n->params = (yyvsp[0].list); + n->typeName = (yyvsp[(3) - (6)].list); + n->params = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 31263 "gram.c" /* yacc.c:1646 */ break; case 808: -#line 5647 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5647 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSPARSER; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 31276 "gram.c" /* yacc.c:1646 */ break; case 809: -#line 5656 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5656 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSDICTIONARY; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 31289 "gram.c" /* yacc.c:1646 */ break; case 810: -#line 5665 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5665 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSTEMPLATE; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 31302 "gram.c" /* yacc.c:1646 */ break; case 811: -#line 5674 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5674 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSCONFIGURATION; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 31315 "gram.c" /* yacc.c:1646 */ break; case 812: -#line 5683 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5683 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(3) - (4)].list); + n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 31328 "gram.c" /* yacc.c:1646 */ break; case 813: -#line 5692 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5692 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; - n->defnames = (yyvsp[-1].list); - n->definition = (yyvsp[0].list); + n->defnames = (yyvsp[(6) - (7)].list); + n->definition = (yyvsp[(7) - (7)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 31342 "gram.c" /* yacc.c:1646 */ break; case 814: -#line 5702 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5702 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; - n->defnames = (yyvsp[-2].list); - n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[0].list), (yylsp[0]))); + n->defnames = (yyvsp[(3) - (5)].list); + n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[(5) - (5)].list), (yylsp[(5) - (5)]))); (yyval.node) = (Node *)n; } -#line 31355 "gram.c" /* yacc.c:1646 */ break; case 815: -#line 5711 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5711 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; - n->defnames = (yyvsp[-2].list); - n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[0].list), (yylsp[0]))); + n->defnames = (yyvsp[(6) - (8)].list); + n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[(8) - (8)].list), (yylsp[(8) - (8)]))); n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 31369 "gram.c" /* yacc.c:1646 */ break; case 816: -#line 5722 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 31375 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5722 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 817: -#line 5725 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 31381 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5725 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 818: -#line 5726 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 31387 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5726 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; case 819: -#line 5730 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5730 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node), (yylsp[-2])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); } -#line 31395 "gram.c" /* yacc.c:1646 */ break; case 820: -#line 5734 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5734 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL, (yylsp[0])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); } -#line 31403 "gram.c" /* yacc.c:1646 */ break; case 821: -#line 5740 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].typnam); } -#line 31409 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5740 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); } break; case 822: -#line 5741 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[0].keyword))); } -#line 31415 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5741 "gram.y" + { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); } break; case 823: -#line 5742 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].list); } -#line 31421 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5742 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); } break; case 824: -#line 5743 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].value); } -#line 31427 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5743 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); } break; case 825: -#line 5744 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)makeString((yyvsp[0].str)); } -#line 31433 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5744 "gram.y" + { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); } break; case 826: -#line 5745 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[0].keyword))); } -#line 31439 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5745 "gram.y" + { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); } break; case 827: -#line 5748 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 31445 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5748 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 828: -#line 5751 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 31451 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5751 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 829: -#line 5752 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 31457 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5752 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; case 830: -#line 5761 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5761 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)(yyvsp[0].node), (yylsp[-2])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)(yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); } -#line 31465 "gram.c" /* yacc.c:1646 */ break; case 831: -#line 5767 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 31471 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5767 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 832: -#line 5768 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5768 "gram.y" { (yyval.list) = NIL; } -#line 31477 "gram.c" /* yacc.c:1646 */ break; case 833: -#line 5772 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 31483 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5772 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 834: -#line 5774 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 31489 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5774 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; case 835: -#line 5785 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5785 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); - n->typeName = (yyvsp[-4].list); + n->typeName = (yyvsp[(3) - (7)].list); n->oldVal = NULL; - n->newVal = (yyvsp[0].str); + n->newVal = (yyvsp[(7) - (7)].str); n->newValNeighbor = NULL; n->newValIsAfter = true; - n->skipIfNewValExists = (yyvsp[-1].boolean); + n->skipIfNewValExists = (yyvsp[(6) - (7)].boolean); (yyval.node) = (Node *) n; } -#line 31504 "gram.c" /* yacc.c:1646 */ break; case 836: -#line 5796 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5796 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); - n->typeName = (yyvsp[-6].list); + n->typeName = (yyvsp[(3) - (9)].list); n->oldVal = NULL; - n->newVal = (yyvsp[-2].str); - n->newValNeighbor = (yyvsp[0].str); + n->newVal = (yyvsp[(7) - (9)].str); + n->newValNeighbor = (yyvsp[(9) - (9)].str); n->newValIsAfter = false; - n->skipIfNewValExists = (yyvsp[-3].boolean); + n->skipIfNewValExists = (yyvsp[(6) - (9)].boolean); (yyval.node) = (Node *) n; } -#line 31519 "gram.c" /* yacc.c:1646 */ break; case 837: -#line 5807 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5807 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); - n->typeName = (yyvsp[-6].list); + n->typeName = (yyvsp[(3) - (9)].list); n->oldVal = NULL; - n->newVal = (yyvsp[-2].str); - n->newValNeighbor = (yyvsp[0].str); + n->newVal = (yyvsp[(7) - (9)].str); + n->newValNeighbor = (yyvsp[(9) - (9)].str); n->newValIsAfter = true; - n->skipIfNewValExists = (yyvsp[-3].boolean); + n->skipIfNewValExists = (yyvsp[(6) - (9)].boolean); (yyval.node) = (Node *) n; } -#line 31534 "gram.c" /* yacc.c:1646 */ break; case 838: -#line 5818 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5818 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); - n->typeName = (yyvsp[-5].list); - n->oldVal = (yyvsp[-2].str); - n->newVal = (yyvsp[0].str); + n->typeName = (yyvsp[(3) - (8)].list); + n->oldVal = (yyvsp[(6) - (8)].str); + n->newVal = (yyvsp[(8) - (8)].str); n->newValNeighbor = NULL; n->newValIsAfter = false; n->skipIfNewValExists = false; (yyval.node) = (Node *) n; } -#line 31549 "gram.c" /* yacc.c:1646 */ break; case 839: -#line 5830 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5830 "gram.y" { (yyval.boolean) = true; } -#line 31555 "gram.c" /* yacc.c:1646 */ break; case 840: -#line 5831 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5831 "gram.y" { (yyval.boolean) = false; } -#line 31561 "gram.c" /* yacc.c:1646 */ break; case 841: -#line 5849 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5849 "gram.y" { CreateOpClassStmt *n = makeNode(CreateOpClassStmt); - n->opclassname = (yyvsp[-9].list); - n->isDefault = (yyvsp[-8].boolean); - n->datatype = (yyvsp[-5].typnam); - n->amname = (yyvsp[-3].str); - n->opfamilyname = (yyvsp[-2].list); - n->items = (yyvsp[0].list); + n->opclassname = (yyvsp[(4) - (13)].list); + n->isDefault = (yyvsp[(5) - (13)].boolean); + n->datatype = (yyvsp[(8) - (13)].typnam); + n->amname = (yyvsp[(10) - (13)].str); + n->opfamilyname = (yyvsp[(11) - (13)].list); + n->items = (yyvsp[(13) - (13)].list); (yyval.node) = (Node *) n; } -#line 31576 "gram.c" /* yacc.c:1646 */ break; case 842: -#line 5862 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 31582 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5862 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 843: -#line 5863 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 31588 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5863 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 844: -#line 5868 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5868 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); ObjectWithArgs *owa = makeNode(ObjectWithArgs); - owa->objname = (yyvsp[-2].list); + owa->objname = (yyvsp[(3) - (5)].list); owa->objargs = NIL; n->itemtype = OPCLASS_ITEM_OPERATOR; n->name = owa; - n->number = (yyvsp[-3].ival); - n->order_family = (yyvsp[-1].list); + n->number = (yyvsp[(2) - (5)].ival); + n->order_family = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 31604 "gram.c" /* yacc.c:1646 */ break; case 845: -#line 5881 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5881 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; - n->name = (yyvsp[-2].objwithargs); - n->number = (yyvsp[-3].ival); - n->order_family = (yyvsp[-1].list); + n->name = (yyvsp[(3) - (5)].objwithargs); + n->number = (yyvsp[(2) - (5)].ival); + n->order_family = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 31617 "gram.c" /* yacc.c:1646 */ break; case 846: -#line 5890 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5890 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; - n->name = (yyvsp[0].objwithargs); - n->number = (yyvsp[-1].ival); + n->name = (yyvsp[(3) - (3)].objwithargs); + n->number = (yyvsp[(2) - (3)].ival); (yyval.node) = (Node *) n; } -#line 31629 "gram.c" /* yacc.c:1646 */ break; case 847: -#line 5898 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5898 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; - n->name = (yyvsp[0].objwithargs); - n->number = (yyvsp[-4].ival); - n->class_args = (yyvsp[-2].list); + n->name = (yyvsp[(6) - (6)].objwithargs); + n->number = (yyvsp[(2) - (6)].ival); + n->class_args = (yyvsp[(4) - (6)].list); (yyval.node) = (Node *) n; } -#line 31642 "gram.c" /* yacc.c:1646 */ break; case 848: -#line 5907 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5907 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_STORAGETYPE; - n->storedtype = (yyvsp[0].typnam); + n->storedtype = (yyvsp[(2) - (2)].typnam); (yyval.node) = (Node *) n; } -#line 31653 "gram.c" /* yacc.c:1646 */ break; case 849: -#line 5915 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5915 "gram.y" { (yyval.boolean) = TRUE; } -#line 31659 "gram.c" /* yacc.c:1646 */ break; case 850: -#line 5916 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5916 "gram.y" { (yyval.boolean) = FALSE; } -#line 31665 "gram.c" /* yacc.c:1646 */ break; case 851: -#line 5919 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 31671 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5919 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 852: -#line 5920 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5920 "gram.y" { (yyval.list) = NIL; } -#line 31677 "gram.c" /* yacc.c:1646 */ break; case 853: -#line 5923 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5923 "gram.y" { (yyval.list) = NIL; } -#line 31683 "gram.c" /* yacc.c:1646 */ break; case 854: -#line 5924 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 31689 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5924 "gram.y" + { (yyval.list) = (yyvsp[(4) - (4)].list); } break; case 855: -#line 5925 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5925 "gram.y" { (yyval.list) = NIL; } -#line 31695 "gram.c" /* yacc.c:1646 */ break; case 856: -#line 5929 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5929 "gram.y" { /* * RECHECK no longer does anything in opclass definitions, @@ -31706,651 +33094,651 @@ yyreduce: (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RECHECK is no longer required"), errhint("Update your data type."), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); (yyval.boolean) = TRUE; } -#line 31713 "gram.c" /* yacc.c:1646 */ break; case 857: -#line 5942 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5942 "gram.y" { (yyval.boolean) = FALSE; } -#line 31719 "gram.c" /* yacc.c:1646 */ break; case 858: -#line 5948 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5948 "gram.y" { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); - n->opfamilyname = (yyvsp[-2].list); - n->amname = (yyvsp[0].str); + n->opfamilyname = (yyvsp[(4) - (6)].list); + n->amname = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 31730 "gram.c" /* yacc.c:1646 */ break; case 859: -#line 5958 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5958 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); - n->opfamilyname = (yyvsp[-4].list); - n->amname = (yyvsp[-2].str); + n->opfamilyname = (yyvsp[(4) - (8)].list); + n->amname = (yyvsp[(6) - (8)].str); n->isDrop = false; - n->items = (yyvsp[0].list); + n->items = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 31743 "gram.c" /* yacc.c:1646 */ break; case 860: -#line 5967 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5967 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); - n->opfamilyname = (yyvsp[-4].list); - n->amname = (yyvsp[-2].str); + n->opfamilyname = (yyvsp[(4) - (8)].list); + n->amname = (yyvsp[(6) - (8)].str); n->isDrop = true; - n->items = (yyvsp[0].list); + n->items = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; } -#line 31756 "gram.c" /* yacc.c:1646 */ break; case 861: -#line 5978 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 31762 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5978 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 862: -#line 5979 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 31768 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5979 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 863: -#line 5984 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5984 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; - n->number = (yyvsp[-3].ival); - n->class_args = (yyvsp[-1].list); + n->number = (yyvsp[(2) - (5)].ival); + n->class_args = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 31780 "gram.c" /* yacc.c:1646 */ break; case 864: -#line 5992 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 5992 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; - n->number = (yyvsp[-3].ival); - n->class_args = (yyvsp[-1].list); + n->number = (yyvsp[(2) - (5)].ival); + n->class_args = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 31792 "gram.c" /* yacc.c:1646 */ break; case 865: -#line 6004 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6004 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); n->removeType = OBJECT_OPCLASS; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31806 "gram.c" /* yacc.c:1646 */ break; case 866: -#line 6014 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6014 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); n->removeType = OBJECT_OPCLASS; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31820 "gram.c" /* yacc.c:1646 */ break; case 867: -#line 6027 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6027 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); n->removeType = OBJECT_OPFAMILY; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31834 "gram.c" /* yacc.c:1646 */ break; case 868: -#line 6037 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6037 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->objects = list_make1(lcons(makeString((yyvsp[-1].str)), (yyvsp[-3].list))); + n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); n->removeType = OBJECT_OPFAMILY; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31848 "gram.c" /* yacc.c:1646 */ break; case 869: -#line 6059 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6059 "gram.y" { DropOwnedStmt *n = makeNode(DropOwnedStmt); - n->roles = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->roles = (yyvsp[(4) - (5)].list); + n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *)n; } -#line 31859 "gram.c" /* yacc.c:1646 */ break; case 870: -#line 6069 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6069 "gram.y" { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); - n->roles = (yyvsp[-2].list); - n->newrole = (yyvsp[0].rolespec); + n->roles = (yyvsp[(4) - (6)].list); + n->newrole = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 31870 "gram.c" /* yacc.c:1646 */ break; case 871: -#line 6087 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6087 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-4].objtype); + n->removeType = (yyvsp[(2) - (6)].objtype); n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 31884 "gram.c" /* yacc.c:1646 */ break; case 872: -#line 6097 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6097 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-2].objtype); + n->removeType = (yyvsp[(2) - (4)].objtype); n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 31898 "gram.c" /* yacc.c:1646 */ break; case 873: -#line 6107 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6107 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-4].objtype); + n->removeType = (yyvsp[(2) - (6)].objtype); n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 31912 "gram.c" /* yacc.c:1646 */ break; case 874: -#line 6117 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6117 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-2].objtype); + n->removeType = (yyvsp[(2) - (4)].objtype); n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 31926 "gram.c" /* yacc.c:1646 */ break; case 875: -#line 6127 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6127 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-4].objtype); - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->behavior = (yyvsp[0].dbehavior); + n->removeType = (yyvsp[(2) - (6)].objtype); + n->objects = list_make1(lappend((yyvsp[(5) - (6)].list), makeString((yyvsp[(3) - (6)].str)))); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31940 "gram.c" /* yacc.c:1646 */ break; case 876: -#line 6137 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6137 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = (yyvsp[-6].objtype); - n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); - n->behavior = (yyvsp[0].dbehavior); + n->removeType = (yyvsp[(2) - (8)].objtype); + n->objects = list_make1(lappend((yyvsp[(7) - (8)].list), makeString((yyvsp[(5) - (8)].str)))); + n->behavior = (yyvsp[(8) - (8)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31954 "gram.c" /* yacc.c:1646 */ break; case 877: -#line 6147 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6147 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31968 "gram.c" /* yacc.c:1646 */ break; case 878: -#line 6157 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6157 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31982 "gram.c" /* yacc.c:1646 */ break; case 879: -#line 6167 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6167 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 31996 "gram.c" /* yacc.c:1646 */ break; case 880: -#line 6177 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6177 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; } -#line 32010 "gram.c" /* yacc.c:1646 */ break; case 881: -#line 6187 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6187 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; n->missing_ok = FALSE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(4) - (5)].list); + n->behavior = (yyvsp[(5) - (5)].dbehavior); n->concurrent = true; (yyval.node) = (Node *)n; } -#line 32024 "gram.c" /* yacc.c:1646 */ break; case 882: -#line 6197 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6197 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; n->missing_ok = TRUE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(6) - (7)].list); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->concurrent = true; (yyval.node) = (Node *)n; } -#line 32038 "gram.c" /* yacc.c:1646 */ break; case 883: -#line 6210 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6210 "gram.y" { (yyval.objtype) = OBJECT_TABLE; } -#line 32044 "gram.c" /* yacc.c:1646 */ break; case 884: -#line 6211 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6211 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; } -#line 32050 "gram.c" /* yacc.c:1646 */ break; case 885: -#line 6212 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6212 "gram.y" { (yyval.objtype) = OBJECT_VIEW; } -#line 32056 "gram.c" /* yacc.c:1646 */ break; case 886: -#line 6213 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6213 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; } -#line 32062 "gram.c" /* yacc.c:1646 */ break; case 887: -#line 6214 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6214 "gram.y" { (yyval.objtype) = OBJECT_INDEX; } -#line 32068 "gram.c" /* yacc.c:1646 */ break; case 888: -#line 6215 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6215 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } -#line 32074 "gram.c" /* yacc.c:1646 */ break; case 889: -#line 6216 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6216 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; } -#line 32080 "gram.c" /* yacc.c:1646 */ break; case 890: -#line 6217 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6217 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; } -#line 32086 "gram.c" /* yacc.c:1646 */ break; case 891: -#line 6218 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6218 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; } -#line 32092 "gram.c" /* yacc.c:1646 */ break; case 892: -#line 6219 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6219 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; } -#line 32098 "gram.c" /* yacc.c:1646 */ break; case 893: -#line 6220 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6220 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; } -#line 32104 "gram.c" /* yacc.c:1646 */ break; case 894: -#line 6221 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6221 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; } -#line 32110 "gram.c" /* yacc.c:1646 */ break; case 895: -#line 6222 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6222 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; } -#line 32116 "gram.c" /* yacc.c:1646 */ break; case 896: -#line 6227 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6227 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; } -#line 32122 "gram.c" /* yacc.c:1646 */ break; case 897: -#line 6228 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6228 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } -#line 32128 "gram.c" /* yacc.c:1646 */ break; case 898: -#line 6229 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6229 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; } -#line 32134 "gram.c" /* yacc.c:1646 */ break; case 899: -#line 6230 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6230 "gram.y" { (yyval.objtype) = OBJECT_FDW; } -#line 32140 "gram.c" /* yacc.c:1646 */ break; case 900: -#line 6231 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6231 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; } -#line 32146 "gram.c" /* yacc.c:1646 */ break; case 901: -#line 6232 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6232 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; } -#line 32152 "gram.c" /* yacc.c:1646 */ break; case 902: -#line 6233 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6233 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; } -#line 32158 "gram.c" /* yacc.c:1646 */ break; case 903: -#line 6238 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6238 "gram.y" { (yyval.objtype) = OBJECT_POLICY; } -#line 32164 "gram.c" /* yacc.c:1646 */ break; case 904: -#line 6239 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6239 "gram.y" { (yyval.objtype) = OBJECT_RULE; } -#line 32170 "gram.c" /* yacc.c:1646 */ break; case 905: -#line 6240 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6240 "gram.y" { (yyval.objtype) = OBJECT_TRIGGER; } -#line 32176 "gram.c" /* yacc.c:1646 */ break; case 906: -#line 6244 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].list)); } -#line 32182 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6244 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); } break; case 907: -#line 6245 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } -#line 32188 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6245 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; case 908: -#line 6248 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 32194 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6248 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 909: -#line 6249 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } -#line 32200 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6249 "gram.y" + { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); } break; case 910: -#line 6253 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 32206 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6253 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); } break; case 911: -#line 6255 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 32212 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6255 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; case 912: -#line 6259 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].typnam)); } -#line 32218 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6259 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); } break; case 913: -#line 6260 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].typnam)); } -#line 32224 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6260 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); } break; case 914: -#line 6271 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6271 "gram.y" { TruncateStmt *n = makeNode(TruncateStmt); - n->relations = (yyvsp[-2].list); - n->restart_seqs = (yyvsp[-1].boolean); - n->behavior = (yyvsp[0].dbehavior); + n->relations = (yyvsp[(3) - (5)].list); + n->restart_seqs = (yyvsp[(4) - (5)].boolean); + n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *)n; } -#line 32236 "gram.c" /* yacc.c:1646 */ break; case 915: -#line 6281 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6281 "gram.y" { (yyval.boolean) = false; } -#line 32242 "gram.c" /* yacc.c:1646 */ break; case 916: -#line 6282 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6282 "gram.y" { (yyval.boolean) = true; } -#line 32248 "gram.c" /* yacc.c:1646 */ break; case 917: -#line 6283 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6283 "gram.y" { (yyval.boolean) = false; } -#line 32254 "gram.c" /* yacc.c:1646 */ break; case 918: -#line 6318 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6318 "gram.y" { CommentStmt *n = makeNode(CommentStmt); - n->objtype = (yyvsp[-3].objtype); - n->object = (Node *) (yyvsp[-2].list); - n->comment = (yyvsp[0].str); + n->objtype = (yyvsp[(3) - (6)].objtype); + n->object = (Node *) (yyvsp[(4) - (6)].list); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 32266 "gram.c" /* yacc.c:1646 */ break; case 919: -#line 6326 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6326 "gram.y" { CommentStmt *n = makeNode(CommentStmt); - n->objtype = (yyvsp[-3].objtype); - n->object = (Node *) makeString((yyvsp[-2].str)); - n->comment = (yyvsp[0].str); + n->objtype = (yyvsp[(3) - (6)].objtype); + n->object = (Node *) makeString((yyvsp[(4) - (6)].str)); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 32278 "gram.c" /* yacc.c:1646 */ break; case 920: -#line 6334 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6334 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TYPE; - n->object = (Node *) (yyvsp[-2].typnam); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].typnam); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 32290 "gram.c" /* yacc.c:1646 */ break; case 921: -#line 6342 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6342 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMAIN; - n->object = (Node *) (yyvsp[-2].typnam); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].typnam); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 32302 "gram.c" /* yacc.c:1646 */ break; case 922: -#line 6350 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6350 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_AGGREGATE; - n->object = (Node *) (yyvsp[-2].objwithargs); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 32314 "gram.c" /* yacc.c:1646 */ break; case 923: -#line 6358 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6358 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[-2].objwithargs); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 32326 "gram.c" /* yacc.c:1646 */ break; case 924: -#line 6366 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6366 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPERATOR; - n->object = (Node *) (yyvsp[-2].objwithargs); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; } -#line 32338 "gram.c" /* yacc.c:1646 */ break; case 925: -#line 6374 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6374 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TABCONSTRAINT; - n->object = (Node *) lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32350 "gram.c" /* yacc.c:1646 */ break; case 926: -#line 6382 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6382 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMCONSTRAINT; @@ -32359,1292 +33747,1292 @@ yyreduce: * there's a shift/reduce conflict if we do that, so fix it * up here. */ - n->object = (Node *) list_make2(makeTypeNameFromNameList((yyvsp[-2].list)), makeString((yyvsp[-5].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) list_make2(makeTypeNameFromNameList((yyvsp[(7) - (9)].list)), makeString((yyvsp[(4) - (9)].str))); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 32367 "gram.c" /* yacc.c:1646 */ break; case 927: -#line 6395 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6395 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_POLICY; - n->object = (Node *) lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32379 "gram.c" /* yacc.c:1646 */ break; case 928: -#line 6403 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6403 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_RULE; - n->object = (Node *) lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32391 "gram.c" /* yacc.c:1646 */ break; case 929: -#line 6411 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6411 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRANSFORM; - n->object = (Node *) list_make2((yyvsp[-4].typnam), makeString((yyvsp[-2].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) list_make2((yyvsp[(5) - (9)].typnam), makeString((yyvsp[(7) - (9)].str))); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 32403 "gram.c" /* yacc.c:1646 */ break; case 930: -#line 6419 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6419 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRIGGER; - n->object = (Node *) lappend((yyvsp[-2].list), makeString((yyvsp[-4].str))); - n->comment = (yyvsp[0].str); + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32415 "gram.c" /* yacc.c:1646 */ break; case 931: -#line 6427 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6427 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPCLASS; - n->object = (Node *) lcons(makeString((yyvsp[-2].str)), (yyvsp[-4].list)); - n->comment = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(7) - (9)].str)), (yyvsp[(5) - (9)].list)); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 32427 "gram.c" /* yacc.c:1646 */ break; case 932: -#line 6435 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6435 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPFAMILY; - n->object = (Node *) lcons(makeString((yyvsp[-2].str)), (yyvsp[-4].list)); - n->comment = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(7) - (9)].str)), (yyvsp[(5) - (9)].list)); + n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 32439 "gram.c" /* yacc.c:1646 */ break; case 933: -#line 6443 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6443 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LARGEOBJECT; - n->object = (Node *) (yyvsp[-2].value); - n->comment = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (7)].value); + n->comment = (yyvsp[(7) - (7)].str); (yyval.node) = (Node *) n; } -#line 32451 "gram.c" /* yacc.c:1646 */ break; case 934: -#line 6451 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6451 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_CAST; - n->object = (Node *) list_make2((yyvsp[-5].typnam), (yyvsp[-3].typnam)); - n->comment = (yyvsp[0].str); + n->object = (Node *) list_make2((yyvsp[(5) - (10)].typnam), (yyvsp[(7) - (10)].typnam)); + n->comment = (yyvsp[(10) - (10)].str); (yyval.node) = (Node *) n; } -#line 32463 "gram.c" /* yacc.c:1646 */ break; case 935: -#line 6462 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6462 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; } -#line 32469 "gram.c" /* yacc.c:1646 */ break; case 936: -#line 6463 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6463 "gram.y" { (yyval.objtype) = OBJECT_INDEX; } -#line 32475 "gram.c" /* yacc.c:1646 */ break; case 937: -#line 6464 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6464 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; } -#line 32481 "gram.c" /* yacc.c:1646 */ break; case 938: -#line 6465 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6465 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; } -#line 32487 "gram.c" /* yacc.c:1646 */ break; case 939: -#line 6466 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6466 "gram.y" { (yyval.objtype) = OBJECT_TABLE; } -#line 32493 "gram.c" /* yacc.c:1646 */ break; case 940: -#line 6467 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6467 "gram.y" { (yyval.objtype) = OBJECT_VIEW; } -#line 32499 "gram.c" /* yacc.c:1646 */ break; case 941: -#line 6468 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6468 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; } -#line 32505 "gram.c" /* yacc.c:1646 */ break; case 942: -#line 6469 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6469 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; } -#line 32511 "gram.c" /* yacc.c:1646 */ break; case 943: -#line 6470 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6470 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; } -#line 32517 "gram.c" /* yacc.c:1646 */ break; case 944: -#line 6471 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6471 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } -#line 32523 "gram.c" /* yacc.c:1646 */ break; case 945: -#line 6472 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6472 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; } -#line 32529 "gram.c" /* yacc.c:1646 */ break; case 946: -#line 6473 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6473 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; } -#line 32535 "gram.c" /* yacc.c:1646 */ break; case 947: -#line 6474 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6474 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; } -#line 32541 "gram.c" /* yacc.c:1646 */ break; case 948: -#line 6475 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6475 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; } -#line 32547 "gram.c" /* yacc.c:1646 */ break; case 949: -#line 6480 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6480 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; } -#line 32553 "gram.c" /* yacc.c:1646 */ break; case 950: -#line 6481 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6481 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; } -#line 32559 "gram.c" /* yacc.c:1646 */ break; case 951: -#line 6482 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6482 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } -#line 32565 "gram.c" /* yacc.c:1646 */ break; case 952: -#line 6483 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6483 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; } -#line 32571 "gram.c" /* yacc.c:1646 */ break; case 953: -#line 6484 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6484 "gram.y" { (yyval.objtype) = OBJECT_FDW; } -#line 32577 "gram.c" /* yacc.c:1646 */ break; case 954: -#line 6485 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6485 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; } -#line 32583 "gram.c" /* yacc.c:1646 */ break; case 955: -#line 6486 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6486 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; } -#line 32589 "gram.c" /* yacc.c:1646 */ break; case 956: -#line 6487 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6487 "gram.y" { (yyval.objtype) = OBJECT_ROLE; } -#line 32595 "gram.c" /* yacc.c:1646 */ break; case 957: -#line 6488 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6488 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; } -#line 32601 "gram.c" /* yacc.c:1646 */ break; case 958: -#line 6489 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6489 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; } -#line 32607 "gram.c" /* yacc.c:1646 */ break; case 959: -#line 6490 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6490 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; } -#line 32613 "gram.c" /* yacc.c:1646 */ break; case 960: -#line 6491 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6491 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; } -#line 32619 "gram.c" /* yacc.c:1646 */ break; case 961: -#line 6495 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 32625 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6495 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 962: -#line 6496 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6496 "gram.y" { (yyval.str) = NULL; } -#line 32631 "gram.c" /* yacc.c:1646 */ break; case 963: -#line 6512 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6512 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); - n->objtype = (yyvsp[-3].objtype); - n->object = (Node *) (yyvsp[-2].list); - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = (yyvsp[(5) - (8)].objtype); + n->object = (Node *) (yyvsp[(6) - (8)].list); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32644 "gram.c" /* yacc.c:1646 */ break; case 964: -#line 6522 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6522 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); - n->objtype = (yyvsp[-3].objtype); - n->object = (Node *) makeString((yyvsp[-2].str)); - n->label = (yyvsp[0].str); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = (yyvsp[(5) - (8)].objtype); + n->object = (Node *) makeString((yyvsp[(6) - (8)].str)); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32657 "gram.c" /* yacc.c:1646 */ break; case 965: -#line 6532 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6532 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); + n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_TYPE; - n->object = (Node *) (yyvsp[-2].typnam); - n->label = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(6) - (8)].typnam); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32670 "gram.c" /* yacc.c:1646 */ break; case 966: -#line 6542 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6542 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); + n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_DOMAIN; - n->object = (Node *) (yyvsp[-2].typnam); - n->label = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(6) - (8)].typnam); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32683 "gram.c" /* yacc.c:1646 */ break; case 967: -#line 6552 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6552 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); + n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_AGGREGATE; - n->object = (Node *) (yyvsp[-2].objwithargs); - n->label = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32696 "gram.c" /* yacc.c:1646 */ break; case 968: -#line 6562 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6562 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-5].str); + n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[-2].objwithargs); - n->label = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); + n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; } -#line 32709 "gram.c" /* yacc.c:1646 */ break; case 969: -#line 6572 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6572 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); - n->provider = (yyvsp[-6].str); + n->provider = (yyvsp[(3) - (9)].str); n->objtype = OBJECT_LARGEOBJECT; - n->object = (Node *) (yyvsp[-2].value); - n->label = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(7) - (9)].value); + n->label = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; } -#line 32722 "gram.c" /* yacc.c:1646 */ break; case 970: -#line 6582 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 32728 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6582 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 971: -#line 6583 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6583 "gram.y" { (yyval.str) = NULL; } -#line 32734 "gram.c" /* yacc.c:1646 */ break; case 972: -#line 6588 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6588 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; } -#line 32740 "gram.c" /* yacc.c:1646 */ break; case 973: -#line 6589 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6589 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; } -#line 32746 "gram.c" /* yacc.c:1646 */ break; case 974: -#line 6590 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6590 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; } -#line 32752 "gram.c" /* yacc.c:1646 */ break; case 975: -#line 6591 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6591 "gram.y" { (yyval.objtype) = OBJECT_TABLE; } -#line 32758 "gram.c" /* yacc.c:1646 */ break; case 976: -#line 6592 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6592 "gram.y" { (yyval.objtype) = OBJECT_VIEW; } -#line 32764 "gram.c" /* yacc.c:1646 */ break; case 977: -#line 6593 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6593 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; } -#line 32770 "gram.c" /* yacc.c:1646 */ break; case 978: -#line 6598 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6598 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; } -#line 32776 "gram.c" /* yacc.c:1646 */ break; case 979: -#line 6599 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6599 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; } -#line 32782 "gram.c" /* yacc.c:1646 */ break; case 980: -#line 6600 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6600 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; } -#line 32788 "gram.c" /* yacc.c:1646 */ break; case 981: -#line 6601 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6601 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; } -#line 32794 "gram.c" /* yacc.c:1646 */ break; case 982: -#line 6602 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6602 "gram.y" { (yyval.objtype) = OBJECT_ROLE; } -#line 32800 "gram.c" /* yacc.c:1646 */ break; case 983: -#line 6603 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6603 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; } -#line 32806 "gram.c" /* yacc.c:1646 */ break; case 984: -#line 6604 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6604 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; } -#line 32812 "gram.c" /* yacc.c:1646 */ break; case 985: -#line 6605 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6605 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; } -#line 32818 "gram.c" /* yacc.c:1646 */ break; case 986: -#line 6608 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 32824 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6608 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 987: -#line 6609 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6609 "gram.y" { (yyval.str) = NULL; } -#line 32830 "gram.c" /* yacc.c:1646 */ break; case 988: -#line 6620 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6620 "gram.y" { - FetchStmt *n = (FetchStmt *) (yyvsp[0].node); + FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = FALSE; (yyval.node) = (Node *)n; } -#line 32840 "gram.c" /* yacc.c:1646 */ break; case 989: -#line 6626 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6626 "gram.y" { - FetchStmt *n = (FetchStmt *) (yyvsp[0].node); + FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = TRUE; (yyval.node) = (Node *)n; } -#line 32850 "gram.c" /* yacc.c:1646 */ break; case 990: -#line 6634 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6634 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(1) - (1)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 32862 "gram.c" /* yacc.c:1646 */ break; case 991: -#line 6642 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6642 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(2) - (2)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 32874 "gram.c" /* yacc.c:1646 */ break; case 992: -#line 6650 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6650 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 32886 "gram.c" /* yacc.c:1646 */ break; case 993: -#line 6658 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6658 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_BACKWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 32898 "gram.c" /* yacc.c:1646 */ break; case 994: -#line 6666 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6666 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_ABSOLUTE; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 32910 "gram.c" /* yacc.c:1646 */ break; case 995: -#line 6674 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6674 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_ABSOLUTE; n->howMany = -1; (yyval.node) = (Node *)n; } -#line 32922 "gram.c" /* yacc.c:1646 */ break; case 996: -#line 6682 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6682 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_ABSOLUTE; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 32934 "gram.c" /* yacc.c:1646 */ break; case 997: -#line 6690 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6690 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_RELATIVE; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 32946 "gram.c" /* yacc.c:1646 */ break; case 998: -#line 6698 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6698 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(1) - (3)].ival); (yyval.node) = (Node *)n; } -#line 32958 "gram.c" /* yacc.c:1646 */ break; case 999: -#line 6706 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6706 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; } -#line 32970 "gram.c" /* yacc.c:1646 */ break; case 1000: -#line 6714 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6714 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 32982 "gram.c" /* yacc.c:1646 */ break; case 1001: -#line 6722 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6722 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_FORWARD; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 32994 "gram.c" /* yacc.c:1646 */ break; case 1002: -#line 6730 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6730 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_FORWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; } -#line 33006 "gram.c" /* yacc.c:1646 */ break; case 1003: -#line 6738 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6738 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_BACKWARD; n->howMany = 1; (yyval.node) = (Node *)n; } -#line 33018 "gram.c" /* yacc.c:1646 */ break; case 1004: -#line 6746 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6746 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_BACKWARD; - n->howMany = (yyvsp[-2].ival); + n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; } -#line 33030 "gram.c" /* yacc.c:1646 */ break; case 1005: -#line 6754 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6754 "gram.y" { FetchStmt *n = makeNode(FetchStmt); - n->portalname = (yyvsp[0].str); + n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_BACKWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; } -#line 33042 "gram.c" /* yacc.c:1646 */ break; case 1006: -#line 6763 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6763 "gram.y" {} -#line 33048 "gram.c" /* yacc.c:1646 */ break; case 1007: -#line 6764 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6764 "gram.y" {} -#line 33054 "gram.c" /* yacc.c:1646 */ break; case 1008: -#line 6767 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6767 "gram.y" {} -#line 33060 "gram.c" /* yacc.c:1646 */ break; case 1009: -#line 6768 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6768 "gram.y" {} -#line 33066 "gram.c" /* yacc.c:1646 */ break; case 1010: -#line 6780 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6780 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; - n->privileges = (yyvsp[-5].list); - n->targtype = ((yyvsp[-3].privtarget))->targtype; - n->objtype = ((yyvsp[-3].privtarget))->objtype; - n->objects = ((yyvsp[-3].privtarget))->objs; - n->grantees = (yyvsp[-1].list); - n->grant_option = (yyvsp[0].boolean); + n->privileges = (yyvsp[(2) - (7)].list); + n->targtype = ((yyvsp[(4) - (7)].privtarget))->targtype; + n->objtype = ((yyvsp[(4) - (7)].privtarget))->objtype; + n->objects = ((yyvsp[(4) - (7)].privtarget))->objs; + n->grantees = (yyvsp[(6) - (7)].list); + n->grant_option = (yyvsp[(7) - (7)].boolean); (yyval.node) = (Node*)n; } -#line 33082 "gram.c" /* yacc.c:1646 */ break; case 1011: -#line 6796 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6796 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = false; - n->privileges = (yyvsp[-5].list); - n->targtype = ((yyvsp[-3].privtarget))->targtype; - n->objtype = ((yyvsp[-3].privtarget))->objtype; - n->objects = ((yyvsp[-3].privtarget))->objs; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->privileges = (yyvsp[(2) - (7)].list); + n->targtype = ((yyvsp[(4) - (7)].privtarget))->targtype; + n->objtype = ((yyvsp[(4) - (7)].privtarget))->objtype; + n->objects = ((yyvsp[(4) - (7)].privtarget))->objs; + n->grantees = (yyvsp[(6) - (7)].list); + n->behavior = (yyvsp[(7) - (7)].dbehavior); (yyval.node) = (Node *)n; } -#line 33099 "gram.c" /* yacc.c:1646 */ break; case 1012: -#line 6810 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6810 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = true; - n->privileges = (yyvsp[-5].list); - n->targtype = ((yyvsp[-3].privtarget))->targtype; - n->objtype = ((yyvsp[-3].privtarget))->objtype; - n->objects = ((yyvsp[-3].privtarget))->objs; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->privileges = (yyvsp[(5) - (10)].list); + n->targtype = ((yyvsp[(7) - (10)].privtarget))->targtype; + n->objtype = ((yyvsp[(7) - (10)].privtarget))->objtype; + n->objects = ((yyvsp[(7) - (10)].privtarget))->objs; + n->grantees = (yyvsp[(9) - (10)].list); + n->behavior = (yyvsp[(10) - (10)].dbehavior); (yyval.node) = (Node *)n; } -#line 33116 "gram.c" /* yacc.c:1646 */ break; case 1013: -#line 6835 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 33122 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6835 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1014: -#line 6837 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6837 "gram.y" { (yyval.list) = NIL; } -#line 33128 "gram.c" /* yacc.c:1646 */ break; case 1015: -#line 6839 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6839 "gram.y" { (yyval.list) = NIL; } -#line 33134 "gram.c" /* yacc.c:1646 */ break; case 1016: -#line 6841 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6841 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; - n->cols = (yyvsp[-1].list); + n->cols = (yyvsp[(3) - (4)].list); (yyval.list) = list_make1(n); } -#line 33145 "gram.c" /* yacc.c:1646 */ break; case 1017: -#line 6848 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6848 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; - n->cols = (yyvsp[-1].list); + n->cols = (yyvsp[(4) - (5)].list); (yyval.list) = list_make1(n); } -#line 33156 "gram.c" /* yacc.c:1646 */ break; case 1018: -#line 6856 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].accesspriv)); } -#line 33162 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6856 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].accesspriv)); } break; case 1019: -#line 6857 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].accesspriv)); } -#line 33168 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6857 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].accesspriv)); } break; case 1020: -#line 6861 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6861 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = pstrdup((yyvsp[-1].keyword)); - n->cols = (yyvsp[0].list); + n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 33179 "gram.c" /* yacc.c:1646 */ break; case 1021: -#line 6868 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6868 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = pstrdup((yyvsp[-1].keyword)); - n->cols = (yyvsp[0].list); + n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 33190 "gram.c" /* yacc.c:1646 */ break; case 1022: -#line 6875 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6875 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = pstrdup((yyvsp[-1].keyword)); - n->cols = (yyvsp[0].list); + n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 33201 "gram.c" /* yacc.c:1646 */ break; case 1023: -#line 6882 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6882 "gram.y" { AccessPriv *n = makeNode(AccessPriv); - n->priv_name = (yyvsp[-1].str); - n->cols = (yyvsp[0].list); + n->priv_name = (yyvsp[(1) - (2)].str); + n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; } -#line 33212 "gram.c" /* yacc.c:1646 */ break; case 1024: -#line 6896 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6896 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(1) - (1)].list); (yyval.privtarget) = n; } -#line 33224 "gram.c" /* yacc.c:1646 */ break; case 1025: -#line 6904 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6904 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33236 "gram.c" /* yacc.c:1646 */ break; case 1026: -#line 6912 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6912 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_SEQUENCE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33248 "gram.c" /* yacc.c:1646 */ break; case 1027: -#line 6920 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6920 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_FDW; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(4) - (4)].list); (yyval.privtarget) = n; } -#line 33260 "gram.c" /* yacc.c:1646 */ break; case 1028: -#line 6928 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6928 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_FOREIGN_SERVER; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; } -#line 33272 "gram.c" /* yacc.c:1646 */ break; case 1029: -#line 6936 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6936 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_FUNCTION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33284 "gram.c" /* yacc.c:1646 */ break; case 1030: -#line 6944 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6944 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_DATABASE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33296 "gram.c" /* yacc.c:1646 */ break; case 1031: -#line 6952 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6952 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_DOMAIN; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33308 "gram.c" /* yacc.c:1646 */ break; case 1032: -#line 6960 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6960 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_LANGUAGE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33320 "gram.c" /* yacc.c:1646 */ break; case 1033: -#line 6968 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6968 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_LARGEOBJECT; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; } -#line 33332 "gram.c" /* yacc.c:1646 */ break; case 1034: -#line 6976 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6976 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_NAMESPACE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33344 "gram.c" /* yacc.c:1646 */ break; case 1035: -#line 6984 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6984 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_TABLESPACE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33356 "gram.c" /* yacc.c:1646 */ break; case 1036: -#line 6992 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 6992 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = ACL_OBJECT_TYPE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; } -#line 33368 "gram.c" /* yacc.c:1646 */ break; case 1037: -#line 7000 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7000 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; } -#line 33380 "gram.c" /* yacc.c:1646 */ break; case 1038: -#line 7008 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7008 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = ACL_OBJECT_SEQUENCE; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; } -#line 33392 "gram.c" /* yacc.c:1646 */ break; case 1039: -#line 7016 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7016 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = ACL_OBJECT_FUNCTION; - n->objs = (yyvsp[0].list); + n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; } -#line 33404 "gram.c" /* yacc.c:1646 */ break; case 1040: -#line 7027 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].rolespec)); } -#line 33410 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7027 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); } break; case 1041: -#line 7028 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].rolespec)); } -#line 33416 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7028 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); } break; case 1042: -#line 7032 "gram.y" /* yacc.c:1646 */ - { (yyval.rolespec) = (yyvsp[0].rolespec); } -#line 33422 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7032 "gram.y" + { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); } break; case 1043: -#line 7033 "gram.y" /* yacc.c:1646 */ - { (yyval.rolespec) = (yyvsp[0].rolespec); } -#line 33428 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7033 "gram.y" + { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); } break; case 1044: -#line 7038 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7038 "gram.y" { (yyval.boolean) = TRUE; } -#line 33434 "gram.c" /* yacc.c:1646 */ break; case 1045: -#line 7039 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7039 "gram.y" { (yyval.boolean) = FALSE; } -#line 33440 "gram.c" /* yacc.c:1646 */ break; case 1046: -#line 7050 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7050 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; - n->granted_roles = (yyvsp[-4].list); - n->grantee_roles = (yyvsp[-2].list); - n->admin_opt = (yyvsp[-1].boolean); - n->grantor = (yyvsp[0].rolespec); + n->granted_roles = (yyvsp[(2) - (6)].list); + n->grantee_roles = (yyvsp[(4) - (6)].list); + n->admin_opt = (yyvsp[(5) - (6)].boolean); + n->grantor = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node*)n; } -#line 33454 "gram.c" /* yacc.c:1646 */ break; case 1047: -#line 7063 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7063 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = false; - n->granted_roles = (yyvsp[-4].list); - n->grantee_roles = (yyvsp[-2].list); - n->behavior = (yyvsp[0].dbehavior); + n->granted_roles = (yyvsp[(2) - (6)].list); + n->grantee_roles = (yyvsp[(4) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); (yyval.node) = (Node*)n; } -#line 33468 "gram.c" /* yacc.c:1646 */ break; case 1048: -#line 7073 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7073 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = true; - n->granted_roles = (yyvsp[-4].list); - n->grantee_roles = (yyvsp[-2].list); - n->behavior = (yyvsp[0].dbehavior); + n->granted_roles = (yyvsp[(5) - (9)].list); + n->grantee_roles = (yyvsp[(7) - (9)].list); + n->behavior = (yyvsp[(9) - (9)].dbehavior); (yyval.node) = (Node*)n; } -#line 33482 "gram.c" /* yacc.c:1646 */ break; case 1049: -#line 7084 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7084 "gram.y" { (yyval.boolean) = TRUE; } -#line 33488 "gram.c" /* yacc.c:1646 */ break; case 1050: -#line 7085 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7085 "gram.y" { (yyval.boolean) = FALSE; } -#line 33494 "gram.c" /* yacc.c:1646 */ break; case 1051: -#line 7088 "gram.y" /* yacc.c:1646 */ - { (yyval.rolespec) = (yyvsp[0].rolespec); } -#line 33500 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7088 "gram.y" + { (yyval.rolespec) = (yyvsp[(3) - (3)].rolespec); } break; case 1052: -#line 7089 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7089 "gram.y" { (yyval.rolespec) = NULL; } -#line 33506 "gram.c" /* yacc.c:1646 */ break; case 1053: -#line 7100 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7100 "gram.y" { AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); - n->options = (yyvsp[-1].list); - n->action = (GrantStmt *) (yyvsp[0].node); + n->options = (yyvsp[(4) - (5)].list); + n->action = (GrantStmt *) (yyvsp[(5) - (5)].node); (yyval.node) = (Node*)n; } -#line 33517 "gram.c" /* yacc.c:1646 */ break; case 1054: -#line 7109 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 33523 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7109 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 1055: -#line 7110 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7110 "gram.y" { (yyval.list) = NIL; } -#line 33529 "gram.c" /* yacc.c:1646 */ break; case 1056: -#line 7115 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7115 "gram.y" { - (yyval.defelt) = makeDefElem("schemas", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("schemas", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 33537 "gram.c" /* yacc.c:1646 */ break; case 1057: -#line 7119 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7119 "gram.y" { - (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 33545 "gram.c" /* yacc.c:1646 */ break; case 1058: -#line 7123 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7123 "gram.y" { - (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[0].list), (yylsp[-2])); + (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); } -#line 33553 "gram.c" /* yacc.c:1646 */ break; case 1059: -#line 7135 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7135 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; - n->privileges = (yyvsp[-5].list); + n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ACL_TARGET_DEFAULTS; - n->objtype = (yyvsp[-3].ival); + n->objtype = (yyvsp[(4) - (7)].ival); n->objects = NIL; - n->grantees = (yyvsp[-1].list); - n->grant_option = (yyvsp[0].boolean); + n->grantees = (yyvsp[(6) - (7)].list); + n->grant_option = (yyvsp[(7) - (7)].boolean); (yyval.node) = (Node*)n; } -#line 33569 "gram.c" /* yacc.c:1646 */ break; case 1060: -#line 7148 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7148 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = false; - n->privileges = (yyvsp[-5].list); + n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ACL_TARGET_DEFAULTS; - n->objtype = (yyvsp[-3].ival); + n->objtype = (yyvsp[(4) - (7)].ival); n->objects = NIL; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->grantees = (yyvsp[(6) - (7)].list); + n->behavior = (yyvsp[(7) - (7)].dbehavior); (yyval.node) = (Node *)n; } -#line 33586 "gram.c" /* yacc.c:1646 */ break; case 1061: -#line 7162 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7162 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = true; - n->privileges = (yyvsp[-5].list); + n->privileges = (yyvsp[(5) - (10)].list); n->targtype = ACL_TARGET_DEFAULTS; - n->objtype = (yyvsp[-3].ival); + n->objtype = (yyvsp[(7) - (10)].ival); n->objects = NIL; - n->grantees = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->grantees = (yyvsp[(9) - (10)].list); + n->behavior = (yyvsp[(10) - (10)].dbehavior); (yyval.node) = (Node *)n; } -#line 33603 "gram.c" /* yacc.c:1646 */ break; case 1062: -#line 7177 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7177 "gram.y" { (yyval.ival) = ACL_OBJECT_RELATION; } -#line 33609 "gram.c" /* yacc.c:1646 */ break; case 1063: -#line 7178 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7178 "gram.y" { (yyval.ival) = ACL_OBJECT_FUNCTION; } -#line 33615 "gram.c" /* yacc.c:1646 */ break; case 1064: -#line 7179 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7179 "gram.y" { (yyval.ival) = ACL_OBJECT_SEQUENCE; } -#line 33621 "gram.c" /* yacc.c:1646 */ break; case 1065: -#line 7180 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7180 "gram.y" { (yyval.ival) = ACL_OBJECT_TYPE; } -#line 33627 "gram.c" /* yacc.c:1646 */ break; case 1066: -#line 7181 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7181 "gram.y" { (yyval.ival) = ACL_OBJECT_NAMESPACE; } -#line 33633 "gram.c" /* yacc.c:1646 */ break; case 1067: -#line 7196 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7196 "gram.y" { IndexStmt *n = makeNode(IndexStmt); - n->unique = (yyvsp[-12].boolean); - n->concurrent = (yyvsp[-10].boolean); - n->idxname = (yyvsp[-9].str); - n->relation = (yyvsp[-7].range); - n->accessMethod = (yyvsp[-6].str); - n->indexParams = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); - n->tableSpace = (yyvsp[-1].str); - n->whereClause = (yyvsp[0].node); + n->unique = (yyvsp[(2) - (14)].boolean); + n->concurrent = (yyvsp[(4) - (14)].boolean); + n->idxname = (yyvsp[(5) - (14)].str); + n->relation = (yyvsp[(7) - (14)].range); + n->accessMethod = (yyvsp[(8) - (14)].str); + n->indexParams = (yyvsp[(10) - (14)].list); + n->options = (yyvsp[(12) - (14)].list); + n->tableSpace = (yyvsp[(13) - (14)].str); + n->whereClause = (yyvsp[(14) - (14)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; @@ -33657,22 +35045,22 @@ yyreduce: n->if_not_exists = false; (yyval.node) = (Node *)n; } -#line 33661 "gram.c" /* yacc.c:1646 */ break; case 1068: -#line 7222 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7222 "gram.y" { IndexStmt *n = makeNode(IndexStmt); - n->unique = (yyvsp[-15].boolean); - n->concurrent = (yyvsp[-13].boolean); - n->idxname = (yyvsp[-9].str); - n->relation = (yyvsp[-7].range); - n->accessMethod = (yyvsp[-6].str); - n->indexParams = (yyvsp[-4].list); - n->options = (yyvsp[-2].list); - n->tableSpace = (yyvsp[-1].str); - n->whereClause = (yyvsp[0].node); + n->unique = (yyvsp[(2) - (17)].boolean); + n->concurrent = (yyvsp[(4) - (17)].boolean); + n->idxname = (yyvsp[(8) - (17)].str); + n->relation = (yyvsp[(10) - (17)].range); + n->accessMethod = (yyvsp[(11) - (17)].str); + n->indexParams = (yyvsp[(13) - (17)].list); + n->options = (yyvsp[(15) - (17)].list); + n->tableSpace = (yyvsp[(16) - (17)].str); + n->whereClause = (yyvsp[(17) - (17)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; @@ -33685,5016 +35073,5016 @@ yyreduce: n->if_not_exists = true; (yyval.node) = (Node *)n; } -#line 33689 "gram.c" /* yacc.c:1646 */ break; case 1069: -#line 7248 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7248 "gram.y" { (yyval.boolean) = TRUE; } -#line 33695 "gram.c" /* yacc.c:1646 */ break; case 1070: -#line 7249 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7249 "gram.y" { (yyval.boolean) = FALSE; } -#line 33701 "gram.c" /* yacc.c:1646 */ break; case 1071: -#line 7253 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7253 "gram.y" { (yyval.boolean) = TRUE; } -#line 33707 "gram.c" /* yacc.c:1646 */ break; case 1072: -#line 7254 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7254 "gram.y" { (yyval.boolean) = FALSE; } -#line 33713 "gram.c" /* yacc.c:1646 */ break; case 1073: -#line 7258 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 33719 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7258 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1074: -#line 7259 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7259 "gram.y" { (yyval.str) = NULL; } -#line 33725 "gram.c" /* yacc.c:1646 */ break; case 1075: -#line 7263 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 33731 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7263 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 1076: -#line 7264 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7264 "gram.y" { (yyval.str) = DEFAULT_INDEX_TYPE; } -#line 33737 "gram.c" /* yacc.c:1646 */ break; case 1077: -#line 7267 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].ielem)); } -#line 33743 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7267 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); } break; case 1078: -#line 7268 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].ielem)); } -#line 33749 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7268 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); } break; case 1079: -#line 7277 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7277 "gram.y" { (yyval.ielem) = makeNode(IndexElem); - (yyval.ielem)->name = (yyvsp[-4].str); + (yyval.ielem)->name = (yyvsp[(1) - (5)].str); (yyval.ielem)->expr = NULL; (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[-3].list); - (yyval.ielem)->opclass = (yyvsp[-2].list); - (yyval.ielem)->ordering = (yyvsp[-1].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[0].ival); + (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); + (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); + (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); } -#line 33764 "gram.c" /* yacc.c:1646 */ break; case 1080: -#line 7288 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7288 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[-4].node); + (yyval.ielem)->expr = (yyvsp[(1) - (5)].node); (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[-3].list); - (yyval.ielem)->opclass = (yyvsp[-2].list); - (yyval.ielem)->ordering = (yyvsp[-1].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[0].ival); + (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); + (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); + (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); } -#line 33779 "gram.c" /* yacc.c:1646 */ break; case 1081: -#line 7299 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7299 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[-5].node); + (yyval.ielem)->expr = (yyvsp[(2) - (7)].node); (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[-3].list); - (yyval.ielem)->opclass = (yyvsp[-2].list); - (yyval.ielem)->ordering = (yyvsp[-1].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[0].ival); + (yyval.ielem)->collation = (yyvsp[(4) - (7)].list); + (yyval.ielem)->opclass = (yyvsp[(5) - (7)].list); + (yyval.ielem)->ordering = (yyvsp[(6) - (7)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(7) - (7)].ival); } -#line 33794 "gram.c" /* yacc.c:1646 */ break; case 1082: -#line 7311 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 33800 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7311 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 1083: -#line 7312 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7312 "gram.y" { (yyval.list) = NIL; } -#line 33806 "gram.c" /* yacc.c:1646 */ break; case 1084: -#line 7315 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 33812 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7315 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1085: -#line 7316 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7316 "gram.y" { (yyval.list) = NIL; } -#line 33818 "gram.c" /* yacc.c:1646 */ break; case 1086: -#line 7319 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7319 "gram.y" { (yyval.ival) = SORTBY_ASC; } -#line 33824 "gram.c" /* yacc.c:1646 */ break; case 1087: -#line 7320 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7320 "gram.y" { (yyval.ival) = SORTBY_DESC; } -#line 33830 "gram.c" /* yacc.c:1646 */ break; case 1088: -#line 7321 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7321 "gram.y" { (yyval.ival) = SORTBY_DEFAULT; } -#line 33836 "gram.c" /* yacc.c:1646 */ break; case 1089: -#line 7324 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7324 "gram.y" { (yyval.ival) = SORTBY_NULLS_FIRST; } -#line 33842 "gram.c" /* yacc.c:1646 */ break; case 1090: -#line 7325 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7325 "gram.y" { (yyval.ival) = SORTBY_NULLS_LAST; } -#line 33848 "gram.c" /* yacc.c:1646 */ break; case 1091: -#line 7326 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7326 "gram.y" { (yyval.ival) = SORTBY_NULLS_DEFAULT; } -#line 33854 "gram.c" /* yacc.c:1646 */ break; case 1092: -#line 7344 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7344 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[-7].boolean); - n->funcname = (yyvsp[-5].list); - n->parameters = (yyvsp[-4].list); - n->returnType = (yyvsp[-2].typnam); - n->options = (yyvsp[-1].list); - n->withClause = (yyvsp[0].list); + n->replace = (yyvsp[(2) - (9)].boolean); + n->funcname = (yyvsp[(4) - (9)].list); + n->parameters = (yyvsp[(5) - (9)].list); + n->returnType = (yyvsp[(7) - (9)].typnam); + n->options = (yyvsp[(8) - (9)].list); + n->withClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; } -#line 33869 "gram.c" /* yacc.c:1646 */ break; case 1093: -#line 7356 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7356 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[-10].boolean); - n->funcname = (yyvsp[-8].list); - n->parameters = mergeTableFuncParameters((yyvsp[-7].list), (yyvsp[-3].list)); - n->returnType = TableFuncTypeName((yyvsp[-3].list)); - n->returnType->location = (yylsp[-5]); - n->options = (yyvsp[-1].list); - n->withClause = (yyvsp[0].list); + n->replace = (yyvsp[(2) - (12)].boolean); + n->funcname = (yyvsp[(4) - (12)].list); + n->parameters = mergeTableFuncParameters((yyvsp[(5) - (12)].list), (yyvsp[(9) - (12)].list)); + n->returnType = TableFuncTypeName((yyvsp[(9) - (12)].list)); + n->returnType->location = (yylsp[(7) - (12)]); + n->options = (yyvsp[(11) - (12)].list); + n->withClause = (yyvsp[(12) - (12)].list); (yyval.node) = (Node *)n; } -#line 33885 "gram.c" /* yacc.c:1646 */ break; case 1094: -#line 7369 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7369 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[-5].boolean); - n->funcname = (yyvsp[-3].list); - n->parameters = (yyvsp[-2].list); + n->replace = (yyvsp[(2) - (7)].boolean); + n->funcname = (yyvsp[(4) - (7)].list); + n->parameters = (yyvsp[(5) - (7)].list); n->returnType = NULL; - n->options = (yyvsp[-1].list); - n->withClause = (yyvsp[0].list); + n->options = (yyvsp[(6) - (7)].list); + n->withClause = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 33900 "gram.c" /* yacc.c:1646 */ break; case 1095: -#line 7382 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7382 "gram.y" { (yyval.boolean) = TRUE; } -#line 33906 "gram.c" /* yacc.c:1646 */ break; case 1096: -#line 7383 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7383 "gram.y" { (yyval.boolean) = FALSE; } -#line 33912 "gram.c" /* yacc.c:1646 */ break; case 1097: -#line 7386 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 33918 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7386 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 1098: -#line 7387 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7387 "gram.y" { (yyval.list) = NIL; } -#line 33924 "gram.c" /* yacc.c:1646 */ break; case 1099: -#line 7391 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].fun_param)); } -#line 33930 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7391 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } break; case 1100: -#line 7392 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } -#line 33936 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7392 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } break; case 1101: -#line 7396 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].objwithargs)); } -#line 33942 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7396 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); } break; case 1102: -#line 7398 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].objwithargs)); } -#line 33948 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7398 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); } break; case 1103: -#line 7403 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7403 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); - n->objname = (yyvsp[-1].list); - n->objargs = extractArgTypes((yyvsp[0].list)); + n->objname = (yyvsp[(1) - (2)].list); + n->objargs = extractArgTypes((yyvsp[(2) - (2)].list)); (yyval.objwithargs) = n; } -#line 33959 "gram.c" /* yacc.c:1646 */ break; case 1104: -#line 7415 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7415 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); - n->objname = list_make1(makeString(pstrdup((yyvsp[0].keyword)))); + n->objname = list_make1(makeString(pstrdup((yyvsp[(1) - (1)].keyword)))); n->args_unspecified = true; (yyval.objwithargs) = n; } -#line 33970 "gram.c" /* yacc.c:1646 */ break; case 1105: -#line 7422 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7422 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); - n->objname = list_make1(makeString((yyvsp[0].str))); + n->objname = list_make1(makeString((yyvsp[(1) - (1)].str))); n->args_unspecified = true; (yyval.objwithargs) = n; } -#line 33981 "gram.c" /* yacc.c:1646 */ break; case 1106: -#line 7429 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7429 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); - n->objname = check_func_name(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)), + n->objname = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); n->args_unspecified = true; (yyval.objwithargs) = n; } -#line 33993 "gram.c" /* yacc.c:1646 */ break; case 1107: -#line 7443 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 33999 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7443 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 1108: -#line 7444 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7444 "gram.y" { (yyval.list) = NIL; } -#line 34005 "gram.c" /* yacc.c:1646 */ break; case 1109: -#line 7448 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].fun_param)); } -#line 34011 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7448 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } break; case 1110: -#line 7450 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } -#line 34017 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7450 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } break; case 1111: -#line 7465 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7465 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-1].str); - n->argType = (yyvsp[0].typnam); - n->mode = (yyvsp[-2].fun_param_mode); + n->name = (yyvsp[(2) - (3)].str); + n->argType = (yyvsp[(3) - (3)].typnam); + n->mode = (yyvsp[(1) - (3)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; } -#line 34030 "gram.c" /* yacc.c:1646 */ break; case 1112: -#line 7474 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7474 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-2].str); - n->argType = (yyvsp[0].typnam); - n->mode = (yyvsp[-1].fun_param_mode); + n->name = (yyvsp[(1) - (3)].str); + n->argType = (yyvsp[(3) - (3)].typnam); + n->mode = (yyvsp[(2) - (3)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; } -#line 34043 "gram.c" /* yacc.c:1646 */ break; case 1113: -#line 7483 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7483 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-1].str); - n->argType = (yyvsp[0].typnam); + n->name = (yyvsp[(1) - (2)].str); + n->argType = (yyvsp[(2) - (2)].typnam); n->mode = FUNC_PARAM_IN; n->defexpr = NULL; (yyval.fun_param) = n; } -#line 34056 "gram.c" /* yacc.c:1646 */ break; case 1114: -#line 7492 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7492 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; - n->argType = (yyvsp[0].typnam); - n->mode = (yyvsp[-1].fun_param_mode); + n->argType = (yyvsp[(2) - (2)].typnam); + n->mode = (yyvsp[(1) - (2)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; } -#line 34069 "gram.c" /* yacc.c:1646 */ break; case 1115: -#line 7501 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7501 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; - n->argType = (yyvsp[0].typnam); + n->argType = (yyvsp[(1) - (1)].typnam); n->mode = FUNC_PARAM_IN; n->defexpr = NULL; (yyval.fun_param) = n; } -#line 34082 "gram.c" /* yacc.c:1646 */ break; case 1116: -#line 7512 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7512 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_IN; } -#line 34088 "gram.c" /* yacc.c:1646 */ break; case 1117: -#line 7513 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7513 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_OUT; } -#line 34094 "gram.c" /* yacc.c:1646 */ break; case 1118: -#line 7514 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7514 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; } -#line 34100 "gram.c" /* yacc.c:1646 */ break; case 1119: -#line 7515 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7515 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; } -#line 34106 "gram.c" /* yacc.c:1646 */ break; case 1120: -#line 7516 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7516 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_VARIADIC; } -#line 34112 "gram.c" /* yacc.c:1646 */ break; case 1122: -#line 7527 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7527 "gram.y" { /* We can catch over-specified results here if we want to, * but for now better to silently swallow typmod, etc. * - thomas 2000-03-22 */ - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 34124 "gram.c" /* yacc.c:1646 */ break; case 1123: -#line 7541 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 34130 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7541 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1124: -#line 7543 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7543 "gram.y" { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (4)].str)), (yyvsp[(2) - (4)].list))); (yyval.typnam)->pct_type = true; - (yyval.typnam)->location = (yylsp[-3]); + (yyval.typnam)->location = (yylsp[(1) - (4)]); } -#line 34140 "gram.c" /* yacc.c:1646 */ break; case 1125: -#line 7549 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7549 "gram.y" { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(2) - (5)].str)), (yyvsp[(3) - (5)].list))); (yyval.typnam)->pct_type = true; (yyval.typnam)->setof = TRUE; - (yyval.typnam)->location = (yylsp[-3]); + (yyval.typnam)->location = (yylsp[(2) - (5)]); } -#line 34151 "gram.c" /* yacc.c:1646 */ break; case 1126: -#line 7559 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7559 "gram.y" { - (yyval.fun_param) = (yyvsp[0].fun_param); + (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); } -#line 34159 "gram.c" /* yacc.c:1646 */ break; case 1127: -#line 7563 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7563 "gram.y" { - (yyval.fun_param) = (yyvsp[-2].fun_param); - (yyval.fun_param)->defexpr = (yyvsp[0].node); + (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); + (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); } -#line 34168 "gram.c" /* yacc.c:1646 */ break; case 1128: -#line 7568 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7568 "gram.y" { - (yyval.fun_param) = (yyvsp[-2].fun_param); - (yyval.fun_param)->defexpr = (yyvsp[0].node); + (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); + (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); } -#line 34177 "gram.c" /* yacc.c:1646 */ break; case 1129: -#line 7576 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7576 "gram.y" { - if (!((yyvsp[0].fun_param)->mode == FUNC_PARAM_IN || - (yyvsp[0].fun_param)->mode == FUNC_PARAM_VARIADIC)) + if (!((yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_IN || + (yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_VARIADIC)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("aggregates cannot have output arguments"), - parser_errposition((yylsp[0])))); - (yyval.fun_param) = (yyvsp[0].fun_param); + parser_errposition((yylsp[(1) - (1)])))); + (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); } -#line 34191 "gram.c" /* yacc.c:1646 */ break; case 1130: -#line 7617 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7617 "gram.y" { (yyval.list) = list_make2(NIL, makeInteger(-1)); } -#line 34199 "gram.c" /* yacc.c:1646 */ break; case 1131: -#line 7621 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7621 "gram.y" { - (yyval.list) = list_make2((yyvsp[-1].list), makeInteger(-1)); + (yyval.list) = list_make2((yyvsp[(2) - (3)].list), makeInteger(-1)); } -#line 34207 "gram.c" /* yacc.c:1646 */ break; case 1132: -#line 7625 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7625 "gram.y" { - (yyval.list) = list_make2((yyvsp[-1].list), makeInteger(0)); + (yyval.list) = list_make2((yyvsp[(4) - (5)].list), makeInteger(0)); } -#line 34215 "gram.c" /* yacc.c:1646 */ break; case 1133: -#line 7629 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7629 "gram.y" { /* this is the only case requiring consistency checking */ - (yyval.list) = makeOrderedSetArgs((yyvsp[-4].list), (yyvsp[-1].list), yyscanner); + (yyval.list) = makeOrderedSetArgs((yyvsp[(2) - (6)].list), (yyvsp[(5) - (6)].list), yyscanner); } -#line 34224 "gram.c" /* yacc.c:1646 */ break; case 1134: -#line 7636 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].fun_param)); } -#line 34230 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7636 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } break; case 1135: -#line 7637 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); } -#line 34236 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7637 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } break; case 1136: -#line 7642 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7642 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); - n->objname = (yyvsp[-1].list); - n->objargs = extractAggrArgTypes((yyvsp[0].list)); + n->objname = (yyvsp[(1) - (2)].list); + n->objargs = extractAggrArgTypes((yyvsp[(2) - (2)].list)); (yyval.objwithargs) = n; } -#line 34247 "gram.c" /* yacc.c:1646 */ break; case 1137: -#line 7651 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].objwithargs)); } -#line 34253 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7651 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); } break; case 1138: -#line 7653 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].objwithargs)); } -#line 34259 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7653 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); } break; case 1139: -#line 7658 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 34265 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7658 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 1140: -#line 7659 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 34271 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7659 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 1141: -#line 7667 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7667 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(FALSE), (yylsp[-3])); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(FALSE), (yylsp[(1) - (4)])); } -#line 34279 "gram.c" /* yacc.c:1646 */ break; case 1142: -#line 7671 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7671 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[-4])); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[(1) - (5)])); } -#line 34287 "gram.c" /* yacc.c:1646 */ break; case 1143: -#line 7675 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7675 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 34295 "gram.c" /* yacc.c:1646 */ break; case 1144: -#line 7679 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7679 "gram.y" { - (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("immutable"), (yylsp[0])); + (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("immutable"), (yylsp[(1) - (1)])); } -#line 34303 "gram.c" /* yacc.c:1646 */ break; case 1145: -#line 7683 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7683 "gram.y" { - (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("stable"), (yylsp[0])); + (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("stable"), (yylsp[(1) - (1)])); } -#line 34311 "gram.c" /* yacc.c:1646 */ break; case 1146: -#line 7687 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7687 "gram.y" { - (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("volatile"), (yylsp[0])); + (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("volatile"), (yylsp[(1) - (1)])); } -#line 34319 "gram.c" /* yacc.c:1646 */ break; case 1147: -#line 7691 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7691 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[-2])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[(1) - (3)])); } -#line 34327 "gram.c" /* yacc.c:1646 */ break; case 1148: -#line 7695 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7695 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[-2])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[(1) - (3)])); } -#line 34335 "gram.c" /* yacc.c:1646 */ break; case 1149: -#line 7699 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7699 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[-1])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[(1) - (2)])); } -#line 34343 "gram.c" /* yacc.c:1646 */ break; case 1150: -#line 7703 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7703 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[-1])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); } -#line 34351 "gram.c" /* yacc.c:1646 */ break; case 1151: -#line 7707 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7707 "gram.y" { - (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 34359 "gram.c" /* yacc.c:1646 */ break; case 1152: -#line 7711 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7711 "gram.y" { - (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(FALSE), (yylsp[-1])); + (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); } -#line 34367 "gram.c" /* yacc.c:1646 */ break; case 1153: -#line 7715 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7715 "gram.y" { - (yyval.defelt) = makeDefElem("cost", (Node *)(yyvsp[0].value), (yylsp[-1])); + (yyval.defelt) = makeDefElem("cost", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 34375 "gram.c" /* yacc.c:1646 */ break; case 1154: -#line 7719 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7719 "gram.y" { - (yyval.defelt) = makeDefElem("rows", (Node *)(yyvsp[0].value), (yylsp[-1])); + (yyval.defelt) = makeDefElem("rows", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); } -#line 34383 "gram.c" /* yacc.c:1646 */ break; case 1155: -#line 7723 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7723 "gram.y" { /* we abuse the normal content of a DefElem here */ - (yyval.defelt) = makeDefElem("set", (Node *)(yyvsp[0].vsetstmt), (yylsp[0])); + (yyval.defelt) = makeDefElem("set", (Node *)(yyvsp[(1) - (1)].vsetstmt), (yylsp[(1) - (1)])); } -#line 34392 "gram.c" /* yacc.c:1646 */ break; case 1156: -#line 7728 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7728 "gram.y" { - (yyval.defelt) = makeDefElem("parallel", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("parallel", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 34400 "gram.c" /* yacc.c:1646 */ break; case 1157: -#line 7735 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7735 "gram.y" { - (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[0].list), (yylsp[-1])); + (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 34408 "gram.c" /* yacc.c:1646 */ break; case 1158: -#line 7739 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7739 "gram.y" { - (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 34416 "gram.c" /* yacc.c:1646 */ break; case 1159: -#line 7743 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7743 "gram.y" { - (yyval.defelt) = makeDefElem("transform", (Node *)(yyvsp[0].list), (yylsp[-1])); + (yyval.defelt) = makeDefElem("transform", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); } -#line 34424 "gram.c" /* yacc.c:1646 */ break; case 1160: -#line 7747 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7747 "gram.y" { - (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(TRUE), (yylsp[0])); + (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); } -#line 34432 "gram.c" /* yacc.c:1646 */ break; case 1161: -#line 7751 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7751 "gram.y" { - (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt) = (yyvsp[(1) - (1)].defelt); } -#line 34440 "gram.c" /* yacc.c:1646 */ break; case 1162: -#line 7756 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 34446 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7756 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 1163: -#line 7758 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7758 "gram.y" { - (yyval.list) = list_make2(makeString((yyvsp[-2].str)), makeString((yyvsp[0].str))); + (yyval.list) = list_make2(makeString((yyvsp[(1) - (3)].str)), makeString((yyvsp[(3) - (3)].str))); } -#line 34454 "gram.c" /* yacc.c:1646 */ break; case 1164: -#line 7764 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].typnam)); } -#line 34460 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7764 "gram.y" + { (yyval.list) = list_make1((yyvsp[(3) - (3)].typnam)); } break; case 1165: -#line 7765 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-4].list), (yyvsp[0].typnam)); } -#line 34466 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7765 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (5)].list), (yyvsp[(5) - (5)].typnam)); } break; case 1166: -#line 7769 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 34472 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7769 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 1167: -#line 7770 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7770 "gram.y" { (yyval.list) = NIL; } -#line 34478 "gram.c" /* yacc.c:1646 */ break; case 1168: -#line 7774 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7774 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); - n->name = (yyvsp[-1].str); - n->argType = (yyvsp[0].typnam); + n->name = (yyvsp[(1) - (2)].str); + n->argType = (yyvsp[(2) - (2)].typnam); n->mode = FUNC_PARAM_TABLE; n->defexpr = NULL; (yyval.fun_param) = n; } -#line 34491 "gram.c" /* yacc.c:1646 */ break; case 1169: -#line 7786 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7786 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].fun_param)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); } -#line 34499 "gram.c" /* yacc.c:1646 */ break; case 1170: -#line 7790 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7790 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].fun_param)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); } -#line 34507 "gram.c" /* yacc.c:1646 */ break; case 1171: -#line 7805 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7805 "gram.y" { AlterFunctionStmt *n = makeNode(AlterFunctionStmt); - n->func = (yyvsp[-2].objwithargs); - n->actions = (yyvsp[-1].list); + n->func = (yyvsp[(3) - (5)].objwithargs); + n->actions = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; } -#line 34518 "gram.c" /* yacc.c:1646 */ break; case 1172: -#line 7815 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 34524 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7815 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 1173: -#line 7816 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 34530 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7816 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 1176: -#line 7838 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7838 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 34544 "gram.c" /* yacc.c:1646 */ break; case 1177: -#line 7848 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7848 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 34558 "gram.c" /* yacc.c:1646 */ break; case 1178: -#line 7861 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7861 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 34572 "gram.c" /* yacc.c:1646 */ break; case 1179: -#line 7871 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7871 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 34586 "gram.c" /* yacc.c:1646 */ break; case 1180: -#line 7884 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7884 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 34600 "gram.c" /* yacc.c:1646 */ break; case 1181: -#line 7894 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7894 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; - n->objects = (yyvsp[-1].list); - n->behavior = (yyvsp[0].dbehavior); + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; } -#line 34614 "gram.c" /* yacc.c:1646 */ break; case 1182: -#line 7907 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7907 "gram.y" { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing argument"), errhint("Use NONE to denote the missing argument of a unary operator."), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(3) - (3)])))); } -#line 34626 "gram.c" /* yacc.c:1646 */ break; case 1183: -#line 7915 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-3].typnam), (yyvsp[-1].typnam)); } -#line 34632 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7915 "gram.y" + { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), (yyvsp[(4) - (5)].typnam)); } break; case 1184: -#line 7917 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2(NULL, (yyvsp[-1].typnam)); } -#line 34638 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7917 "gram.y" + { (yyval.list) = list_make2(NULL, (yyvsp[(4) - (5)].typnam)); } break; case 1185: -#line 7919 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-3].typnam), NULL); } -#line 34644 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7919 "gram.y" + { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), NULL); } break; case 1186: -#line 7924 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 34650 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7924 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 1187: -#line 7926 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lcons(makeString((yyvsp[-2].str)), (yyvsp[0].list)); } -#line 34656 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7926 "gram.y" + { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); } break; case 1188: -#line 7930 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].objwithargs)); } -#line 34662 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7930 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); } break; case 1189: -#line 7932 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].objwithargs)); } -#line 34668 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7932 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); } break; case 1190: -#line 7937 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7937 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); - n->objname = (yyvsp[-1].list); - n->objargs = (yyvsp[0].list); + n->objname = (yyvsp[(1) - (2)].list); + n->objargs = (yyvsp[(2) - (2)].list); (yyval.objwithargs) = n; } -#line 34679 "gram.c" /* yacc.c:1646 */ break; case 1191: -#line 7955 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7955 "gram.y" { DoStmt *n = makeNode(DoStmt); - n->args = (yyvsp[0].list); + n->args = (yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; } -#line 34689 "gram.c" /* yacc.c:1646 */ break; case 1192: -#line 7963 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 34695 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7963 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 1193: -#line 7964 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 34701 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7964 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 1194: -#line 7969 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7969 "gram.y" { - (yyval.defelt) = makeDefElem("as", (Node *)makeString((yyvsp[0].str)), (yylsp[0])); + (yyval.defelt) = makeDefElem("as", (Node *)makeString((yyvsp[(1) - (1)].str)), (yylsp[(1) - (1)])); } -#line 34709 "gram.c" /* yacc.c:1646 */ break; case 1195: -#line 7973 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7973 "gram.y" { - (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[0].str)), (yylsp[-1])); + (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); } -#line 34717 "gram.c" /* yacc.c:1646 */ break; case 1196: -#line 7986 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7986 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); - n->sourcetype = (yyvsp[-7].typnam); - n->targettype = (yyvsp[-5].typnam); - n->func = (yyvsp[-1].objwithargs); - n->context = (CoercionContext) (yyvsp[0].ival); + n->sourcetype = (yyvsp[(4) - (11)].typnam); + n->targettype = (yyvsp[(6) - (11)].typnam); + n->func = (yyvsp[(10) - (11)].objwithargs); + n->context = (CoercionContext) (yyvsp[(11) - (11)].ival); n->inout = false; (yyval.node) = (Node *)n; } -#line 34731 "gram.c" /* yacc.c:1646 */ break; case 1197: -#line 7997 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 7997 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); - n->sourcetype = (yyvsp[-6].typnam); - n->targettype = (yyvsp[-4].typnam); + n->sourcetype = (yyvsp[(4) - (10)].typnam); + n->targettype = (yyvsp[(6) - (10)].typnam); n->func = NULL; - n->context = (CoercionContext) (yyvsp[0].ival); + n->context = (CoercionContext) (yyvsp[(10) - (10)].ival); n->inout = false; (yyval.node) = (Node *)n; } -#line 34745 "gram.c" /* yacc.c:1646 */ break; case 1198: -#line 8008 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8008 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); - n->sourcetype = (yyvsp[-6].typnam); - n->targettype = (yyvsp[-4].typnam); + n->sourcetype = (yyvsp[(4) - (10)].typnam); + n->targettype = (yyvsp[(6) - (10)].typnam); n->func = NULL; - n->context = (CoercionContext) (yyvsp[0].ival); + n->context = (CoercionContext) (yyvsp[(10) - (10)].ival); n->inout = true; (yyval.node) = (Node *)n; } -#line 34759 "gram.c" /* yacc.c:1646 */ break; case 1199: -#line 8019 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8019 "gram.y" { (yyval.ival) = COERCION_IMPLICIT; } -#line 34765 "gram.c" /* yacc.c:1646 */ break; case 1200: -#line 8020 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8020 "gram.y" { (yyval.ival) = COERCION_ASSIGNMENT; } -#line 34771 "gram.c" /* yacc.c:1646 */ break; case 1201: -#line 8021 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8021 "gram.y" { (yyval.ival) = COERCION_EXPLICIT; } -#line 34777 "gram.c" /* yacc.c:1646 */ break; case 1202: -#line 8026 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8026 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_CAST; - n->objects = list_make1(list_make2((yyvsp[-4].typnam), (yyvsp[-2].typnam))); - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = (yyvsp[-6].boolean); + n->objects = list_make1(list_make2((yyvsp[(5) - (9)].typnam), (yyvsp[(7) - (9)].typnam))); + n->behavior = (yyvsp[(9) - (9)].dbehavior); + n->missing_ok = (yyvsp[(3) - (9)].boolean); n->concurrent = false; (yyval.node) = (Node *)n; } -#line 34791 "gram.c" /* yacc.c:1646 */ break; case 1203: -#line 8037 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8037 "gram.y" { (yyval.boolean) = TRUE; } -#line 34797 "gram.c" /* yacc.c:1646 */ break; case 1204: -#line 8038 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8038 "gram.y" { (yyval.boolean) = FALSE; } -#line 34803 "gram.c" /* yacc.c:1646 */ break; case 1205: -#line 8049 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8049 "gram.y" { CreateTransformStmt *n = makeNode(CreateTransformStmt); - n->replace = (yyvsp[-8].boolean); - n->type_name = (yyvsp[-5].typnam); - n->lang = (yyvsp[-3].str); - n->fromsql = linitial((yyvsp[-1].list)); - n->tosql = lsecond((yyvsp[-1].list)); + n->replace = (yyvsp[(2) - (10)].boolean); + n->type_name = (yyvsp[(5) - (10)].typnam); + n->lang = (yyvsp[(7) - (10)].str); + n->fromsql = linitial((yyvsp[(9) - (10)].list)); + n->tosql = lsecond((yyvsp[(9) - (10)].list)); (yyval.node) = (Node *)n; } -#line 34817 "gram.c" /* yacc.c:1646 */ break; case 1206: -#line 8061 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8061 "gram.y" { - (yyval.list) = list_make2((yyvsp[-6].objwithargs), (yyvsp[0].objwithargs)); + (yyval.list) = list_make2((yyvsp[(5) - (11)].objwithargs), (yyvsp[(11) - (11)].objwithargs)); } -#line 34825 "gram.c" /* yacc.c:1646 */ break; case 1207: -#line 8065 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8065 "gram.y" { - (yyval.list) = list_make2((yyvsp[0].objwithargs), (yyvsp[-6].objwithargs)); + (yyval.list) = list_make2((yyvsp[(11) - (11)].objwithargs), (yyvsp[(5) - (11)].objwithargs)); } -#line 34833 "gram.c" /* yacc.c:1646 */ break; case 1208: -#line 8069 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8069 "gram.y" { - (yyval.list) = list_make2((yyvsp[0].objwithargs), NULL); + (yyval.list) = list_make2((yyvsp[(5) - (5)].objwithargs), NULL); } -#line 34841 "gram.c" /* yacc.c:1646 */ break; case 1209: -#line 8073 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8073 "gram.y" { - (yyval.list) = list_make2(NULL, (yyvsp[0].objwithargs)); + (yyval.list) = list_make2(NULL, (yyvsp[(5) - (5)].objwithargs)); } -#line 34849 "gram.c" /* yacc.c:1646 */ break; case 1210: -#line 8080 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8080 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TRANSFORM; - n->objects = list_make1(list_make2((yyvsp[-3].typnam), makeString((yyvsp[-1].str)))); - n->behavior = (yyvsp[0].dbehavior); - n->missing_ok = (yyvsp[-5].boolean); + n->objects = list_make1(list_make2((yyvsp[(5) - (8)].typnam), makeString((yyvsp[(7) - (8)].str)))); + n->behavior = (yyvsp[(8) - (8)].dbehavior); + n->missing_ok = (yyvsp[(3) - (8)].boolean); (yyval.node) = (Node *)n; } -#line 34862 "gram.c" /* yacc.c:1646 */ break; case 1211: -#line 8100 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8100 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->relation = (yyvsp[0].range); + n->kind = (yyvsp[(2) - (3)].ival); + n->relation = (yyvsp[(3) - (3)].range); n->name = NULL; n->options = 0; (yyval.node) = (Node *)n; } -#line 34875 "gram.c" /* yacc.c:1646 */ break; case 1212: -#line 8109 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8109 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->name = (yyvsp[0].str); + n->kind = (yyvsp[(2) - (3)].ival); + n->name = (yyvsp[(3) - (3)].str); n->relation = NULL; n->options = 0; (yyval.node) = (Node *)n; } -#line 34888 "gram.c" /* yacc.c:1646 */ break; case 1213: -#line 8118 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8118 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->relation = (yyvsp[0].range); + n->kind = (yyvsp[(5) - (6)].ival); + n->relation = (yyvsp[(6) - (6)].range); n->name = NULL; - n->options = (yyvsp[-3].ival); + n->options = (yyvsp[(3) - (6)].ival); (yyval.node) = (Node *)n; } -#line 34901 "gram.c" /* yacc.c:1646 */ break; case 1214: -#line 8127 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8127 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[-1].ival); - n->name = (yyvsp[0].str); + n->kind = (yyvsp[(5) - (6)].ival); + n->name = (yyvsp[(6) - (6)].str); n->relation = NULL; - n->options = (yyvsp[-3].ival); + n->options = (yyvsp[(3) - (6)].ival); (yyval.node) = (Node *)n; } -#line 34914 "gram.c" /* yacc.c:1646 */ break; case 1215: -#line 8137 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8137 "gram.y" { (yyval.ival) = REINDEX_OBJECT_INDEX; } -#line 34920 "gram.c" /* yacc.c:1646 */ break; case 1216: -#line 8138 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8138 "gram.y" { (yyval.ival) = REINDEX_OBJECT_TABLE; } -#line 34926 "gram.c" /* yacc.c:1646 */ break; case 1217: -#line 8141 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8141 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SCHEMA; } -#line 34932 "gram.c" /* yacc.c:1646 */ break; case 1218: -#line 8142 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8142 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SYSTEM; } -#line 34938 "gram.c" /* yacc.c:1646 */ break; case 1219: -#line 8143 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8143 "gram.y" { (yyval.ival) = REINDEX_OBJECT_DATABASE; } -#line 34944 "gram.c" /* yacc.c:1646 */ break; case 1220: -#line 8146 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 34950 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8146 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; case 1221: -#line 8147 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } -#line 34956 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8147 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); } break; case 1222: -#line 8150 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8150 "gram.y" { (yyval.ival) = REINDEXOPT_VERBOSE; } -#line 34962 "gram.c" /* yacc.c:1646 */ break; case 1223: -#line 8161 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8161 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); - n->tablespacename = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->tablespacename = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); n->isReset = FALSE; (yyval.node) = (Node *)n; } -#line 34975 "gram.c" /* yacc.c:1646 */ break; case 1224: -#line 8170 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8170 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); - n->tablespacename = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->tablespacename = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); n->isReset = TRUE; (yyval.node) = (Node *)n; } -#line 34988 "gram.c" /* yacc.c:1646 */ break; case 1225: -#line 8187 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8187 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_AGGREGATE; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35001 "gram.c" /* yacc.c:1646 */ break; case 1226: -#line 8196 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8196 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLLATION; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35014 "gram.c" /* yacc.c:1646 */ break; case 1227: -#line 8205 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8205 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_CONVERSION; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35027 "gram.c" /* yacc.c:1646 */ break; case 1228: -#line 8214 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8214 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DATABASE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35040 "gram.c" /* yacc.c:1646 */ break; case 1229: -#line 8223 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8223 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMAIN; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35053 "gram.c" /* yacc.c:1646 */ break; case 1230: -#line 8232 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8232 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMCONSTRAINT; - n->object = (Node *) (yyvsp[-5].list); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (8)].list); + n->subname = (yyvsp[(6) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *)n; } -#line 35066 "gram.c" /* yacc.c:1646 */ break; case 1231: -#line 8241 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8241 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FDW; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(5) - (8)].str)); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35079 "gram.c" /* yacc.c:1646 */ break; case 1232: -#line 8250 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8250 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35092 "gram.c" /* yacc.c:1646 */ break; case 1233: -#line 8259 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8259 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35105 "gram.c" /* yacc.c:1646 */ break; case 1234: -#line 8268 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8268 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_LANGUAGE; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35118 "gram.c" /* yacc.c:1646 */ break; case 1235: -#line 8277 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8277 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPCLASS; - n->object = (Node *) lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newname = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35131 "gram.c" /* yacc.c:1646 */ break; case 1236: -#line 8286 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8286 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPFAMILY; - n->object = (Node *) lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newname = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35144 "gram.c" /* yacc.c:1646 */ break; case 1237: -#line 8295 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8295 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->subname = (yyvsp[(3) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35158 "gram.c" /* yacc.c:1646 */ break; case 1238: -#line 8305 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8305 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(7) - (10)].range); + n->subname = (yyvsp[(5) - (10)].str); + n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35172 "gram.c" /* yacc.c:1646 */ break; case 1239: -#line 8315 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8315 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_PUBLICATION; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35185 "gram.c" /* yacc.c:1646 */ break; case 1240: -#line 8324 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8324 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SCHEMA; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35198 "gram.c" /* yacc.c:1646 */ break; case 1241: -#line 8333 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8333 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_SERVER; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35211 "gram.c" /* yacc.c:1646 */ break; case 1242: -#line 8342 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8342 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SUBSCRIPTION; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35224 "gram.c" /* yacc.c:1646 */ break; case 1243: -#line 8351 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8351 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35238 "gram.c" /* yacc.c:1646 */ break; case 1244: -#line 8361 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8361 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35252 "gram.c" /* yacc.c:1646 */ break; case 1245: -#line 8371 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8371 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35266 "gram.c" /* yacc.c:1646 */ break; case 1246: -#line 8381 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8381 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35280 "gram.c" /* yacc.c:1646 */ break; case 1247: -#line 8391 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8391 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35294 "gram.c" /* yacc.c:1646 */ break; case 1248: -#line 8401 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8401 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35308 "gram.c" /* yacc.c:1646 */ break; case 1249: -#line 8411 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8411 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(4) - (7)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35322 "gram.c" /* yacc.c:1646 */ break; case 1250: -#line 8421 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8421 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(6) - (9)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35336 "gram.c" /* yacc.c:1646 */ break; case 1251: -#line 8431 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8431 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35350 "gram.c" /* yacc.c:1646 */ break; case 1252: -#line 8441 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8441 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35364 "gram.c" /* yacc.c:1646 */ break; case 1253: -#line 8451 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8451 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(4) - (7)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35378 "gram.c" /* yacc.c:1646 */ break; case 1254: -#line 8461 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8461 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); + n->relation = (yyvsp[(6) - (9)].range); n->subname = NULL; - n->newname = (yyvsp[0].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35392 "gram.c" /* yacc.c:1646 */ break; case 1255: -#line 8471 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8471 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (8)].range); + n->subname = (yyvsp[(6) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35407 "gram.c" /* yacc.c:1646 */ break; case 1256: -#line 8482 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8482 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (10)].range); + n->subname = (yyvsp[(8) - (10)].str); + n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35422 "gram.c" /* yacc.c:1646 */ break; case 1257: -#line 8493 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8493 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_MATVIEW; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (9)].range); + n->subname = (yyvsp[(7) - (9)].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35437 "gram.c" /* yacc.c:1646 */ break; case 1258: -#line 8504 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8504 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_MATVIEW; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (11)].range); + n->subname = (yyvsp[(9) - (11)].str); + n->newname = (yyvsp[(11) - (11)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35452 "gram.c" /* yacc.c:1646 */ break; case 1259: -#line 8515 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8515 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (8)].range); + n->subname = (yyvsp[(6) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35466 "gram.c" /* yacc.c:1646 */ break; case 1260: -#line 8525 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8525 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (10)].range); + n->subname = (yyvsp[(8) - (10)].str); + n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35480 "gram.c" /* yacc.c:1646 */ break; case 1261: -#line 8535 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8535 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (9)].range); + n->subname = (yyvsp[(7) - (9)].str); + n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35495 "gram.c" /* yacc.c:1646 */ break; case 1262: -#line 8546 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8546 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-5].range); - n->subname = (yyvsp[-2].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (11)].range); + n->subname = (yyvsp[(9) - (11)].str); + n->newname = (yyvsp[(11) - (11)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35510 "gram.c" /* yacc.c:1646 */ break; case 1263: -#line 8557 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8557 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_RULE; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->subname = (yyvsp[(3) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35524 "gram.c" /* yacc.c:1646 */ break; case 1264: -#line 8567 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8567 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TRIGGER; - n->relation = (yyvsp[-3].range); - n->subname = (yyvsp[-5].str); - n->newname = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->subname = (yyvsp[(3) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35538 "gram.c" /* yacc.c:1646 */ break; case 1265: -#line 8577 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8577 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_EVENT_TRIGGER; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newname = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newname = (yyvsp[(7) - (7)].str); (yyval.node) = (Node *)n; } -#line 35550 "gram.c" /* yacc.c:1646 */ break; case 1266: -#line 8585 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8585 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35563 "gram.c" /* yacc.c:1646 */ break; case 1267: -#line 8594 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8594 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35576 "gram.c" /* yacc.c:1646 */ break; case 1268: -#line 8603 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8603 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLESPACE; - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (6)].str); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35589 "gram.c" /* yacc.c:1646 */ break; case 1269: -#line 8612 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8612 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_STATISTIC_EXT; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35602 "gram.c" /* yacc.c:1646 */ break; case 1270: -#line 8621 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8621 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSPARSER; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35615 "gram.c" /* yacc.c:1646 */ break; case 1271: -#line 8630 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8630 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSDICTIONARY; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35628 "gram.c" /* yacc.c:1646 */ break; case 1272: -#line 8639 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8639 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSTEMPLATE; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35641 "gram.c" /* yacc.c:1646 */ break; case 1273: -#line 8648 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8648 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSCONFIGURATION; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35654 "gram.c" /* yacc.c:1646 */ break; case 1274: -#line 8657 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8657 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TYPE; - n->object = (Node *) (yyvsp[-3].list); - n->newname = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35667 "gram.c" /* yacc.c:1646 */ break; case 1275: -#line 8666 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8666 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ATTRIBUTE; n->relationType = OBJECT_TYPE; - n->relation = makeRangeVarFromAnyName((yyvsp[-6].list), (yylsp[-6]), yyscanner); - n->subname = (yyvsp[-3].str); - n->newname = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->relation = makeRangeVarFromAnyName((yyvsp[(3) - (9)].list), (yylsp[(3) - (9)]), yyscanner); + n->subname = (yyvsp[(6) - (9)].str); + n->newname = (yyvsp[(8) - (9)].str); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35683 "gram.c" /* yacc.c:1646 */ break; case 1276: -#line 8679 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8679 "gram.y" { (yyval.ival) = COLUMN; } -#line 35689 "gram.c" /* yacc.c:1646 */ break; case 1277: -#line 8680 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8680 "gram.y" { (yyval.ival) = 0; } -#line 35695 "gram.c" /* yacc.c:1646 */ break; case 1278: -#line 8683 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8683 "gram.y" { (yyval.ival) = 1; } -#line 35701 "gram.c" /* yacc.c:1646 */ break; case 1279: -#line 8684 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8684 "gram.y" { (yyval.ival) = 0; } -#line 35707 "gram.c" /* yacc.c:1646 */ break; case 1280: -#line 8695 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8695 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[-4].objwithargs); - n->extname = makeString((yyvsp[0].str)); + n->object = (Node *) (yyvsp[(3) - (7)].objwithargs); + n->extname = makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 35719 "gram.c" /* yacc.c:1646 */ break; case 1281: -#line 8703 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8703 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_TRIGGER; - n->relation = (yyvsp[-4].range); - n->object = (Node *) list_make1(makeString((yyvsp[-6].str))); - n->extname = makeString((yyvsp[0].str)); + n->relation = (yyvsp[(5) - (9)].range); + n->object = (Node *) list_make1(makeString((yyvsp[(3) - (9)].str))); + n->extname = makeString((yyvsp[(9) - (9)].str)); (yyval.node) = (Node *)n; } -#line 35732 "gram.c" /* yacc.c:1646 */ break; case 1282: -#line 8712 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8712 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_MATVIEW; - n->relation = (yyvsp[-4].range); - n->extname = makeString((yyvsp[0].str)); + n->relation = (yyvsp[(4) - (8)].range); + n->extname = makeString((yyvsp[(8) - (8)].str)); (yyval.node) = (Node *)n; } -#line 35744 "gram.c" /* yacc.c:1646 */ break; case 1283: -#line 8720 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8720 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_INDEX; - n->relation = (yyvsp[-4].range); - n->extname = makeString((yyvsp[0].str)); + n->relation = (yyvsp[(3) - (7)].range); + n->extname = makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; } -#line 35756 "gram.c" /* yacc.c:1646 */ break; case 1284: -#line 8737 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8737 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_AGGREGATE; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35769 "gram.c" /* yacc.c:1646 */ break; case 1285: -#line 8746 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8746 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_COLLATION; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35782 "gram.c" /* yacc.c:1646 */ break; case 1286: -#line 8755 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8755 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_CONVERSION; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35795 "gram.c" /* yacc.c:1646 */ break; case 1287: -#line 8764 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8764 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_DOMAIN; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35808 "gram.c" /* yacc.c:1646 */ break; case 1288: -#line 8773 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8773 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_EXTENSION; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newschema = (yyvsp[0].str); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35821 "gram.c" /* yacc.c:1646 */ break; case 1289: -#line 8782 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8782 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35834 "gram.c" /* yacc.c:1646 */ break; case 1290: -#line 8791 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8791 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPERATOR; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35847 "gram.c" /* yacc.c:1646 */ break; case 1291: -#line 8800 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8800 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; - n->object = (Node *) lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newschema = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35860 "gram.c" /* yacc.c:1646 */ break; case 1292: -#line 8809 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8809 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; - n->object = (Node *) lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newschema = (yyvsp[0].str); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35873 "gram.c" /* yacc.c:1646 */ break; case 1293: -#line 8818 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8818 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (6)].range); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35886 "gram.c" /* yacc.c:1646 */ break; case 1294: -#line 8827 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8827 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35899 "gram.c" /* yacc.c:1646 */ break; case 1295: -#line 8836 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8836 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_STATISTIC_EXT; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35912 "gram.c" /* yacc.c:1646 */ break; case 1296: -#line 8845 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8845 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSPARSER; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35925 "gram.c" /* yacc.c:1646 */ break; case 1297: -#line 8854 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8854 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSDICTIONARY; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35938 "gram.c" /* yacc.c:1646 */ break; case 1298: -#line 8863 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8863 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSTEMPLATE; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35951 "gram.c" /* yacc.c:1646 */ break; case 1299: -#line 8872 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8872 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSCONFIGURATION; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35964 "gram.c" /* yacc.c:1646 */ break; case 1300: -#line 8881 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8881 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (6)].range); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 35977 "gram.c" /* yacc.c:1646 */ break; case 1301: -#line 8890 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8890 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 35990 "gram.c" /* yacc.c:1646 */ break; case 1302: -#line 8899 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8899 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(3) - (6)].range); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 36003 "gram.c" /* yacc.c:1646 */ break; case 1303: -#line 8908 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8908 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(5) - (8)].range); + n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 36016 "gram.c" /* yacc.c:1646 */ break; case 1304: -#line 8917 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8917 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (7)].range); + n->newschema = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 36029 "gram.c" /* yacc.c:1646 */ break; case 1305: -#line 8926 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8926 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (9)].range); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 36042 "gram.c" /* yacc.c:1646 */ break; case 1306: -#line 8935 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8935 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(4) - (7)].range); + n->newschema = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 36055 "gram.c" /* yacc.c:1646 */ break; case 1307: -#line 8944 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8944 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[-3].range); - n->newschema = (yyvsp[0].str); + n->relation = (yyvsp[(6) - (9)].range); + n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 36068 "gram.c" /* yacc.c:1646 */ break; case 1308: -#line 8953 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8953 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TYPE; - n->object = (Node *) (yyvsp[-3].list); - n->newschema = (yyvsp[0].str); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 36081 "gram.c" /* yacc.c:1646 */ break; case 1309: -#line 8971 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8971 "gram.y" { AlterOperatorStmt *n = makeNode(AlterOperatorStmt); - n->opername = (yyvsp[-4].objwithargs); - n->options = (yyvsp[-1].list); + n->opername = (yyvsp[(3) - (7)].objwithargs); + n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; } -#line 36092 "gram.c" /* yacc.c:1646 */ break; case 1310: -#line 8979 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 36098 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8979 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 1311: -#line 8980 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 36104 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8980 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; case 1312: -#line 8984 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem((yyvsp[-2].str), NULL, (yylsp[-2])); } -#line 36110 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8984 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); } break; case 1313: -#line 8986 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *) (yyvsp[0].node), (yylsp[-2])); } -#line 36116 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8986 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); } break; case 1314: -#line 8991 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].typnam); } -#line 36122 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8991 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); } break; case 1315: -#line 8992 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[0].keyword))); } -#line 36128 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8992 "gram.y" + { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); } break; case 1316: -#line 8993 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].list); } -#line 36134 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8993 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); } break; case 1317: -#line 8994 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[0].value); } -#line 36140 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8994 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); } break; case 1318: -#line 8995 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)makeString((yyvsp[0].str)); } -#line 36146 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8995 "gram.y" + { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); } break; case 1319: -#line 9005 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9005 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_AGGREGATE; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36158 "gram.c" /* yacc.c:1646 */ break; case 1320: -#line 9013 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9013 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_COLLATION; - n->object = (Node *) (yyvsp[-3].list); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36170 "gram.c" /* yacc.c:1646 */ break; case 1321: -#line 9021 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9021 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_CONVERSION; - n->object = (Node *) (yyvsp[-3].list); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36182 "gram.c" /* yacc.c:1646 */ break; case 1322: -#line 9029 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9029 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36194 "gram.c" /* yacc.c:1646 */ break; case 1323: -#line 9037 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9037 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DOMAIN; - n->object = (Node *) (yyvsp[-3].list); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36206 "gram.c" /* yacc.c:1646 */ break; case 1324: -#line 9045 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9045 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36218 "gram.c" /* yacc.c:1646 */ break; case 1325: -#line 9053 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9053 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LANGUAGE; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *)n; } -#line 36230 "gram.c" /* yacc.c:1646 */ break; case 1326: -#line 9061 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9061 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LARGEOBJECT; - n->object = (Node *) (yyvsp[-3].value); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(4) - (7)].value); + n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *)n; } -#line 36242 "gram.c" /* yacc.c:1646 */ break; case 1327: -#line 9069 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9069 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPERATOR; - n->object = (Node *) (yyvsp[-3].objwithargs); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36254 "gram.c" /* yacc.c:1646 */ break; case 1328: -#line 9077 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9077 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPCLASS; - n->object = (Node *) lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newowner = (yyvsp[(9) - (9)].rolespec); (yyval.node) = (Node *)n; } -#line 36266 "gram.c" /* yacc.c:1646 */ break; case 1329: -#line 9085 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9085 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPFAMILY; - n->object = (Node *) lcons(makeString((yyvsp[-3].str)), (yyvsp[-5].list)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newowner = (yyvsp[(9) - (9)].rolespec); (yyval.node) = (Node *)n; } -#line 36278 "gram.c" /* yacc.c:1646 */ break; case 1330: -#line 9093 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9093 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SCHEMA; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36290 "gram.c" /* yacc.c:1646 */ break; case 1331: -#line 9101 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9101 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TYPE; - n->object = (Node *) (yyvsp[-3].list); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36302 "gram.c" /* yacc.c:1646 */ break; case 1332: -#line 9109 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9109 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TABLESPACE; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36314 "gram.c" /* yacc.c:1646 */ break; case 1333: -#line 9117 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9117 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_STATISTIC_EXT; - n->object = (Node *) (yyvsp[-3].list); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(3) - (6)].list); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36326 "gram.c" /* yacc.c:1646 */ break; case 1334: -#line 9125 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9125 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSDICTIONARY; - n->object = (Node *) (yyvsp[-3].list); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newowner = (yyvsp[(8) - (8)].rolespec); (yyval.node) = (Node *)n; } -#line 36338 "gram.c" /* yacc.c:1646 */ break; case 1335: -#line 9133 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9133 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSCONFIGURATION; - n->object = (Node *) (yyvsp[-3].list); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) (yyvsp[(5) - (8)].list); + n->newowner = (yyvsp[(8) - (8)].rolespec); (yyval.node) = (Node *)n; } -#line 36350 "gram.c" /* yacc.c:1646 */ break; case 1336: -#line 9141 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9141 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FDW; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(5) - (8)].str)); + n->newowner = (yyvsp[(8) - (8)].rolespec); (yyval.node) = (Node *)n; } -#line 36362 "gram.c" /* yacc.c:1646 */ break; case 1337: -#line 9149 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9149 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FOREIGN_SERVER; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36374 "gram.c" /* yacc.c:1646 */ break; case 1338: -#line 9157 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9157 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_EVENT_TRIGGER; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); + n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *)n; } -#line 36386 "gram.c" /* yacc.c:1646 */ break; case 1339: -#line 9165 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9165 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_PUBLICATION; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36398 "gram.c" /* yacc.c:1646 */ break; case 1340: -#line 9173 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9173 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SUBSCRIPTION; - n->object = (Node *) makeString((yyvsp[-3].str)); - n->newowner = (yyvsp[0].rolespec); + n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; } -#line 36410 "gram.c" /* yacc.c:1646 */ break; case 1341: -#line 9191 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9191 "gram.y" { CreatePublicationStmt *n = makeNode(CreatePublicationStmt); - n->pubname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); - if ((yyvsp[-1].node) != NULL) + n->pubname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); + if ((yyvsp[(4) - (5)].node) != NULL) { /* FOR TABLE */ - if (IsA((yyvsp[-1].node), List)) - n->tables = (List *)(yyvsp[-1].node); + if (IsA((yyvsp[(4) - (5)].node), List)) + n->tables = (List *)(yyvsp[(4) - (5)].node); /* FOR ALL TABLES */ else n->for_all_tables = TRUE; } (yyval.node) = (Node *)n; } -#line 36430 "gram.c" /* yacc.c:1646 */ break; case 1342: -#line 9209 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36436 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9209 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1343: -#line 9210 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9210 "gram.y" { (yyval.node) = NULL; } -#line 36442 "gram.c" /* yacc.c:1646 */ break; case 1344: -#line 9215 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9215 "gram.y" { - (yyval.node) = (Node *) (yyvsp[0].list); + (yyval.node) = (Node *) (yyvsp[(3) - (3)].list); } -#line 36450 "gram.c" /* yacc.c:1646 */ break; case 1345: -#line 9219 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9219 "gram.y" { (yyval.node) = (Node *) makeInteger(TRUE); } -#line 36458 "gram.c" /* yacc.c:1646 */ break; case 1346: -#line 9239 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9239 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); - n->pubname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->pubname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 36469 "gram.c" /* yacc.c:1646 */ break; case 1347: -#line 9246 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9246 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); - n->pubname = (yyvsp[-3].str); - n->tables = (yyvsp[0].list); + n->pubname = (yyvsp[(3) - (6)].str); + n->tables = (yyvsp[(6) - (6)].list); n->tableAction = DEFELEM_ADD; (yyval.node) = (Node *)n; } -#line 36481 "gram.c" /* yacc.c:1646 */ break; case 1348: -#line 9254 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9254 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); - n->pubname = (yyvsp[-3].str); - n->tables = (yyvsp[0].list); + n->pubname = (yyvsp[(3) - (6)].str); + n->tables = (yyvsp[(6) - (6)].list); n->tableAction = DEFELEM_SET; (yyval.node) = (Node *)n; } -#line 36493 "gram.c" /* yacc.c:1646 */ break; case 1349: -#line 9262 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9262 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); - n->pubname = (yyvsp[-3].str); - n->tables = (yyvsp[0].list); + n->pubname = (yyvsp[(3) - (6)].str); + n->tables = (yyvsp[(6) - (6)].list); n->tableAction = DEFELEM_DROP; (yyval.node) = (Node *)n; } -#line 36505 "gram.c" /* yacc.c:1646 */ break; case 1350: -#line 9279 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9279 "gram.y" { CreateSubscriptionStmt *n = makeNode(CreateSubscriptionStmt); - n->subname = (yyvsp[-5].str); - n->conninfo = (yyvsp[-3].str); - n->publication = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->subname = (yyvsp[(3) - (8)].str); + n->conninfo = (yyvsp[(5) - (8)].str); + n->publication = (yyvsp[(7) - (8)].list); + n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; } -#line 36519 "gram.c" /* yacc.c:1646 */ break; case 1351: -#line 9292 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9292 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].value)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); } -#line 36527 "gram.c" /* yacc.c:1646 */ break; case 1352: -#line 9296 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9296 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].value)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); } -#line 36535 "gram.c" /* yacc.c:1646 */ break; case 1353: -#line 9302 "gram.y" /* yacc.c:1646 */ - { (yyval.value) = makeString((yyvsp[0].str)); } -#line 36541 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9302 "gram.y" + { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); } break; case 1354: -#line 9312 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9312 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_OPTIONS; - n->subname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->subname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 36554 "gram.c" /* yacc.c:1646 */ break; case 1355: -#line 9321 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9321 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_CONNECTION; - n->subname = (yyvsp[-2].str); - n->conninfo = (yyvsp[0].str); + n->subname = (yyvsp[(3) - (5)].str); + n->conninfo = (yyvsp[(5) - (5)].str); (yyval.node) = (Node *)n; } -#line 36567 "gram.c" /* yacc.c:1646 */ break; case 1356: -#line 9330 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9330 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_REFRESH; - n->subname = (yyvsp[-3].str); - n->options = (yyvsp[0].list); + n->subname = (yyvsp[(3) - (6)].str); + n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 36580 "gram.c" /* yacc.c:1646 */ break; case 1357: -#line 9339 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9339 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_PUBLICATION; - n->subname = (yyvsp[-4].str); - n->publication = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->subname = (yyvsp[(3) - (7)].str); + n->publication = (yyvsp[(6) - (7)].list); + n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; } -#line 36594 "gram.c" /* yacc.c:1646 */ break; case 1358: -#line 9349 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9349 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; - n->subname = (yyvsp[-1].str); + n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", - (Node *)makeInteger(TRUE), (yylsp[-3]))); + (Node *)makeInteger(TRUE), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; } -#line 36608 "gram.c" /* yacc.c:1646 */ break; case 1359: -#line 9359 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9359 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; - n->subname = (yyvsp[-1].str); + n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", - (Node *)makeInteger(FALSE), (yylsp[-3]))); + (Node *)makeInteger(FALSE), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; } -#line 36622 "gram.c" /* yacc.c:1646 */ break; case 1360: -#line 9377 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9377 "gram.y" { DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); - n->subname = (yyvsp[-1].str); + n->subname = (yyvsp[(3) - (4)].str); n->missing_ok = false; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(4) - (4)].dbehavior); (yyval.node) = (Node *) n; } -#line 36634 "gram.c" /* yacc.c:1646 */ break; case 1361: -#line 9385 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9385 "gram.y" { DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); - n->subname = (yyvsp[-1].str); + n->subname = (yyvsp[(5) - (6)].str); n->missing_ok = true; - n->behavior = (yyvsp[0].dbehavior); + n->behavior = (yyvsp[(6) - (6)].dbehavior); (yyval.node) = (Node *) n; } -#line 36646 "gram.c" /* yacc.c:1646 */ break; case 1362: -#line 9403 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9403 "gram.y" { RuleStmt *n = makeNode(RuleStmt); - n->replace = (yyvsp[-11].boolean); - n->relation = (yyvsp[-4].range); - n->rulename = (yyvsp[-9].str); - n->whereClause = (yyvsp[-3].node); - n->event = (yyvsp[-6].ival); - n->instead = (yyvsp[-1].boolean); - n->actions = (yyvsp[0].list); + n->replace = (yyvsp[(2) - (13)].boolean); + n->relation = (yyvsp[(9) - (13)].range); + n->rulename = (yyvsp[(4) - (13)].str); + n->whereClause = (yyvsp[(10) - (13)].node); + n->event = (yyvsp[(7) - (13)].ival); + n->instead = (yyvsp[(12) - (13)].boolean); + n->actions = (yyvsp[(13) - (13)].list); (yyval.node) = (Node *)n; } -#line 36662 "gram.c" /* yacc.c:1646 */ break; case 1363: -#line 9417 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9417 "gram.y" { (yyval.list) = NIL; } -#line 36668 "gram.c" /* yacc.c:1646 */ break; case 1364: -#line 9418 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 36674 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9418 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 1365: -#line 9419 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 36680 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9419 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 1366: -#line 9425 "gram.y" /* yacc.c:1646 */ - { if ((yyvsp[0].node) != NULL) - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); +/* Line 1792 of yacc.c */ +#line 9425 "gram.y" + { if ((yyvsp[(3) - (3)].node) != NULL) + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); else - (yyval.list) = (yyvsp[-2].list); + (yyval.list) = (yyvsp[(1) - (3)].list); } -#line 36690 "gram.c" /* yacc.c:1646 */ break; case 1367: -#line 9431 "gram.y" /* yacc.c:1646 */ - { if ((yyvsp[0].node) != NULL) - (yyval.list) = list_make1((yyvsp[0].node)); +/* Line 1792 of yacc.c */ +#line 9431 "gram.y" + { if ((yyvsp[(1) - (1)].node) != NULL) + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); else (yyval.list) = NIL; } -#line 36700 "gram.c" /* yacc.c:1646 */ break; case 1373: -#line 9447 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 36706 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9447 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1374: -#line 9448 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9448 "gram.y" { (yyval.node) = NULL; } -#line 36712 "gram.c" /* yacc.c:1646 */ break; case 1375: -#line 9451 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9451 "gram.y" { (yyval.ival) = CMD_SELECT; } -#line 36718 "gram.c" /* yacc.c:1646 */ break; case 1376: -#line 9452 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9452 "gram.y" { (yyval.ival) = CMD_UPDATE; } -#line 36724 "gram.c" /* yacc.c:1646 */ break; case 1377: -#line 9453 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9453 "gram.y" { (yyval.ival) = CMD_DELETE; } -#line 36730 "gram.c" /* yacc.c:1646 */ break; case 1378: -#line 9454 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9454 "gram.y" { (yyval.ival) = CMD_INSERT; } -#line 36736 "gram.c" /* yacc.c:1646 */ break; case 1379: -#line 9458 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9458 "gram.y" { (yyval.boolean) = TRUE; } -#line 36742 "gram.c" /* yacc.c:1646 */ break; case 1380: -#line 9459 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9459 "gram.y" { (yyval.boolean) = FALSE; } -#line 36748 "gram.c" /* yacc.c:1646 */ break; case 1381: -#line 9460 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9460 "gram.y" { (yyval.boolean) = FALSE; } -#line 36754 "gram.c" /* yacc.c:1646 */ break; case 1382: -#line 9473 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9473 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); - n->conditionname = (yyvsp[-1].str); - n->payload = (yyvsp[0].str); + n->conditionname = (yyvsp[(2) - (3)].str); + n->payload = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 36765 "gram.c" /* yacc.c:1646 */ break; case 1383: -#line 9482 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 36771 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9482 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 1384: -#line 9483 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9483 "gram.y" { (yyval.str) = NULL; } -#line 36777 "gram.c" /* yacc.c:1646 */ break; case 1385: -#line 9487 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9487 "gram.y" { ListenStmt *n = makeNode(ListenStmt); - n->conditionname = (yyvsp[0].str); + n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 36787 "gram.c" /* yacc.c:1646 */ break; case 1386: -#line 9496 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9496 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); - n->conditionname = (yyvsp[0].str); + n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 36797 "gram.c" /* yacc.c:1646 */ break; case 1387: -#line 9502 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9502 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = NULL; (yyval.node) = (Node *)n; } -#line 36807 "gram.c" /* yacc.c:1646 */ break; case 1388: -#line 9521 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9521 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; (yyval.node) = (Node *)n; } -#line 36818 "gram.c" /* yacc.c:1646 */ break; case 1389: -#line 9528 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9528 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_BEGIN; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 36829 "gram.c" /* yacc.c:1646 */ break; case 1390: -#line 9535 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9535 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_START; - n->options = (yyvsp[0].list); + n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; } -#line 36840 "gram.c" /* yacc.c:1646 */ break; case 1391: -#line 9542 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9542 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; (yyval.node) = (Node *)n; } -#line 36851 "gram.c" /* yacc.c:1646 */ break; case 1392: -#line 9549 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9549 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; (yyval.node) = (Node *)n; } -#line 36862 "gram.c" /* yacc.c:1646 */ break; case 1393: -#line 9556 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9556 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; (yyval.node) = (Node *)n; } -#line 36873 "gram.c" /* yacc.c:1646 */ break; case 1394: -#line 9563 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9563 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)), (yylsp[-1]))); + (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)]))); (yyval.node) = (Node *)n; } -#line 36885 "gram.c" /* yacc.c:1646 */ break; case 1395: -#line 9571 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9571 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)), (yylsp[-2]))); + (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)]))); (yyval.node) = (Node *)n; } -#line 36897 "gram.c" /* yacc.c:1646 */ break; case 1396: -#line 9579 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9579 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)), (yylsp[-1]))); + (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)]))); (yyval.node) = (Node *)n; } -#line 36909 "gram.c" /* yacc.c:1646 */ break; case 1397: -#line 9587 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9587 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)), (yylsp[-4]))); + (Node *)makeString((yyvsp[(5) - (5)].str)), (yylsp[(1) - (5)]))); (yyval.node) = (Node *)n; } -#line 36921 "gram.c" /* yacc.c:1646 */ break; case 1398: -#line 9595 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9595 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[0].str)), (yylsp[-3]))); + (Node *)makeString((yyvsp[(4) - (4)].str)), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; } -#line 36933 "gram.c" /* yacc.c:1646 */ break; case 1399: -#line 9603 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9603 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_PREPARE; - n->gid = (yyvsp[0].str); + n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 36944 "gram.c" /* yacc.c:1646 */ break; case 1400: -#line 9610 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9610 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT_PREPARED; - n->gid = (yyvsp[0].str); + n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 36955 "gram.c" /* yacc.c:1646 */ break; case 1401: -#line 9617 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9617 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_PREPARED; - n->gid = (yyvsp[0].str); + n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; } -#line 36966 "gram.c" /* yacc.c:1646 */ break; case 1402: -#line 9625 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9625 "gram.y" {} -#line 36972 "gram.c" /* yacc.c:1646 */ break; case 1403: -#line 9626 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9626 "gram.y" {} -#line 36978 "gram.c" /* yacc.c:1646 */ break; case 1404: -#line 9627 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9627 "gram.y" {} -#line 36984 "gram.c" /* yacc.c:1646 */ break; case 1405: -#line 9632 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9632 "gram.y" { (yyval.defelt) = makeDefElem("transaction_isolation", - makeStringConst((yyvsp[0].str), (yylsp[0])), (yylsp[-2])); } -#line 36991 "gram.c" /* yacc.c:1646 */ + makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); } break; case 1406: -#line 9635 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9635 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(TRUE, (yylsp[-1])), (yylsp[-1])); } -#line 36998 "gram.c" /* yacc.c:1646 */ + makeIntConst(TRUE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); } break; case 1407: -#line 9638 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9638 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(FALSE, (yylsp[-1])), (yylsp[-1])); } -#line 37005 "gram.c" /* yacc.c:1646 */ + makeIntConst(FALSE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); } break; case 1408: -#line 9641 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9641 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", - makeIntConst(TRUE, (yylsp[0])), (yylsp[0])); } -#line 37012 "gram.c" /* yacc.c:1646 */ + makeIntConst(TRUE, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); } break; case 1409: -#line 9644 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9644 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", - makeIntConst(FALSE, (yylsp[-1])), (yylsp[-1])); } -#line 37019 "gram.c" /* yacc.c:1646 */ + makeIntConst(FALSE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); } break; case 1410: -#line 9651 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 37025 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9651 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 1411: -#line 9653 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } -#line 37031 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9653 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } break; case 1412: -#line 9655 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 37037 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9655 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 1414: -#line 9661 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9661 "gram.y" { (yyval.list) = NIL; } -#line 37043 "gram.c" /* yacc.c:1646 */ break; case 1415: -#line 9675 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9675 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-5].range); - n->view->relpersistence = (yyvsp[-7].ival); - n->aliases = (yyvsp[-4].list); - n->query = (yyvsp[-1].node); + n->view = (yyvsp[(4) - (9)].range); + n->view->relpersistence = (yyvsp[(2) - (9)].ival); + n->aliases = (yyvsp[(5) - (9)].list); + n->query = (yyvsp[(8) - (9)].node); n->replace = false; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(6) - (9)].list); + n->withCheckOption = (yyvsp[(9) - (9)].ival); (yyval.node) = (Node *) n; } -#line 37059 "gram.c" /* yacc.c:1646 */ break; case 1416: -#line 9688 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9688 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-5].range); - n->view->relpersistence = (yyvsp[-7].ival); - n->aliases = (yyvsp[-4].list); - n->query = (yyvsp[-1].node); + n->view = (yyvsp[(6) - (11)].range); + n->view->relpersistence = (yyvsp[(4) - (11)].ival); + n->aliases = (yyvsp[(7) - (11)].list); + n->query = (yyvsp[(10) - (11)].node); n->replace = true; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(8) - (11)].list); + n->withCheckOption = (yyvsp[(11) - (11)].ival); (yyval.node) = (Node *) n; } -#line 37075 "gram.c" /* yacc.c:1646 */ break; case 1417: -#line 9701 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9701 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-7].range); - n->view->relpersistence = (yyvsp[-10].ival); - n->aliases = (yyvsp[-5].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->view = (yyvsp[(5) - (12)].range); + n->view->relpersistence = (yyvsp[(2) - (12)].ival); + n->aliases = (yyvsp[(7) - (12)].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(11) - (12)].node)); n->replace = false; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(9) - (12)].list); + n->withCheckOption = (yyvsp[(12) - (12)].ival); if (n->withCheckOption != NO_CHECK_OPTION) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(12) - (12)])))); (yyval.node) = (Node *) n; } -#line 37096 "gram.c" /* yacc.c:1646 */ break; case 1418: -#line 9719 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9719 "gram.y" { ViewStmt *n = makeNode(ViewStmt); - n->view = (yyvsp[-7].range); - n->view->relpersistence = (yyvsp[-10].ival); - n->aliases = (yyvsp[-5].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->view = (yyvsp[(7) - (14)].range); + n->view->relpersistence = (yyvsp[(4) - (14)].ival); + n->aliases = (yyvsp[(9) - (14)].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(13) - (14)].node)); n->replace = true; - n->options = (yyvsp[-3].list); - n->withCheckOption = (yyvsp[0].ival); + n->options = (yyvsp[(11) - (14)].list); + n->withCheckOption = (yyvsp[(14) - (14)].ival); if (n->withCheckOption != NO_CHECK_OPTION) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(14) - (14)])))); (yyval.node) = (Node *) n; } -#line 37117 "gram.c" /* yacc.c:1646 */ break; case 1419: -#line 9738 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9738 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; } -#line 37123 "gram.c" /* yacc.c:1646 */ break; case 1420: -#line 9739 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9739 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; } -#line 37129 "gram.c" /* yacc.c:1646 */ break; case 1421: -#line 9740 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9740 "gram.y" { (yyval.ival) = LOCAL_CHECK_OPTION; } -#line 37135 "gram.c" /* yacc.c:1646 */ break; case 1422: -#line 9741 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9741 "gram.y" { (yyval.ival) = NO_CHECK_OPTION; } -#line 37141 "gram.c" /* yacc.c:1646 */ break; case 1423: -#line 9752 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9752 "gram.y" { LoadStmt *n = makeNode(LoadStmt); - n->filename = (yyvsp[0].str); + n->filename = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; } -#line 37151 "gram.c" /* yacc.c:1646 */ break; case 1424: -#line 9768 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9768 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); - n->dbname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->dbname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 37162 "gram.c" /* yacc.c:1646 */ break; case 1425: -#line 9777 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 37168 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9777 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1426: -#line 9778 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9778 "gram.y" { (yyval.list) = NIL; } -#line 37174 "gram.c" /* yacc.c:1646 */ break; case 1427: -#line 9782 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 37180 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9782 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 1428: -#line 9783 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 37186 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9783 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 1429: -#line 9788 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9788 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)makeInteger((yyvsp[0].ival)), (yylsp[-2])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); } -#line 37194 "gram.c" /* yacc.c:1646 */ break; case 1430: -#line 9792 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9792 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), (Node *)makeString((yyvsp[0].str)), (yylsp[-2])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); } -#line 37202 "gram.c" /* yacc.c:1646 */ break; case 1431: -#line 9796 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9796 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-2].str), NULL, (yylsp[-2])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); } -#line 37210 "gram.c" /* yacc.c:1646 */ break; case 1432: -#line 9813 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 37216 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9813 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1433: -#line 9814 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9814 "gram.y" { (yyval.str) = pstrdup("connection_limit"); } -#line 37222 "gram.c" /* yacc.c:1646 */ break; case 1434: -#line 9815 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 37228 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9815 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 1435: -#line 9816 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 37234 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9816 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 1436: -#line 9817 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 37240 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9817 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 1437: -#line 9818 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 37246 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9818 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 1438: -#line 9819 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 37252 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9819 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 1439: -#line 9826 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9826 "gram.y" {} -#line 37258 "gram.c" /* yacc.c:1646 */ break; case 1440: -#line 9827 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9827 "gram.y" {} -#line 37264 "gram.c" /* yacc.c:1646 */ break; case 1441: -#line 9839 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9839 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); - n->dbname = (yyvsp[-2].str); - n->options = (yyvsp[0].list); + n->dbname = (yyvsp[(3) - (5)].str); + n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; } -#line 37275 "gram.c" /* yacc.c:1646 */ break; case 1442: -#line 9846 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9846 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); - n->dbname = (yyvsp[-1].str); - n->options = (yyvsp[0].list); + n->dbname = (yyvsp[(3) - (4)].str); + n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 37286 "gram.c" /* yacc.c:1646 */ break; case 1443: -#line 9853 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9853 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); - n->dbname = (yyvsp[-3].str); + n->dbname = (yyvsp[(3) - (6)].str); n->options = list_make1(makeDefElem("tablespace", - (Node *)makeString((yyvsp[0].str)), (yylsp[0]))); + (Node *)makeString((yyvsp[(6) - (6)].str)), (yylsp[(6) - (6)]))); (yyval.node) = (Node *)n; } -#line 37298 "gram.c" /* yacc.c:1646 */ break; case 1444: -#line 9864 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9864 "gram.y" { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); - n->dbname = (yyvsp[-1].str); - n->setstmt = (yyvsp[0].vsetstmt); + n->dbname = (yyvsp[(3) - (4)].str); + n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; } -#line 37309 "gram.c" /* yacc.c:1646 */ break; case 1445: -#line 9881 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9881 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); - n->dbname = (yyvsp[0].str); + n->dbname = (yyvsp[(3) - (3)].str); n->missing_ok = FALSE; (yyval.node) = (Node *)n; } -#line 37320 "gram.c" /* yacc.c:1646 */ break; case 1446: -#line 9888 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9888 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); - n->dbname = (yyvsp[0].str); + n->dbname = (yyvsp[(5) - (5)].str); n->missing_ok = TRUE; (yyval.node) = (Node *)n; } -#line 37331 "gram.c" /* yacc.c:1646 */ break; case 1447: -#line 9904 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9904 "gram.y" { AlterCollationStmt *n = makeNode(AlterCollationStmt); - n->collname = (yyvsp[-2].list); + n->collname = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *)n; } -#line 37341 "gram.c" /* yacc.c:1646 */ break; case 1448: -#line 9921 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9921 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); - n->setstmt = (yyvsp[0].vsetstmt); + n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; } -#line 37351 "gram.c" /* yacc.c:1646 */ break; case 1449: -#line 9927 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9927 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); - n->setstmt = (yyvsp[0].vsetstmt); + n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; } -#line 37361 "gram.c" /* yacc.c:1646 */ break; case 1450: -#line 9943 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9943 "gram.y" { CreateDomainStmt *n = makeNode(CreateDomainStmt); - n->domainname = (yyvsp[-3].list); - n->typeName = (yyvsp[-1].typnam); - SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + n->domainname = (yyvsp[(3) - (6)].list); + n->typeName = (yyvsp[(5) - (6)].typnam); + SplitColQualList((yyvsp[(6) - (6)].list), &n->constraints, &n->collClause, yyscanner); (yyval.node) = (Node *)n; } -#line 37374 "gram.c" /* yacc.c:1646 */ break; case 1451: -#line 9956 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9956 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'T'; - n->typeName = (yyvsp[-1].list); - n->def = (yyvsp[0].node); + n->typeName = (yyvsp[(3) - (4)].list); + n->def = (yyvsp[(4) - (4)].node); (yyval.node) = (Node *)n; } -#line 37386 "gram.c" /* yacc.c:1646 */ break; case 1452: -#line 9965 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9965 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'N'; - n->typeName = (yyvsp[-3].list); + n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *)n; } -#line 37397 "gram.c" /* yacc.c:1646 */ break; case 1453: -#line 9973 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9973 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'O'; - n->typeName = (yyvsp[-3].list); + n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *)n; } -#line 37408 "gram.c" /* yacc.c:1646 */ break; case 1454: -#line 9981 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9981 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'C'; - n->typeName = (yyvsp[-2].list); - n->def = (yyvsp[0].node); + n->typeName = (yyvsp[(3) - (5)].list); + n->def = (yyvsp[(5) - (5)].node); (yyval.node) = (Node *)n; } -#line 37420 "gram.c" /* yacc.c:1646 */ break; case 1455: -#line 9990 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9990 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; - n->typeName = (yyvsp[-4].list); - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->typeName = (yyvsp[(3) - (7)].list); + n->name = (yyvsp[(6) - (7)].str); + n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; } -#line 37434 "gram.c" /* yacc.c:1646 */ break; case 1456: -#line 10001 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10001 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; - n->typeName = (yyvsp[-6].list); - n->name = (yyvsp[-1].str); - n->behavior = (yyvsp[0].dbehavior); + n->typeName = (yyvsp[(3) - (9)].list); + n->name = (yyvsp[(8) - (9)].str); + n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; (yyval.node) = (Node *)n; } -#line 37448 "gram.c" /* yacc.c:1646 */ break; case 1457: -#line 10012 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10012 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'V'; - n->typeName = (yyvsp[-3].list); - n->name = (yyvsp[0].str); + n->typeName = (yyvsp[(3) - (6)].list); + n->name = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *)n; } -#line 37460 "gram.c" /* yacc.c:1646 */ break; case 1458: -#line 10021 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10021 "gram.y" {} -#line 37466 "gram.c" /* yacc.c:1646 */ break; case 1459: -#line 10022 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10022 "gram.y" {} -#line 37472 "gram.c" /* yacc.c:1646 */ break; case 1460: -#line 10034 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10034 "gram.y" { AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); - n->dictname = (yyvsp[-1].list); - n->options = (yyvsp[0].list); + n->dictname = (yyvsp[(5) - (6)].list); + n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; } -#line 37483 "gram.c" /* yacc.c:1646 */ break; case 1461: -#line 10044 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10044 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ADD_MAPPING; - n->cfgname = (yyvsp[-6].list); - n->tokentype = (yyvsp[-2].list); - n->dicts = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (11)].list); + n->tokentype = (yyvsp[(9) - (11)].list); + n->dicts = (yyvsp[(11) - (11)].list); n->override = false; n->replace = false; (yyval.node) = (Node*)n; } -#line 37498 "gram.c" /* yacc.c:1646 */ break; case 1462: -#line 10055 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10055 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN; - n->cfgname = (yyvsp[-6].list); - n->tokentype = (yyvsp[-2].list); - n->dicts = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (11)].list); + n->tokentype = (yyvsp[(9) - (11)].list); + n->dicts = (yyvsp[(11) - (11)].list); n->override = true; n->replace = false; (yyval.node) = (Node*)n; } -#line 37513 "gram.c" /* yacc.c:1646 */ break; case 1463: -#line 10066 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10066 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT; - n->cfgname = (yyvsp[-6].list); + n->cfgname = (yyvsp[(5) - (11)].list); n->tokentype = NIL; - n->dicts = list_make2((yyvsp[-2].list),(yyvsp[0].list)); + n->dicts = list_make2((yyvsp[(9) - (11)].list),(yyvsp[(11) - (11)].list)); n->override = false; n->replace = true; (yyval.node) = (Node*)n; } -#line 37528 "gram.c" /* yacc.c:1646 */ break; case 1464: -#line 10077 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10077 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN; - n->cfgname = (yyvsp[-8].list); - n->tokentype = (yyvsp[-4].list); - n->dicts = list_make2((yyvsp[-2].list),(yyvsp[0].list)); + n->cfgname = (yyvsp[(5) - (13)].list); + n->tokentype = (yyvsp[(9) - (13)].list); + n->dicts = list_make2((yyvsp[(11) - (13)].list),(yyvsp[(13) - (13)].list)); n->override = false; n->replace = true; (yyval.node) = (Node*)n; } -#line 37543 "gram.c" /* yacc.c:1646 */ break; case 1465: -#line 10088 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10088 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; - n->cfgname = (yyvsp[-4].list); - n->tokentype = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (9)].list); + n->tokentype = (yyvsp[(9) - (9)].list); n->missing_ok = false; (yyval.node) = (Node*)n; } -#line 37556 "gram.c" /* yacc.c:1646 */ break; case 1466: -#line 10097 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10097 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; - n->cfgname = (yyvsp[-6].list); - n->tokentype = (yyvsp[0].list); + n->cfgname = (yyvsp[(5) - (11)].list); + n->tokentype = (yyvsp[(11) - (11)].list); n->missing_ok = true; (yyval.node) = (Node*)n; } -#line 37569 "gram.c" /* yacc.c:1646 */ break; case 1467: -#line 10108 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10108 "gram.y" {} -#line 37575 "gram.c" /* yacc.c:1646 */ break; case 1468: -#line 10109 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10109 "gram.y" {} -#line 37581 "gram.c" /* yacc.c:1646 */ break; case 1469: -#line 10125 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10125 "gram.y" { CreateConversionStmt *n = makeNode(CreateConversionStmt); - n->conversion_name = (yyvsp[-6].list); - n->for_encoding_name = (yyvsp[-4].str); - n->to_encoding_name = (yyvsp[-2].str); - n->func_name = (yyvsp[0].list); - n->def = (yyvsp[-8].boolean); + n->conversion_name = (yyvsp[(4) - (10)].list); + n->for_encoding_name = (yyvsp[(6) - (10)].str); + n->to_encoding_name = (yyvsp[(8) - (10)].str); + n->func_name = (yyvsp[(10) - (10)].list); + n->def = (yyvsp[(2) - (10)].boolean); (yyval.node) = (Node *)n; } -#line 37595 "gram.c" /* yacc.c:1646 */ break; case 1470: -#line 10147 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10147 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); - n->relation = (yyvsp[-1].range); - n->indexname = (yyvsp[0].str); - n->verbose = (yyvsp[-2].boolean); + n->relation = (yyvsp[(3) - (4)].range); + n->indexname = (yyvsp[(4) - (4)].str); + n->verbose = (yyvsp[(2) - (4)].boolean); (yyval.node) = (Node*)n; } -#line 37607 "gram.c" /* yacc.c:1646 */ break; case 1471: -#line 10155 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10155 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; - n->verbose = (yyvsp[0].boolean); + n->verbose = (yyvsp[(2) - (2)].boolean); (yyval.node) = (Node*)n; } -#line 37619 "gram.c" /* yacc.c:1646 */ break; case 1472: -#line 10164 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10164 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); - n->relation = (yyvsp[0].range); - n->indexname = (yyvsp[-2].str); - n->verbose = (yyvsp[-3].boolean); + n->relation = (yyvsp[(5) - (5)].range); + n->indexname = (yyvsp[(3) - (5)].str); + n->verbose = (yyvsp[(2) - (5)].boolean); (yyval.node) = (Node*)n; } -#line 37631 "gram.c" /* yacc.c:1646 */ break; case 1473: -#line 10174 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 37637 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10174 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; case 1474: -#line 10175 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10175 "gram.y" { (yyval.str) = NULL; } -#line 37643 "gram.c" /* yacc.c:1646 */ break; case 1475: -#line 10188 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10188 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_VACUUM; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(2) - (4)].boolean)) n->options |= VACOPT_FULL; - if ((yyvsp[-1].boolean)) + if ((yyvsp[(3) - (4)].boolean)) n->options |= VACOPT_FREEZE; - if ((yyvsp[0].boolean)) + if ((yyvsp[(4) - (4)].boolean)) n->options |= VACOPT_VERBOSE; n->relation = NULL; n->va_cols = NIL; (yyval.node) = (Node *)n; } -#line 37661 "gram.c" /* yacc.c:1646 */ break; case 1476: -#line 10202 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10202 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_VACUUM; - if ((yyvsp[-3].boolean)) + if ((yyvsp[(2) - (5)].boolean)) n->options |= VACOPT_FULL; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(3) - (5)].boolean)) n->options |= VACOPT_FREEZE; - if ((yyvsp[-1].boolean)) + if ((yyvsp[(4) - (5)].boolean)) n->options |= VACOPT_VERBOSE; - n->relation = (yyvsp[0].range); + n->relation = (yyvsp[(5) - (5)].range); n->va_cols = NIL; (yyval.node) = (Node *)n; } -#line 37679 "gram.c" /* yacc.c:1646 */ break; case 1477: -#line 10216 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10216 "gram.y" { - VacuumStmt *n = (VacuumStmt *) (yyvsp[0].node); + VacuumStmt *n = (VacuumStmt *) (yyvsp[(5) - (5)].node); n->options |= VACOPT_VACUUM; - if ((yyvsp[-3].boolean)) + if ((yyvsp[(2) - (5)].boolean)) n->options |= VACOPT_FULL; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(3) - (5)].boolean)) n->options |= VACOPT_FREEZE; - if ((yyvsp[-1].boolean)) + if ((yyvsp[(4) - (5)].boolean)) n->options |= VACOPT_VERBOSE; (yyval.node) = (Node *)n; } -#line 37695 "gram.c" /* yacc.c:1646 */ break; case 1478: -#line 10228 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10228 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM | (yyvsp[-1].ival); + n->options = VACOPT_VACUUM | (yyvsp[(3) - (4)].ival); n->relation = NULL; n->va_cols = NIL; (yyval.node) = (Node *) n; } -#line 37707 "gram.c" /* yacc.c:1646 */ break; case 1479: -#line 10236 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10236 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM | (yyvsp[-3].ival); - n->relation = (yyvsp[-1].range); - n->va_cols = (yyvsp[0].list); + n->options = VACOPT_VACUUM | (yyvsp[(3) - (6)].ival); + n->relation = (yyvsp[(5) - (6)].range); + n->va_cols = (yyvsp[(6) - (6)].list); if (n->va_cols != NIL) /* implies analyze */ n->options |= VACOPT_ANALYZE; (yyval.node) = (Node *) n; } -#line 37721 "gram.c" /* yacc.c:1646 */ break; case 1480: -#line 10248 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 37727 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10248 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; case 1481: -#line 10249 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } -#line 37733 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10249 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); } break; case 1482: -#line 10253 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10253 "gram.y" { (yyval.ival) = VACOPT_ANALYZE; } -#line 37739 "gram.c" /* yacc.c:1646 */ break; case 1483: -#line 10254 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10254 "gram.y" { (yyval.ival) = VACOPT_VERBOSE; } -#line 37745 "gram.c" /* yacc.c:1646 */ break; case 1484: -#line 10255 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10255 "gram.y" { (yyval.ival) = VACOPT_FREEZE; } -#line 37751 "gram.c" /* yacc.c:1646 */ break; case 1485: -#line 10256 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10256 "gram.y" { (yyval.ival) = VACOPT_FULL; } -#line 37757 "gram.c" /* yacc.c:1646 */ break; case 1486: -#line 10258 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10258 "gram.y" { - if (strcmp((yyvsp[0].str), "disable_page_skipping") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "disable_page_skipping") == 0) (yyval.ival) = VACOPT_DISABLE_PAGE_SKIPPING; else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[0].str)), - parser_errposition((yylsp[0])))); + errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[(1) - (1)].str)), + parser_errposition((yylsp[(1) - (1)])))); } -#line 37771 "gram.c" /* yacc.c:1646 */ break; case 1487: -#line 10271 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10271 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_ANALYZE; - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) n->options |= VACOPT_VERBOSE; n->relation = NULL; n->va_cols = NIL; (yyval.node) = (Node *)n; } -#line 37785 "gram.c" /* yacc.c:1646 */ break; case 1488: -#line 10281 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10281 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = VACOPT_ANALYZE; - if ((yyvsp[-2].boolean)) + if ((yyvsp[(2) - (4)].boolean)) n->options |= VACOPT_VERBOSE; - n->relation = (yyvsp[-1].range); - n->va_cols = (yyvsp[0].list); + n->relation = (yyvsp[(3) - (4)].range); + n->va_cols = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; } -#line 37799 "gram.c" /* yacc.c:1646 */ break; case 1489: -#line 10293 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10293 "gram.y" {} -#line 37805 "gram.c" /* yacc.c:1646 */ break; case 1490: -#line 10294 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10294 "gram.y" {} -#line 37811 "gram.c" /* yacc.c:1646 */ break; case 1491: -#line 10298 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10298 "gram.y" { (yyval.boolean) = TRUE; } -#line 37817 "gram.c" /* yacc.c:1646 */ break; case 1492: -#line 10299 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10299 "gram.y" { (yyval.boolean) = FALSE; } -#line 37823 "gram.c" /* yacc.c:1646 */ break; case 1493: -#line 10302 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10302 "gram.y" { (yyval.boolean) = TRUE; } -#line 37829 "gram.c" /* yacc.c:1646 */ break; case 1494: -#line 10303 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10303 "gram.y" { (yyval.boolean) = FALSE; } -#line 37835 "gram.c" /* yacc.c:1646 */ break; case 1495: -#line 10306 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10306 "gram.y" { (yyval.boolean) = TRUE; } -#line 37841 "gram.c" /* yacc.c:1646 */ break; case 1496: -#line 10307 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10307 "gram.y" { (yyval.boolean) = FALSE; } -#line 37847 "gram.c" /* yacc.c:1646 */ break; case 1497: -#line 10311 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 37853 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10311 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 1498: -#line 10312 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10312 "gram.y" { (yyval.list) = NIL; } -#line 37859 "gram.c" /* yacc.c:1646 */ break; case 1499: -#line 10326 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10326 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); + n->query = (yyvsp[(2) - (2)].node); n->options = NIL; (yyval.node) = (Node *) n; } -#line 37870 "gram.c" /* yacc.c:1646 */ break; case 1500: -#line 10333 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10333 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); - n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[-2]))); - if ((yyvsp[-1].boolean)) + n->query = (yyvsp[(4) - (4)].node); + n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[(2) - (4)]))); + if ((yyvsp[(3) - (4)].boolean)) n->options = lappend(n->options, - makeDefElem("verbose", NULL, (yylsp[-1]))); + makeDefElem("verbose", NULL, (yylsp[(3) - (4)]))); (yyval.node) = (Node *) n; } -#line 37884 "gram.c" /* yacc.c:1646 */ break; case 1501: -#line 10343 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10343 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); - n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[-1]))); + n->query = (yyvsp[(3) - (3)].node); + n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[(2) - (3)]))); (yyval.node) = (Node *) n; } -#line 37895 "gram.c" /* yacc.c:1646 */ break; case 1502: -#line 10350 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10350 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); - n->query = (yyvsp[0].node); - n->options = (yyvsp[-2].list); + n->query = (yyvsp[(5) - (5)].node); + n->options = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *) n; } -#line 37906 "gram.c" /* yacc.c:1646 */ break; case 1512: -#line 10372 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10372 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].defelt)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } -#line 37914 "gram.c" /* yacc.c:1646 */ break; case 1513: -#line 10376 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10376 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); } -#line 37922 "gram.c" /* yacc.c:1646 */ break; case 1514: -#line 10383 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10383 "gram.y" { - (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } -#line 37930 "gram.c" /* yacc.c:1646 */ break; case 1515: -#line 10389 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 37936 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10389 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1516: -#line 10390 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10390 "gram.y" { (yyval.str) = "analyze"; } -#line 37942 "gram.c" /* yacc.c:1646 */ break; case 1517: -#line 10394 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeString((yyvsp[0].str)); } -#line 37948 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10394 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); } break; case 1518: -#line 10395 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[0].value); } -#line 37954 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10395 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); } break; case 1519: -#line 10396 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10396 "gram.y" { (yyval.node) = NULL; } -#line 37960 "gram.c" /* yacc.c:1646 */ break; case 1520: -#line 10407 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10407 "gram.y" { PrepareStmt *n = makeNode(PrepareStmt); - n->name = (yyvsp[-3].str); - n->argtypes = (yyvsp[-2].list); - n->query = (yyvsp[0].node); + n->name = (yyvsp[(2) - (5)].str); + n->argtypes = (yyvsp[(3) - (5)].list); + n->query = (yyvsp[(5) - (5)].node); (yyval.node) = (Node *) n; } -#line 37972 "gram.c" /* yacc.c:1646 */ break; case 1521: -#line 10416 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 37978 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10416 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 1522: -#line 10417 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10417 "gram.y" { (yyval.list) = NIL; } -#line 37984 "gram.c" /* yacc.c:1646 */ break; case 1527: -#line 10435 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10435 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); - n->name = (yyvsp[-1].str); - n->params = (yyvsp[0].list); + n->name = (yyvsp[(2) - (3)].str); + n->params = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; } -#line 37995 "gram.c" /* yacc.c:1646 */ break; case 1528: -#line 10443 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10443 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ExecuteStmt *n = makeNode(ExecuteStmt); - n->name = (yyvsp[-2].str); - n->params = (yyvsp[-1].list); + n->name = (yyvsp[(7) - (9)].str); + n->params = (yyvsp[(8) - (9)].list); ctas->query = (Node *) n; - ctas->into = (yyvsp[-5].into); + ctas->into = (yyvsp[(4) - (9)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; /* cram additional flags into the IntoClause */ - (yyvsp[-5].into)->rel->relpersistence = (yyvsp[-7].ival); - (yyvsp[-5].into)->skipData = !((yyvsp[0].boolean)); + (yyvsp[(4) - (9)].into)->rel->relpersistence = (yyvsp[(2) - (9)].ival); + (yyvsp[(4) - (9)].into)->skipData = !((yyvsp[(9) - (9)].boolean)); (yyval.node) = (Node *) ctas; } -#line 38014 "gram.c" /* yacc.c:1646 */ break; case 1529: -#line 10459 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 38020 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10459 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 1530: -#line 10460 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10460 "gram.y" { (yyval.list) = NIL; } -#line 38026 "gram.c" /* yacc.c:1646 */ break; case 1531: -#line 10471 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10471 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; } -#line 38036 "gram.c" /* yacc.c:1646 */ break; case 1532: -#line 10477 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10477 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; } -#line 38046 "gram.c" /* yacc.c:1646 */ break; case 1533: -#line 10483 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10483 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; } -#line 38056 "gram.c" /* yacc.c:1646 */ break; case 1534: -#line 10489 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10489 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; } -#line 38066 "gram.c" /* yacc.c:1646 */ break; case 1535: -#line 10506 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10506 "gram.y" { - (yyvsp[-2].istmt)->relation = (yyvsp[-3].range); - (yyvsp[-2].istmt)->onConflictClause = (yyvsp[-1].onconflict); - (yyvsp[-2].istmt)->returningList = (yyvsp[0].list); - (yyvsp[-2].istmt)->withClause = (yyvsp[-6].with); - (yyval.node) = (Node *) (yyvsp[-2].istmt); + (yyvsp[(5) - (7)].istmt)->relation = (yyvsp[(4) - (7)].range); + (yyvsp[(5) - (7)].istmt)->onConflictClause = (yyvsp[(6) - (7)].onconflict); + (yyvsp[(5) - (7)].istmt)->returningList = (yyvsp[(7) - (7)].list); + (yyvsp[(5) - (7)].istmt)->withClause = (yyvsp[(1) - (7)].with); + (yyval.node) = (Node *) (yyvsp[(5) - (7)].istmt); } -#line 38078 "gram.c" /* yacc.c:1646 */ break; case 1536: -#line 10523 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10523 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(1) - (1)].range); } -#line 38086 "gram.c" /* yacc.c:1646 */ break; case 1537: -#line 10527 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10527 "gram.y" { - (yyvsp[-2].range)->alias = makeAlias((yyvsp[0].str), NIL); - (yyval.range) = (yyvsp[-2].range); + (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); + (yyval.range) = (yyvsp[(1) - (3)].range); } -#line 38095 "gram.c" /* yacc.c:1646 */ break; case 1538: -#line 10535 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10535 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; - (yyval.istmt)->selectStmt = (yyvsp[0].node); + (yyval.istmt)->selectStmt = (yyvsp[(1) - (1)].node); } -#line 38105 "gram.c" /* yacc.c:1646 */ break; case 1539: -#line 10541 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10541 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; - (yyval.istmt)->override = (yyvsp[-2].ival); - (yyval.istmt)->selectStmt = (yyvsp[0].node); + (yyval.istmt)->override = (yyvsp[(2) - (4)].ival); + (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); } -#line 38116 "gram.c" /* yacc.c:1646 */ break; case 1540: -#line 10548 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10548 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); - (yyval.istmt)->cols = (yyvsp[-2].list); - (yyval.istmt)->selectStmt = (yyvsp[0].node); + (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); + (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); } -#line 38126 "gram.c" /* yacc.c:1646 */ break; case 1541: -#line 10554 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10554 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); - (yyval.istmt)->cols = (yyvsp[-5].list); - (yyval.istmt)->override = (yyvsp[-2].ival); - (yyval.istmt)->selectStmt = (yyvsp[0].node); + (yyval.istmt)->cols = (yyvsp[(2) - (7)].list); + (yyval.istmt)->override = (yyvsp[(5) - (7)].ival); + (yyval.istmt)->selectStmt = (yyvsp[(7) - (7)].node); } -#line 38137 "gram.c" /* yacc.c:1646 */ break; case 1542: -#line 10561 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10561 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = NULL; } -#line 38147 "gram.c" /* yacc.c:1646 */ break; case 1543: -#line 10569 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10569 "gram.y" { (yyval.ival) = OVERRIDING_USER_VALUE; } -#line 38153 "gram.c" /* yacc.c:1646 */ break; case 1544: -#line 10570 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10570 "gram.y" { (yyval.ival) = OVERRIDING_SYSTEM_VALUE; } -#line 38159 "gram.c" /* yacc.c:1646 */ break; case 1545: -#line 10575 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 38165 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10575 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; case 1546: -#line 10577 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } -#line 38171 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10577 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } break; case 1547: -#line 10582 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10582 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[-1].str); - (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.target)->name = (yyvsp[(1) - (2)].str); + (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.target)->val = NULL; - (yyval.target)->location = (yylsp[-1]); + (yyval.target)->location = (yylsp[(1) - (2)]); } -#line 38183 "gram.c" /* yacc.c:1646 */ break; case 1548: -#line 10593 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10593 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_UPDATE; - (yyval.onconflict)->infer = (yyvsp[-5].infer); - (yyval.onconflict)->targetList = (yyvsp[-1].list); - (yyval.onconflict)->whereClause = (yyvsp[0].node); - (yyval.onconflict)->location = (yylsp[-7]); + (yyval.onconflict)->infer = (yyvsp[(3) - (8)].infer); + (yyval.onconflict)->targetList = (yyvsp[(7) - (8)].list); + (yyval.onconflict)->whereClause = (yyvsp[(8) - (8)].node); + (yyval.onconflict)->location = (yylsp[(1) - (8)]); } -#line 38196 "gram.c" /* yacc.c:1646 */ break; case 1549: -#line 10603 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10603 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_NOTHING; - (yyval.onconflict)->infer = (yyvsp[-2].infer); + (yyval.onconflict)->infer = (yyvsp[(3) - (5)].infer); (yyval.onconflict)->targetList = NIL; (yyval.onconflict)->whereClause = NULL; - (yyval.onconflict)->location = (yylsp[-4]); + (yyval.onconflict)->location = (yylsp[(1) - (5)]); } -#line 38209 "gram.c" /* yacc.c:1646 */ break; case 1550: -#line 10612 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10612 "gram.y" { (yyval.onconflict) = NULL; } -#line 38217 "gram.c" /* yacc.c:1646 */ break; case 1551: -#line 10619 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10619 "gram.y" { (yyval.infer) = makeNode(InferClause); - (yyval.infer)->indexElems = (yyvsp[-2].list); - (yyval.infer)->whereClause = (yyvsp[0].node); + (yyval.infer)->indexElems = (yyvsp[(2) - (4)].list); + (yyval.infer)->whereClause = (yyvsp[(4) - (4)].node); (yyval.infer)->conname = NULL; - (yyval.infer)->location = (yylsp[-3]); + (yyval.infer)->location = (yylsp[(1) - (4)]); } -#line 38229 "gram.c" /* yacc.c:1646 */ break; case 1552: -#line 10628 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10628 "gram.y" { (yyval.infer) = makeNode(InferClause); (yyval.infer)->indexElems = NIL; (yyval.infer)->whereClause = NULL; - (yyval.infer)->conname = (yyvsp[0].str); - (yyval.infer)->location = (yylsp[-2]); + (yyval.infer)->conname = (yyvsp[(3) - (3)].str); + (yyval.infer)->location = (yylsp[(1) - (3)]); } -#line 38241 "gram.c" /* yacc.c:1646 */ break; case 1553: -#line 10636 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10636 "gram.y" { (yyval.infer) = NULL; } -#line 38249 "gram.c" /* yacc.c:1646 */ break; case 1554: -#line 10642 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 38255 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10642 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 1555: -#line 10643 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10643 "gram.y" { (yyval.list) = NIL; } -#line 38261 "gram.c" /* yacc.c:1646 */ break; case 1556: -#line 10656 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10656 "gram.y" { DeleteStmt *n = makeNode(DeleteStmt); - n->relation = (yyvsp[-3].range); - n->usingClause = (yyvsp[-2].list); - n->whereClause = (yyvsp[-1].node); - n->returningList = (yyvsp[0].list); - n->withClause = (yyvsp[-6].with); + n->relation = (yyvsp[(4) - (7)].range); + n->usingClause = (yyvsp[(5) - (7)].list); + n->whereClause = (yyvsp[(6) - (7)].node); + n->returningList = (yyvsp[(7) - (7)].list); + n->withClause = (yyvsp[(1) - (7)].with); (yyval.node) = (Node *)n; } -#line 38275 "gram.c" /* yacc.c:1646 */ break; case 1557: -#line 10668 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 38281 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10668 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 1558: -#line 10669 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10669 "gram.y" { (yyval.list) = NIL; } -#line 38287 "gram.c" /* yacc.c:1646 */ break; case 1559: -#line 10681 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10681 "gram.y" { LockStmt *n = makeNode(LockStmt); - n->relations = (yyvsp[-2].list); - n->mode = (yyvsp[-1].ival); - n->nowait = (yyvsp[0].boolean); + n->relations = (yyvsp[(3) - (5)].list); + n->mode = (yyvsp[(4) - (5)].ival); + n->nowait = (yyvsp[(5) - (5)].boolean); (yyval.node) = (Node *)n; } -#line 38300 "gram.c" /* yacc.c:1646 */ break; case 1560: -#line 10691 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival); } -#line 38306 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10691 "gram.y" + { (yyval.ival) = (yyvsp[(2) - (3)].ival); } break; case 1561: -#line 10692 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10692 "gram.y" { (yyval.ival) = AccessExclusiveLock; } -#line 38312 "gram.c" /* yacc.c:1646 */ break; case 1562: -#line 10695 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10695 "gram.y" { (yyval.ival) = AccessShareLock; } -#line 38318 "gram.c" /* yacc.c:1646 */ break; case 1563: -#line 10696 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10696 "gram.y" { (yyval.ival) = RowShareLock; } -#line 38324 "gram.c" /* yacc.c:1646 */ break; case 1564: -#line 10697 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10697 "gram.y" { (yyval.ival) = RowExclusiveLock; } -#line 38330 "gram.c" /* yacc.c:1646 */ break; case 1565: -#line 10698 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10698 "gram.y" { (yyval.ival) = ShareUpdateExclusiveLock; } -#line 38336 "gram.c" /* yacc.c:1646 */ break; case 1566: -#line 10699 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10699 "gram.y" { (yyval.ival) = ShareLock; } -#line 38342 "gram.c" /* yacc.c:1646 */ break; case 1567: -#line 10700 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10700 "gram.y" { (yyval.ival) = ShareRowExclusiveLock; } -#line 38348 "gram.c" /* yacc.c:1646 */ break; case 1568: -#line 10701 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10701 "gram.y" { (yyval.ival) = ExclusiveLock; } -#line 38354 "gram.c" /* yacc.c:1646 */ break; case 1569: -#line 10702 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10702 "gram.y" { (yyval.ival) = AccessExclusiveLock; } -#line 38360 "gram.c" /* yacc.c:1646 */ break; case 1570: -#line 10705 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10705 "gram.y" { (yyval.boolean) = TRUE; } -#line 38366 "gram.c" /* yacc.c:1646 */ break; case 1571: -#line 10706 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10706 "gram.y" { (yyval.boolean) = FALSE; } -#line 38372 "gram.c" /* yacc.c:1646 */ break; case 1572: -#line 10710 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10710 "gram.y" { (yyval.ival) = LockWaitError; } -#line 38378 "gram.c" /* yacc.c:1646 */ break; case 1573: -#line 10711 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10711 "gram.y" { (yyval.ival) = LockWaitSkip; } -#line 38384 "gram.c" /* yacc.c:1646 */ break; case 1574: -#line 10712 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10712 "gram.y" { (yyval.ival) = LockWaitBlock; } -#line 38390 "gram.c" /* yacc.c:1646 */ break; case 1575: -#line 10728 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10728 "gram.y" { UpdateStmt *n = makeNode(UpdateStmt); - n->relation = (yyvsp[-5].range); - n->targetList = (yyvsp[-3].list); - n->fromClause = (yyvsp[-2].list); - n->whereClause = (yyvsp[-1].node); - n->returningList = (yyvsp[0].list); - n->withClause = (yyvsp[-7].with); + n->relation = (yyvsp[(3) - (8)].range); + n->targetList = (yyvsp[(5) - (8)].list); + n->fromClause = (yyvsp[(6) - (8)].list); + n->whereClause = (yyvsp[(7) - (8)].node); + n->returningList = (yyvsp[(8) - (8)].list); + n->withClause = (yyvsp[(1) - (8)].with); (yyval.node) = (Node *)n; } -#line 38405 "gram.c" /* yacc.c:1646 */ break; case 1576: -#line 10741 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 38411 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10741 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1577: -#line 10742 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_concat((yyvsp[-2].list),(yyvsp[0].list)); } -#line 38417 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10742 "gram.y" + { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); } break; case 1578: -#line 10747 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10747 "gram.y" { - (yyvsp[-2].target)->val = (Node *) (yyvsp[0].node); - (yyval.list) = list_make1((yyvsp[-2].target)); + (yyvsp[(1) - (3)].target)->val = (Node *) (yyvsp[(3) - (3)].node); + (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); } -#line 38426 "gram.c" /* yacc.c:1646 */ break; case 1579: -#line 10752 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10752 "gram.y" { - int ncolumns = list_length((yyvsp[-3].list)); + int ncolumns = list_length((yyvsp[(2) - (5)].list)); int i = 1; ListCell *col_cell; /* Create a MultiAssignRef source for each target */ - foreach(col_cell, (yyvsp[-3].list)) + foreach(col_cell, (yyvsp[(2) - (5)].list)) { ResTarget *res_col = (ResTarget *) lfirst(col_cell); MultiAssignRef *r = makeNode(MultiAssignRef); - r->source = (Node *) (yyvsp[0].node); + r->source = (Node *) (yyvsp[(5) - (5)].node); r->colno = i; r->ncolumns = ncolumns; res_col->val = (Node *) r; i++; } - (yyval.list) = (yyvsp[-3].list); + (yyval.list) = (yyvsp[(2) - (5)].list); } -#line 38451 "gram.c" /* yacc.c:1646 */ break; case 1580: -#line 10776 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10776 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[-1].str); - (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.target)->name = (yyvsp[(1) - (2)].str); + (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.target)->val = NULL; /* upper production sets this */ - (yyval.target)->location = (yylsp[-1]); + (yyval.target)->location = (yylsp[(1) - (2)]); } -#line 38463 "gram.c" /* yacc.c:1646 */ break; case 1581: -#line 10786 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 38469 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10786 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; case 1582: -#line 10787 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].target)); } -#line 38475 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10787 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); } break; case 1583: -#line 10798 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10798 "gram.y" { DeclareCursorStmt *n = makeNode(DeclareCursorStmt); - n->portalname = (yyvsp[-5].str); + n->portalname = (yyvsp[(2) - (7)].str); /* currently we always set FAST_PLAN option */ - n->options = (yyvsp[-4].ival) | (yyvsp[-2].ival) | CURSOR_OPT_FAST_PLAN; - n->query = (yyvsp[0].node); + n->options = (yyvsp[(3) - (7)].ival) | (yyvsp[(5) - (7)].ival) | CURSOR_OPT_FAST_PLAN; + n->query = (yyvsp[(7) - (7)].node); (yyval.node) = (Node *)n; } -#line 38488 "gram.c" /* yacc.c:1646 */ break; case 1584: -#line 10808 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 38494 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10808 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 1585: -#line 10811 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10811 "gram.y" { (yyval.ival) = 0; } -#line 38500 "gram.c" /* yacc.c:1646 */ break; case 1586: -#line 10812 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-2].ival) | CURSOR_OPT_NO_SCROLL; } -#line 38506 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10812 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (3)].ival) | CURSOR_OPT_NO_SCROLL; } break; case 1587: -#line 10813 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_SCROLL; } -#line 38512 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10813 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_SCROLL; } break; case 1588: -#line 10814 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_BINARY; } -#line 38518 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10814 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_BINARY; } break; case 1589: -#line 10815 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[-1].ival) | CURSOR_OPT_INSENSITIVE; } -#line 38524 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10815 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_INSENSITIVE; } break; case 1590: -#line 10818 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10818 "gram.y" { (yyval.ival) = 0; } -#line 38530 "gram.c" /* yacc.c:1646 */ break; case 1591: -#line 10819 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10819 "gram.y" { (yyval.ival) = CURSOR_OPT_HOLD; } -#line 38536 "gram.c" /* yacc.c:1646 */ break; case 1592: -#line 10820 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10820 "gram.y" { (yyval.ival) = 0; } -#line 38542 "gram.c" /* yacc.c:1646 */ break; case 1595: -#line 10873 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 38548 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10873 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 1596: -#line 10874 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 38554 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10874 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 1597: -#line 10889 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 38560 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10889 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1598: -#line 10891 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10891 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + insertSelectOptions((SelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, NULL, NULL, NULL, yyscanner); - (yyval.node) = (yyvsp[-1].node); + (yyval.node) = (yyvsp[(1) - (2)].node); } -#line 38571 "gram.c" /* yacc.c:1646 */ break; case 1599: -#line 10898 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10898 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), - list_nth((yyvsp[0].list), 0), list_nth((yyvsp[0].list), 1), + insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].list), + list_nth((yyvsp[(4) - (4)].list), 0), list_nth((yyvsp[(4) - (4)].list), 1), NULL, yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(1) - (4)].node); } -#line 38583 "gram.c" /* yacc.c:1646 */ break; case 1600: -#line 10906 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10906 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), - list_nth((yyvsp[-1].list), 0), list_nth((yyvsp[-1].list), 1), + insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(4) - (4)].list), + list_nth((yyvsp[(3) - (4)].list), 0), list_nth((yyvsp[(3) - (4)].list), 1), NULL, yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(1) - (4)].node); } -#line 38595 "gram.c" /* yacc.c:1646 */ break; case 1601: -#line 10914 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10914 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[0].node), NULL, NIL, + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, NULL, NULL, - (yyvsp[-1].with), + (yyvsp[(1) - (2)].with), yyscanner); - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(2) - (2)].node); } -#line 38607 "gram.c" /* yacc.c:1646 */ break; case 1602: -#line 10922 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10922 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].list), NIL, NULL, NULL, - (yyvsp[-2].with), + (yyvsp[(1) - (3)].with), yyscanner); - (yyval.node) = (yyvsp[-1].node); + (yyval.node) = (yyvsp[(2) - (3)].node); } -#line 38619 "gram.c" /* yacc.c:1646 */ break; case 1603: -#line 10930 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10930 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), - list_nth((yyvsp[0].list), 0), list_nth((yyvsp[0].list), 1), - (yyvsp[-4].with), + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].list), + list_nth((yyvsp[(5) - (5)].list), 0), list_nth((yyvsp[(5) - (5)].list), 1), + (yyvsp[(1) - (5)].with), yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(2) - (5)].node); } -#line 38631 "gram.c" /* yacc.c:1646 */ break; case 1604: -#line 10938 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10938 "gram.y" { - insertSelectOptions((SelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), - list_nth((yyvsp[-1].list), 0), list_nth((yyvsp[-1].list), 1), - (yyvsp[-4].with), + insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list), + list_nth((yyvsp[(4) - (5)].list), 0), list_nth((yyvsp[(4) - (5)].list), 1), + (yyvsp[(1) - (5)].with), yyscanner); - (yyval.node) = (yyvsp[-3].node); + (yyval.node) = (yyvsp[(2) - (5)].node); } -#line 38643 "gram.c" /* yacc.c:1646 */ break; case 1605: -#line 10948 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 38649 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10948 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1606: -#line 10949 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 38655 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10949 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1607: -#line 10979 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10979 "gram.y" { SelectStmt *n = makeNode(SelectStmt); - n->targetList = (yyvsp[-6].list); - n->intoClause = (yyvsp[-5].into); - n->fromClause = (yyvsp[-4].list); - n->whereClause = (yyvsp[-3].node); - n->groupClause = (yyvsp[-2].list); - n->havingClause = (yyvsp[-1].node); - n->windowClause = (yyvsp[0].list); + n->targetList = (yyvsp[(3) - (9)].list); + n->intoClause = (yyvsp[(4) - (9)].into); + n->fromClause = (yyvsp[(5) - (9)].list); + n->whereClause = (yyvsp[(6) - (9)].node); + n->groupClause = (yyvsp[(7) - (9)].list); + n->havingClause = (yyvsp[(8) - (9)].node); + n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; } -#line 38671 "gram.c" /* yacc.c:1646 */ break; case 1608: -#line 10993 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 10993 "gram.y" { SelectStmt *n = makeNode(SelectStmt); - n->distinctClause = (yyvsp[-7].list); - n->targetList = (yyvsp[-6].list); - n->intoClause = (yyvsp[-5].into); - n->fromClause = (yyvsp[-4].list); - n->whereClause = (yyvsp[-3].node); - n->groupClause = (yyvsp[-2].list); - n->havingClause = (yyvsp[-1].node); - n->windowClause = (yyvsp[0].list); + n->distinctClause = (yyvsp[(2) - (9)].list); + n->targetList = (yyvsp[(3) - (9)].list); + n->intoClause = (yyvsp[(4) - (9)].into); + n->fromClause = (yyvsp[(5) - (9)].list); + n->whereClause = (yyvsp[(6) - (9)].node); + n->groupClause = (yyvsp[(7) - (9)].list); + n->havingClause = (yyvsp[(8) - (9)].node); + n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; } -#line 38688 "gram.c" /* yacc.c:1646 */ break; case 1609: -#line 11005 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 38694 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11005 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1610: -#line 11007 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11007 "gram.y" { /* same as SELECT * FROM relation_expr */ ColumnRef *cr = makeNode(ColumnRef); @@ -38710,111 +40098,111 @@ yyreduce: rt->location = -1; n->targetList = list_make1(rt); - n->fromClause = list_make1((yyvsp[0].range)); + n->fromClause = list_make1((yyvsp[(2) - (2)].range)); (yyval.node) = (Node *)n; } -#line 38717 "gram.c" /* yacc.c:1646 */ break; case 1611: -#line 11026 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11026 "gram.y" { - (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 38725 "gram.c" /* yacc.c:1646 */ break; case 1612: -#line 11030 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11030 "gram.y" { - (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 38733 "gram.c" /* yacc.c:1646 */ break; case 1613: -#line 11034 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11034 "gram.y" { - (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 38741 "gram.c" /* yacc.c:1646 */ break; case 1614: -#line 11051 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11051 "gram.y" { (yyval.with) = makeNode(WithClause); - (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->ctes = (yyvsp[(2) - (2)].list); (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[-1]); + (yyval.with)->location = (yylsp[(1) - (2)]); } -#line 38752 "gram.c" /* yacc.c:1646 */ break; case 1615: -#line 11058 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11058 "gram.y" { (yyval.with) = makeNode(WithClause); - (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->ctes = (yyvsp[(2) - (2)].list); (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[-1]); + (yyval.with)->location = (yylsp[(1) - (2)]); } -#line 38763 "gram.c" /* yacc.c:1646 */ break; case 1616: -#line 11065 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11065 "gram.y" { (yyval.with) = makeNode(WithClause); - (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->ctes = (yyvsp[(3) - (3)].list); (yyval.with)->recursive = true; - (yyval.with)->location = (yylsp[-2]); + (yyval.with)->location = (yylsp[(1) - (3)]); } -#line 38774 "gram.c" /* yacc.c:1646 */ break; case 1617: -#line 11074 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 38780 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11074 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 1618: -#line 11075 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 38786 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11075 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 1619: -#line 11079 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11079 "gram.y" { CommonTableExpr *n = makeNode(CommonTableExpr); - n->ctename = (yyvsp[-5].str); - n->aliascolnames = (yyvsp[-4].list); - n->ctequery = (yyvsp[-1].node); - n->location = (yylsp[-5]); + n->ctename = (yyvsp[(1) - (6)].str); + n->aliascolnames = (yyvsp[(2) - (6)].list); + n->ctequery = (yyvsp[(5) - (6)].node); + n->location = (yylsp[(1) - (6)]); (yyval.node) = (Node *) n; } -#line 38799 "gram.c" /* yacc.c:1646 */ break; case 1620: -#line 11090 "gram.y" /* yacc.c:1646 */ - { (yyval.with) = (yyvsp[0].with); } -#line 38805 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11090 "gram.y" + { (yyval.with) = (yyvsp[(1) - (1)].with); } break; case 1621: -#line 11091 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11091 "gram.y" { (yyval.with) = NULL; } -#line 38811 "gram.c" /* yacc.c:1646 */ break; case 1622: -#line 11096 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11096 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[0].range); + (yyval.into)->rel = (yyvsp[(2) - (2)].range); (yyval.into)->colNames = NIL; (yyval.into)->options = NIL; (yyval.into)->onCommit = ONCOMMIT_NOOP; @@ -38822,652 +40210,652 @@ yyreduce: (yyval.into)->viewQuery = NULL; (yyval.into)->skipData = false; } -#line 38826 "gram.c" /* yacc.c:1646 */ break; case 1623: -#line 11107 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11107 "gram.y" { (yyval.into) = NULL; } -#line 38832 "gram.c" /* yacc.c:1646 */ break; case 1624: -#line 11116 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11116 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 38841 "gram.c" /* yacc.c:1646 */ break; case 1625: -#line 11121 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11121 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 38850 "gram.c" /* yacc.c:1646 */ break; case 1626: -#line 11126 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11126 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 38859 "gram.c" /* yacc.c:1646 */ break; case 1627: -#line 11131 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11131 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 38868 "gram.c" /* yacc.c:1646 */ break; case 1628: -#line 11136 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11136 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-3])))); - (yyval.range) = (yyvsp[0].range); + parser_errposition((yylsp[(1) - (4)])))); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 38880 "gram.c" /* yacc.c:1646 */ break; case 1629: -#line 11144 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11144 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[-3])))); - (yyval.range) = (yyvsp[0].range); + parser_errposition((yylsp[(1) - (4)])))); + (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; } -#line 38892 "gram.c" /* yacc.c:1646 */ break; case 1630: -#line 11152 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11152 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_UNLOGGED; } -#line 38901 "gram.c" /* yacc.c:1646 */ break; case 1631: -#line 11157 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11157 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; } -#line 38910 "gram.c" /* yacc.c:1646 */ break; case 1632: -#line 11162 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11162 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; } -#line 38919 "gram.c" /* yacc.c:1646 */ break; case 1633: -#line 11168 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11168 "gram.y" {} -#line 38925 "gram.c" /* yacc.c:1646 */ break; case 1634: -#line 11169 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11169 "gram.y" {} -#line 38931 "gram.c" /* yacc.c:1646 */ break; case 1635: -#line 11173 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11173 "gram.y" { (yyval.boolean) = TRUE; } -#line 38937 "gram.c" /* yacc.c:1646 */ break; case 1636: -#line 11174 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11174 "gram.y" { (yyval.boolean) = FALSE; } -#line 38943 "gram.c" /* yacc.c:1646 */ break; case 1637: -#line 11175 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11175 "gram.y" { (yyval.boolean) = FALSE; } -#line 38949 "gram.c" /* yacc.c:1646 */ break; case 1638: -#line 11182 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11182 "gram.y" { (yyval.list) = list_make1(NIL); } -#line 38955 "gram.c" /* yacc.c:1646 */ break; case 1639: -#line 11183 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 38961 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11183 "gram.y" + { (yyval.list) = (yyvsp[(4) - (5)].list); } break; case 1640: -#line 11187 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11187 "gram.y" { (yyval.list) = NIL;} -#line 38967 "gram.c" /* yacc.c:1646 */ break; case 1641: -#line 11188 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11188 "gram.y" { (yyval.list) = NIL; } -#line 38973 "gram.c" /* yacc.c:1646 */ break; case 1642: -#line 11192 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list);} -#line 38979 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11192 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list);} break; case 1643: -#line 11193 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11193 "gram.y" { (yyval.list) = NIL; } -#line 38985 "gram.c" /* yacc.c:1646 */ break; case 1644: -#line 11197 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 38991 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11197 "gram.y" + { (yyval.list) = (yyvsp[(3) - (3)].list); } break; case 1645: -#line 11201 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].sortby)); } -#line 38997 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11201 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); } break; case 1646: -#line 11202 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].sortby)); } -#line 39003 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11202 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); } break; case 1647: -#line 11206 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11206 "gram.y" { (yyval.sortby) = makeNode(SortBy); - (yyval.sortby)->node = (yyvsp[-3].node); + (yyval.sortby)->node = (yyvsp[(1) - (4)].node); (yyval.sortby)->sortby_dir = SORTBY_USING; - (yyval.sortby)->sortby_nulls = (yyvsp[0].ival); - (yyval.sortby)->useOp = (yyvsp[-1].list); - (yyval.sortby)->location = (yylsp[-1]); + (yyval.sortby)->sortby_nulls = (yyvsp[(4) - (4)].ival); + (yyval.sortby)->useOp = (yyvsp[(3) - (4)].list); + (yyval.sortby)->location = (yylsp[(3) - (4)]); } -#line 39016 "gram.c" /* yacc.c:1646 */ break; case 1648: -#line 11215 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11215 "gram.y" { (yyval.sortby) = makeNode(SortBy); - (yyval.sortby)->node = (yyvsp[-2].node); - (yyval.sortby)->sortby_dir = (yyvsp[-1].ival); - (yyval.sortby)->sortby_nulls = (yyvsp[0].ival); + (yyval.sortby)->node = (yyvsp[(1) - (3)].node); + (yyval.sortby)->sortby_dir = (yyvsp[(2) - (3)].ival); + (yyval.sortby)->sortby_nulls = (yyvsp[(3) - (3)].ival); (yyval.sortby)->useOp = NIL; (yyval.sortby)->location = -1; /* no operator */ } -#line 39029 "gram.c" /* yacc.c:1646 */ break; case 1649: -#line 11227 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-1].node)); } -#line 39035 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11227 "gram.y" + { (yyval.list) = list_make2((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].node)); } break; case 1650: -#line 11228 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); } -#line 39041 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11228 "gram.y" + { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; case 1651: -#line 11229 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2(NULL, (yyvsp[0].node)); } -#line 39047 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11229 "gram.y" + { (yyval.list) = list_make2(NULL, (yyvsp[(1) - (1)].node)); } break; case 1652: -#line 11230 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[0].node), NULL); } -#line 39053 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11230 "gram.y" + { (yyval.list) = list_make2((yyvsp[(1) - (1)].node), NULL); } break; case 1653: -#line 11234 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 39059 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11234 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1654: -#line 11235 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11235 "gram.y" { (yyval.list) = list_make2(NULL,NULL); } -#line 39065 "gram.c" /* yacc.c:1646 */ break; case 1655: -#line 11240 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39071 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11240 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 1656: -#line 11242 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11242 "gram.y" { /* Disabled because it was too confusing, bjm 2002-02-18 */ ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("LIMIT #,# syntax is not supported"), errhint("Use separate LIMIT and OFFSET clauses."), - parser_errposition((yylsp[-3])))); + parser_errposition((yylsp[(1) - (4)])))); } -#line 39084 "gram.c" /* yacc.c:1646 */ break; case 1657: -#line 11252 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-2].node); } -#line 39090 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11252 "gram.y" + { (yyval.node) = (yyvsp[(3) - (5)].node); } break; case 1658: -#line 11257 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39096 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11257 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 1659: -#line 11260 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 39102 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11260 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 1660: -#line 11264 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39108 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11264 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1661: -#line 11266 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11266 "gram.y" { /* LIMIT ALL is represented as a NULL constant */ - (yyval.node) = makeNullAConst((yylsp[0])); + (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); } -#line 39117 "gram.c" /* yacc.c:1646 */ break; case 1662: -#line 11273 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39123 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11273 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1663: -#line 11283 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); } -#line 39129 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11283 "gram.y" + { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); } break; case 1664: -#line 11284 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 39135 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11284 "gram.y" + { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 1665: -#line 11285 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11285 "gram.y" { (yyval.node) = makeIntConst(1, -1); } -#line 39141 "gram.c" /* yacc.c:1646 */ break; case 1666: -#line 11293 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39147 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11293 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1667: -#line 11297 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11297 "gram.y" { (yyval.ival) = 0; } -#line 39153 "gram.c" /* yacc.c:1646 */ break; case 1668: -#line 11298 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11298 "gram.y" { (yyval.ival) = 0; } -#line 39159 "gram.c" /* yacc.c:1646 */ break; case 1669: -#line 11301 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11301 "gram.y" { (yyval.ival) = 0; } -#line 39165 "gram.c" /* yacc.c:1646 */ break; case 1670: -#line 11302 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11302 "gram.y" { (yyval.ival) = 0; } -#line 39171 "gram.c" /* yacc.c:1646 */ break; case 1671: -#line 11327 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 39177 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11327 "gram.y" + { (yyval.list) = (yyvsp[(3) - (3)].list); } break; case 1672: -#line 11328 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11328 "gram.y" { (yyval.list) = NIL; } -#line 39183 "gram.c" /* yacc.c:1646 */ break; case 1673: -#line 11332 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 39189 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11332 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 1674: -#line 11333 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].node)); } -#line 39195 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11333 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); } break; case 1675: -#line 11337 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39201 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11337 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1676: -#line 11338 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39207 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11338 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1677: -#line 11339 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39213 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11339 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1678: -#line 11340 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39219 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11340 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1679: -#line 11341 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39225 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11341 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1680: -#line 11346 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11346 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[-1])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); } -#line 39233 "gram.c" /* yacc.c:1646 */ break; case 1681: -#line 11359 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11359 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 39241 "gram.c" /* yacc.c:1646 */ break; case 1682: -#line 11366 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11366 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 39249 "gram.c" /* yacc.c:1646 */ break; case 1683: -#line 11373 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11373 "gram.y" { - (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 39257 "gram.c" /* yacc.c:1646 */ break; case 1684: -#line 11379 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39263 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11379 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 1685: -#line 11380 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11380 "gram.y" { (yyval.node) = NULL; } -#line 39269 "gram.c" /* yacc.c:1646 */ break; case 1686: -#line 11384 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 39275 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11384 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1687: -#line 11385 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11385 "gram.y" { (yyval.list) = NIL; } -#line 39281 "gram.c" /* yacc.c:1646 */ break; case 1688: -#line 11389 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 39287 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11389 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1689: -#line 11390 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11390 "gram.y" { (yyval.list) = NIL; } -#line 39293 "gram.c" /* yacc.c:1646 */ break; case 1690: -#line 11394 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 39299 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11394 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 1691: -#line 11395 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 39305 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11395 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; case 1692: -#line 11400 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11400 "gram.y" { LockingClause *n = makeNode(LockingClause); - n->lockedRels = (yyvsp[-1].list); - n->strength = (yyvsp[-2].ival); - n->waitPolicy = (yyvsp[0].ival); + n->lockedRels = (yyvsp[(2) - (3)].list); + n->strength = (yyvsp[(1) - (3)].ival); + n->waitPolicy = (yyvsp[(3) - (3)].ival); (yyval.node) = (Node *) n; } -#line 39317 "gram.c" /* yacc.c:1646 */ break; case 1693: -#line 11410 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11410 "gram.y" { (yyval.ival) = LCS_FORUPDATE; } -#line 39323 "gram.c" /* yacc.c:1646 */ break; case 1694: -#line 11411 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11411 "gram.y" { (yyval.ival) = LCS_FORNOKEYUPDATE; } -#line 39329 "gram.c" /* yacc.c:1646 */ break; case 1695: -#line 11412 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11412 "gram.y" { (yyval.ival) = LCS_FORSHARE; } -#line 39335 "gram.c" /* yacc.c:1646 */ break; case 1696: -#line 11413 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11413 "gram.y" { (yyval.ival) = LCS_FORKEYSHARE; } -#line 39341 "gram.c" /* yacc.c:1646 */ break; case 1697: -#line 11417 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 39347 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11417 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 1698: -#line 11418 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11418 "gram.y" { (yyval.list) = NIL; } -#line 39353 "gram.c" /* yacc.c:1646 */ break; case 1699: -#line 11429 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11429 "gram.y" { SelectStmt *n = makeNode(SelectStmt); - n->valuesLists = list_make1((yyvsp[-1].list)); + n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); (yyval.node) = (Node *) n; } -#line 39363 "gram.c" /* yacc.c:1646 */ break; case 1700: -#line 11435 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11435 "gram.y" { - SelectStmt *n = (SelectStmt *) (yyvsp[-4].node); - n->valuesLists = lappend(n->valuesLists, (yyvsp[-1].list)); + SelectStmt *n = (SelectStmt *) (yyvsp[(1) - (5)].node); + n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); (yyval.node) = (Node *) n; } -#line 39373 "gram.c" /* yacc.c:1646 */ break; case 1701: -#line 11452 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 39379 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11452 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 1702: -#line 11453 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11453 "gram.y" { (yyval.list) = NIL; } -#line 39385 "gram.c" /* yacc.c:1646 */ break; case 1703: -#line 11457 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 39391 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11457 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 1704: -#line 11458 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 39397 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11458 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 1705: -#line 11465 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11465 "gram.y" { - (yyvsp[-1].range)->alias = (yyvsp[0].alias); - (yyval.node) = (Node *) (yyvsp[-1].range); + (yyvsp[(1) - (2)].range)->alias = (yyvsp[(2) - (2)].alias); + (yyval.node) = (Node *) (yyvsp[(1) - (2)].range); } -#line 39406 "gram.c" /* yacc.c:1646 */ break; case 1706: -#line 11470 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11470 "gram.y" { - RangeTableSample *n = (RangeTableSample *) (yyvsp[0].node); - (yyvsp[-2].range)->alias = (yyvsp[-1].alias); + RangeTableSample *n = (RangeTableSample *) (yyvsp[(3) - (3)].node); + (yyvsp[(1) - (3)].range)->alias = (yyvsp[(2) - (3)].alias); /* relation_expr goes inside the RangeTableSample node */ - n->relation = (Node *) (yyvsp[-2].range); + n->relation = (Node *) (yyvsp[(1) - (3)].range); (yyval.node) = (Node *) n; } -#line 39418 "gram.c" /* yacc.c:1646 */ break; case 1707: -#line 11478 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11478 "gram.y" { - RangeFunction *n = (RangeFunction *) (yyvsp[-1].node); - n->alias = linitial((yyvsp[0].list)); - n->coldeflist = lsecond((yyvsp[0].list)); + RangeFunction *n = (RangeFunction *) (yyvsp[(1) - (2)].node); + n->alias = linitial((yyvsp[(2) - (2)].list)); + n->coldeflist = lsecond((yyvsp[(2) - (2)].list)); (yyval.node) = (Node *) n; } -#line 39429 "gram.c" /* yacc.c:1646 */ break; case 1708: -#line 11485 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11485 "gram.y" { - RangeFunction *n = (RangeFunction *) (yyvsp[-1].node); + RangeFunction *n = (RangeFunction *) (yyvsp[(2) - (3)].node); n->lateral = true; - n->alias = linitial((yyvsp[0].list)); - n->coldeflist = lsecond((yyvsp[0].list)); + n->alias = linitial((yyvsp[(3) - (3)].list)); + n->coldeflist = lsecond((yyvsp[(3) - (3)].list)); (yyval.node) = (Node *) n; } -#line 39441 "gram.c" /* yacc.c:1646 */ break; case 1709: -#line 11493 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11493 "gram.y" { - RangeTableFunc *n = (RangeTableFunc *) (yyvsp[-1].node); - n->alias = (yyvsp[0].alias); + RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(1) - (2)].node); + n->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) n; } -#line 39451 "gram.c" /* yacc.c:1646 */ break; case 1710: -#line 11499 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11499 "gram.y" { - RangeTableFunc *n = (RangeTableFunc *) (yyvsp[-1].node); + RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(2) - (3)].node); n->lateral = true; - n->alias = (yyvsp[0].alias); + n->alias = (yyvsp[(3) - (3)].alias); (yyval.node) = (Node *) n; } -#line 39462 "gram.c" /* yacc.c:1646 */ break; case 1711: -#line 11506 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11506 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = false; - n->subquery = (yyvsp[-1].node); - n->alias = (yyvsp[0].alias); + n->subquery = (yyvsp[(1) - (2)].node); + n->alias = (yyvsp[(2) - (2)].alias); /* * The SQL spec does not permit a subselect * () without an alias clause, @@ -39479,557 +40867,557 @@ yyreduce: * However, it does seem like a good idea to emit * an error message that's better than "syntax error". */ - if ((yyvsp[0].alias) == NULL) + if ((yyvsp[(2) - (2)].alias) == NULL) { - if (IsA((yyvsp[-1].node), SelectStmt) && - ((SelectStmt *) (yyvsp[-1].node))->valuesLists) + if (IsA((yyvsp[(1) - (2)].node), SelectStmt) && + ((SelectStmt *) (yyvsp[(1) - (2)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); } (yyval.node) = (Node *) n; } -#line 39501 "gram.c" /* yacc.c:1646 */ break; case 1712: -#line 11541 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11541 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = true; - n->subquery = (yyvsp[-1].node); - n->alias = (yyvsp[0].alias); + n->subquery = (yyvsp[(2) - (3)].node); + n->alias = (yyvsp[(3) - (3)].alias); /* same comment as above */ - if ((yyvsp[0].alias) == NULL) + if ((yyvsp[(3) - (3)].alias) == NULL) { - if (IsA((yyvsp[-1].node), SelectStmt) && - ((SelectStmt *) (yyvsp[-1].node))->valuesLists) + if (IsA((yyvsp[(2) - (3)].node), SelectStmt) && + ((SelectStmt *) (yyvsp[(2) - (3)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(2) - (3)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(2) - (3)])))); } (yyval.node) = (Node *) n; } -#line 39530 "gram.c" /* yacc.c:1646 */ break; case 1713: -#line 11566 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11566 "gram.y" { - (yyval.node) = (Node *) (yyvsp[0].jexpr); + (yyval.node) = (Node *) (yyvsp[(1) - (1)].jexpr); } -#line 39538 "gram.c" /* yacc.c:1646 */ break; case 1714: -#line 11570 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11570 "gram.y" { - (yyvsp[-2].jexpr)->alias = (yyvsp[0].alias); - (yyval.node) = (Node *) (yyvsp[-2].jexpr); + (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); + (yyval.node) = (Node *) (yyvsp[(2) - (4)].jexpr); } -#line 39547 "gram.c" /* yacc.c:1646 */ break; case 1715: -#line 11596 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11596 "gram.y" { - (yyval.jexpr) = (yyvsp[-1].jexpr); + (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); } -#line 39555 "gram.c" /* yacc.c:1646 */ break; case 1716: -#line 11600 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11600 "gram.y" { /* CROSS JOIN is same as unqualified inner join */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = FALSE; - n->larg = (yyvsp[-3].node); - n->rarg = (yyvsp[0].node); + n->larg = (yyvsp[(1) - (4)].node); + n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; n->quals = NULL; (yyval.jexpr) = n; } -#line 39571 "gram.c" /* yacc.c:1646 */ break; case 1717: -#line 11612 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11612 "gram.y" { JoinExpr *n = makeNode(JoinExpr); - n->jointype = (yyvsp[-3].jtype); + n->jointype = (yyvsp[(2) - (5)].jtype); n->isNatural = FALSE; - n->larg = (yyvsp[-4].node); - n->rarg = (yyvsp[-1].node); - if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), List)) - n->usingClause = (List *) (yyvsp[0].node); /* USING clause */ + n->larg = (yyvsp[(1) - (5)].node); + n->rarg = (yyvsp[(4) - (5)].node); + if ((yyvsp[(5) - (5)].node) != NULL && IsA((yyvsp[(5) - (5)].node), List)) + n->usingClause = (List *) (yyvsp[(5) - (5)].node); /* USING clause */ else - n->quals = (yyvsp[0].node); /* ON clause */ + n->quals = (yyvsp[(5) - (5)].node); /* ON clause */ (yyval.jexpr) = n; } -#line 39588 "gram.c" /* yacc.c:1646 */ break; case 1718: -#line 11625 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11625 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = FALSE; - n->larg = (yyvsp[-3].node); - n->rarg = (yyvsp[-1].node); - if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), List)) - n->usingClause = (List *) (yyvsp[0].node); /* USING clause */ + n->larg = (yyvsp[(1) - (4)].node); + n->rarg = (yyvsp[(3) - (4)].node); + if ((yyvsp[(4) - (4)].node) != NULL && IsA((yyvsp[(4) - (4)].node), List)) + n->usingClause = (List *) (yyvsp[(4) - (4)].node); /* USING clause */ else - n->quals = (yyvsp[0].node); /* ON clause */ + n->quals = (yyvsp[(4) - (4)].node); /* ON clause */ (yyval.jexpr) = n; } -#line 39606 "gram.c" /* yacc.c:1646 */ break; case 1719: -#line 11639 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11639 "gram.y" { JoinExpr *n = makeNode(JoinExpr); - n->jointype = (yyvsp[-2].jtype); + n->jointype = (yyvsp[(3) - (5)].jtype); n->isNatural = TRUE; - n->larg = (yyvsp[-4].node); - n->rarg = (yyvsp[0].node); + n->larg = (yyvsp[(1) - (5)].node); + n->rarg = (yyvsp[(5) - (5)].node); n->usingClause = NIL; /* figure out which columns later... */ n->quals = NULL; /* fill later */ (yyval.jexpr) = n; } -#line 39621 "gram.c" /* yacc.c:1646 */ break; case 1720: -#line 11650 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11650 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = TRUE; - n->larg = (yyvsp[-3].node); - n->rarg = (yyvsp[0].node); + n->larg = (yyvsp[(1) - (4)].node); + n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; /* figure out which columns later... */ n->quals = NULL; /* fill later */ (yyval.jexpr) = n; } -#line 39637 "gram.c" /* yacc.c:1646 */ break; case 1721: -#line 11665 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11665 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[-3].str); - (yyval.alias)->colnames = (yyvsp[-1].list); + (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); + (yyval.alias)->colnames = (yyvsp[(4) - (5)].list); } -#line 39647 "gram.c" /* yacc.c:1646 */ break; case 1722: -#line 11671 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11671 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[0].str); + (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); } -#line 39656 "gram.c" /* yacc.c:1646 */ break; case 1723: -#line 11676 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11676 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[-3].str); - (yyval.alias)->colnames = (yyvsp[-1].list); + (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); + (yyval.alias)->colnames = (yyvsp[(3) - (4)].list); } -#line 39666 "gram.c" /* yacc.c:1646 */ break; case 1724: -#line 11682 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11682 "gram.y" { (yyval.alias) = makeNode(Alias); - (yyval.alias)->aliasname = (yyvsp[0].str); + (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); } -#line 39675 "gram.c" /* yacc.c:1646 */ break; case 1725: -#line 11688 "gram.y" /* yacc.c:1646 */ - { (yyval.alias) = (yyvsp[0].alias); } -#line 39681 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11688 "gram.y" + { (yyval.alias) = (yyvsp[(1) - (1)].alias); } break; case 1726: -#line 11689 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11689 "gram.y" { (yyval.alias) = NULL; } -#line 39687 "gram.c" /* yacc.c:1646 */ break; case 1727: -#line 11698 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11698 "gram.y" { - (yyval.list) = list_make2((yyvsp[0].alias), NIL); + (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); } -#line 39695 "gram.c" /* yacc.c:1646 */ break; case 1728: -#line 11702 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11702 "gram.y" { - (yyval.list) = list_make2(NULL, (yyvsp[-1].list)); + (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); } -#line 39703 "gram.c" /* yacc.c:1646 */ break; case 1729: -#line 11706 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11706 "gram.y" { Alias *a = makeNode(Alias); - a->aliasname = (yyvsp[-3].str); - (yyval.list) = list_make2(a, (yyvsp[-1].list)); + a->aliasname = (yyvsp[(2) - (5)].str); + (yyval.list) = list_make2(a, (yyvsp[(4) - (5)].list)); } -#line 39713 "gram.c" /* yacc.c:1646 */ break; case 1730: -#line 11712 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11712 "gram.y" { Alias *a = makeNode(Alias); - a->aliasname = (yyvsp[-3].str); - (yyval.list) = list_make2(a, (yyvsp[-1].list)); + a->aliasname = (yyvsp[(1) - (4)].str); + (yyval.list) = list_make2(a, (yyvsp[(3) - (4)].list)); } -#line 39723 "gram.c" /* yacc.c:1646 */ break; case 1731: -#line 11718 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11718 "gram.y" { (yyval.list) = list_make2(NULL, NIL); } -#line 39731 "gram.c" /* yacc.c:1646 */ break; case 1732: -#line 11723 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11723 "gram.y" { (yyval.jtype) = JOIN_FULL; } -#line 39737 "gram.c" /* yacc.c:1646 */ break; case 1733: -#line 11724 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11724 "gram.y" { (yyval.jtype) = JOIN_LEFT; } -#line 39743 "gram.c" /* yacc.c:1646 */ break; case 1734: -#line 11725 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11725 "gram.y" { (yyval.jtype) = JOIN_RIGHT; } -#line 39749 "gram.c" /* yacc.c:1646 */ break; case 1735: -#line 11726 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11726 "gram.y" { (yyval.jtype) = JOIN_INNER; } -#line 39755 "gram.c" /* yacc.c:1646 */ break; case 1736: -#line 11730 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11730 "gram.y" { (yyval.node) = NULL; } -#line 39761 "gram.c" /* yacc.c:1646 */ break; case 1737: -#line 11731 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11731 "gram.y" { (yyval.node) = NULL; } -#line 39767 "gram.c" /* yacc.c:1646 */ break; case 1738: -#line 11743 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[-1].list); } -#line 39773 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11743 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(3) - (4)].list); } break; case 1739: -#line 11744 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39779 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11744 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 1740: -#line 11750 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11750 "gram.y" { /* inheritance query, implicitly */ - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; } -#line 39790 "gram.c" /* yacc.c:1646 */ break; case 1741: -#line 11757 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11757 "gram.y" { /* inheritance query, explicitly */ - (yyval.range) = (yyvsp[-1].range); + (yyval.range) = (yyvsp[(1) - (2)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; } -#line 39801 "gram.c" /* yacc.c:1646 */ break; case 1742: -#line 11764 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11764 "gram.y" { /* no inheritance */ - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; } -#line 39812 "gram.c" /* yacc.c:1646 */ break; case 1743: -#line 11771 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11771 "gram.y" { /* no inheritance, SQL99-style syntax */ - (yyval.range) = (yyvsp[-1].range); + (yyval.range) = (yyvsp[(3) - (4)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; } -#line 39823 "gram.c" /* yacc.c:1646 */ break; case 1744: -#line 11781 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].range)); } -#line 39829 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11781 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); } break; case 1745: -#line 11782 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } -#line 39835 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11782 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); } break; case 1746: -#line 11796 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11796 "gram.y" { - (yyval.range) = (yyvsp[0].range); + (yyval.range) = (yyvsp[(1) - (1)].range); } -#line 39843 "gram.c" /* yacc.c:1646 */ break; case 1747: -#line 11800 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11800 "gram.y" { Alias *alias = makeNode(Alias); - alias->aliasname = (yyvsp[0].str); - (yyvsp[-1].range)->alias = alias; - (yyval.range) = (yyvsp[-1].range); + alias->aliasname = (yyvsp[(2) - (2)].str); + (yyvsp[(1) - (2)].range)->alias = alias; + (yyval.range) = (yyvsp[(1) - (2)].range); } -#line 39854 "gram.c" /* yacc.c:1646 */ break; case 1748: -#line 11807 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11807 "gram.y" { Alias *alias = makeNode(Alias); - alias->aliasname = (yyvsp[0].str); - (yyvsp[-2].range)->alias = alias; - (yyval.range) = (yyvsp[-2].range); + alias->aliasname = (yyvsp[(3) - (3)].str); + (yyvsp[(1) - (3)].range)->alias = alias; + (yyval.range) = (yyvsp[(1) - (3)].range); } -#line 39865 "gram.c" /* yacc.c:1646 */ break; case 1749: -#line 11820 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11820 "gram.y" { RangeTableSample *n = makeNode(RangeTableSample); /* n->relation will be filled in later */ - n->method = (yyvsp[-4].list); - n->args = (yyvsp[-2].list); - n->repeatable = (yyvsp[0].node); - n->location = (yylsp[-4]); + n->method = (yyvsp[(2) - (6)].list); + n->args = (yyvsp[(4) - (6)].list); + n->repeatable = (yyvsp[(6) - (6)].node); + n->location = (yylsp[(2) - (6)]); (yyval.node) = (Node *) n; } -#line 39879 "gram.c" /* yacc.c:1646 */ break; case 1750: -#line 11832 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) (yyvsp[-1].node); } -#line 39885 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11832 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(3) - (4)].node); } break; case 1751: -#line 11833 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11833 "gram.y" { (yyval.node) = NULL; } -#line 39891 "gram.c" /* yacc.c:1646 */ break; case 1752: -#line 11849 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11849 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; - n->ordinality = (yyvsp[0].boolean); + n->ordinality = (yyvsp[(2) - (2)].boolean); n->is_rowsfrom = false; - n->functions = list_make1(list_make2((yyvsp[-1].node), NIL)); + n->functions = list_make1(list_make2((yyvsp[(1) - (2)].node), NIL)); /* alias and coldeflist are set by table_ref production */ (yyval.node) = (Node *) n; } -#line 39905 "gram.c" /* yacc.c:1646 */ break; case 1753: -#line 11859 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11859 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; - n->ordinality = (yyvsp[0].boolean); + n->ordinality = (yyvsp[(6) - (6)].boolean); n->is_rowsfrom = true; - n->functions = (yyvsp[-2].list); + n->functions = (yyvsp[(4) - (6)].list); /* alias and coldeflist are set by table_ref production */ (yyval.node) = (Node *) n; } -#line 39919 "gram.c" /* yacc.c:1646 */ break; case 1754: -#line 11871 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].list)); } -#line 39925 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11871 "gram.y" + { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); } break; case 1755: -#line 11875 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].list)); } -#line 39931 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11875 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); } break; case 1756: -#line 11876 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } -#line 39937 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11876 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; case 1757: -#line 11879 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 39943 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11879 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 1758: -#line 11880 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11880 "gram.y" { (yyval.list) = NIL; } -#line 39949 "gram.c" /* yacc.c:1646 */ break; case 1759: -#line 11883 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11883 "gram.y" { (yyval.boolean) = true; } -#line 39955 "gram.c" /* yacc.c:1646 */ break; case 1760: -#line 11884 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11884 "gram.y" { (yyval.boolean) = false; } -#line 39961 "gram.c" /* yacc.c:1646 */ break; case 1761: -#line 11889 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39967 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11889 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 1762: -#line 11890 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11890 "gram.y" { (yyval.node) = NULL; } -#line 39973 "gram.c" /* yacc.c:1646 */ break; case 1763: -#line 11895 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 39979 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11895 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 1764: -#line 11897 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11897 "gram.y" { CurrentOfExpr *n = makeNode(CurrentOfExpr); /* cvarno is filled in by parse analysis */ - n->cursor_name = (yyvsp[0].str); + n->cursor_name = (yyvsp[(4) - (4)].str); n->cursor_param = 0; (yyval.node) = (Node *) n; } -#line 39991 "gram.c" /* yacc.c:1646 */ break; case 1765: -#line 11904 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11904 "gram.y" { (yyval.node) = NULL; } -#line 39997 "gram.c" /* yacc.c:1646 */ break; case 1766: -#line 11909 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 40003 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11909 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1767: -#line 11910 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11910 "gram.y" { (yyval.list) = NIL; } -#line 40009 "gram.c" /* yacc.c:1646 */ break; case 1768: -#line 11915 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11915 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 40017 "gram.c" /* yacc.c:1646 */ break; case 1769: -#line 11919 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11919 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 40025 "gram.c" /* yacc.c:1646 */ break; case 1770: -#line 11925 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11925 "gram.y" { ColumnDef *n = makeNode(ColumnDef); - n->colname = (yyvsp[-2].str); - n->typeName = (yyvsp[-1].typnam); + n->colname = (yyvsp[(1) - (3)].str); + n->typeName = (yyvsp[(2) - (3)].typnam); n->inhcount = 0; n->is_local = true; n->is_not_null = false; @@ -40038,89 +41426,89 @@ yyreduce: n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; - n->collClause = (CollateClause *) (yyvsp[0].node); + n->collClause = (CollateClause *) (yyvsp[(3) - (3)].node); n->collOid = InvalidOid; n->constraints = NIL; - n->location = (yylsp[-2]); + n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *)n; } -#line 40048 "gram.c" /* yacc.c:1646 */ break; case 1771: -#line 11950 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11950 "gram.y" { RangeTableFunc *n = makeNode(RangeTableFunc); - n->rowexpr = (yyvsp[-4].node); - n->docexpr = (yyvsp[-3].node); - n->columns = (yyvsp[-1].list); + n->rowexpr = (yyvsp[(3) - (7)].node); + n->docexpr = (yyvsp[(4) - (7)].node); + n->columns = (yyvsp[(6) - (7)].list); n->namespaces = NIL; - n->location = (yylsp[-6]); + n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *)n; } -#line 40062 "gram.c" /* yacc.c:1646 */ break; case 1772: -#line 11961 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11961 "gram.y" { RangeTableFunc *n = makeNode(RangeTableFunc); - n->rowexpr = (yyvsp[-4].node); - n->docexpr = (yyvsp[-3].node); - n->columns = (yyvsp[-1].list); - n->namespaces = (yyvsp[-7].list); - n->location = (yylsp[-11]); + n->rowexpr = (yyvsp[(8) - (12)].node); + n->docexpr = (yyvsp[(9) - (12)].node); + n->columns = (yyvsp[(11) - (12)].list); + n->namespaces = (yyvsp[(5) - (12)].list); + n->location = (yylsp[(1) - (12)]); (yyval.node) = (Node *)n; } -#line 40076 "gram.c" /* yacc.c:1646 */ break; case 1773: -#line 11972 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 40082 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11972 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 1774: -#line 11973 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 40088 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11973 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 1775: -#line 11978 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11978 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); - fc->colname = (yyvsp[-1].str); + fc->colname = (yyvsp[(1) - (2)].str); fc->for_ordinality = false; - fc->typeName = (yyvsp[0].typnam); + fc->typeName = (yyvsp[(2) - (2)].typnam); fc->is_not_null = false; fc->colexpr = NULL; fc->coldefexpr = NULL; - fc->location = (yylsp[-1]); + fc->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) fc; } -#line 40106 "gram.c" /* yacc.c:1646 */ break; case 1776: -#line 11992 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 11992 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); ListCell *option; bool nullability_seen = false; - fc->colname = (yyvsp[-2].str); - fc->typeName = (yyvsp[-1].typnam); + fc->colname = (yyvsp[(1) - (3)].str); + fc->typeName = (yyvsp[(2) - (3)].typnam); fc->for_ordinality = false; fc->is_not_null = false; fc->colexpr = NULL; fc->coldefexpr = NULL; - fc->location = (yylsp[-2]); + fc->location = (yylsp[(1) - (3)]); - foreach(option, (yyvsp[0].list)) + foreach(option, (yyvsp[(3) - (3)].list)) { DefElem *defel = (DefElem *) lfirst(option); @@ -40163,462 +41551,462 @@ yyreduce: } (yyval.node) = (Node *) fc; } -#line 40167 "gram.c" /* yacc.c:1646 */ break; case 1777: -#line 12049 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12049 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); - fc->colname = (yyvsp[-2].str); + fc->colname = (yyvsp[(1) - (3)].str); fc->for_ordinality = true; /* other fields are ignored, initialized by makeNode */ - fc->location = (yylsp[-2]); + fc->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) fc; } -#line 40182 "gram.c" /* yacc.c:1646 */ break; case 1778: -#line 12063 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].defelt)); } -#line 40188 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12063 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); } break; case 1779: -#line 12065 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } -#line 40194 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12065 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); } break; case 1780: -#line 12070 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); } -#line 40200 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12070 "gram.y" + { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1781: -#line 12072 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("default", (yyvsp[0].node), (yylsp[-1])); } -#line 40206 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12072 "gram.y" + { (yyval.defelt) = makeDefElem("default", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1782: -#line 12074 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(true), (yylsp[-1])); } -#line 40212 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12074 "gram.y" + { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(true), (yylsp[(1) - (2)])); } break; case 1783: -#line 12076 "gram.y" /* yacc.c:1646 */ - { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(false), (yylsp[0])); } -#line 40218 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12076 "gram.y" + { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(false), (yylsp[(1) - (1)])); } break; case 1784: -#line 12081 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 40224 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12081 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; case 1785: -#line 12083 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } -#line 40230 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12083 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } break; case 1786: -#line 12088 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12088 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; - (yyval.target)->val = (yyvsp[-2].node); - (yyval.target)->location = (yylsp[-2]); + (yyval.target)->val = (yyvsp[(1) - (3)].node); + (yyval.target)->location = (yylsp[(1) - (3)]); } -#line 40242 "gram.c" /* yacc.c:1646 */ break; case 1787: -#line 12096 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12096 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; - (yyval.target)->val = (yyvsp[0].node); - (yyval.target)->location = (yylsp[-1]); + (yyval.target)->val = (yyvsp[(2) - (2)].node); + (yyval.target)->location = (yylsp[(1) - (2)]); } -#line 40254 "gram.c" /* yacc.c:1646 */ break; case 1788: -#line 12116 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12116 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam) = (yyvsp[(1) - (2)].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); } -#line 40263 "gram.c" /* yacc.c:1646 */ break; case 1789: -#line 12121 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12121 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam) = (yyvsp[(2) - (3)].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); (yyval.typnam)->setof = TRUE; } -#line 40273 "gram.c" /* yacc.c:1646 */ break; case 1790: -#line 12128 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12128 "gram.y" { - (yyval.typnam) = (yyvsp[-4].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + (yyval.typnam) = (yyvsp[(1) - (5)].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); } -#line 40282 "gram.c" /* yacc.c:1646 */ break; case 1791: -#line 12133 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12133 "gram.y" { - (yyval.typnam) = (yyvsp[-4].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + (yyval.typnam) = (yyvsp[(2) - (6)].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); (yyval.typnam)->setof = TRUE; } -#line 40292 "gram.c" /* yacc.c:1646 */ break; case 1792: -#line 12139 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12139 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); } -#line 40301 "gram.c" /* yacc.c:1646 */ break; case 1793: -#line 12144 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12144 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); (yyval.typnam)->setof = TRUE; } -#line 40311 "gram.c" /* yacc.c:1646 */ break; case 1794: -#line 12153 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeInteger(-1)); } -#line 40317 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12153 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); } break; case 1795: -#line 12155 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-3].list), makeInteger((yyvsp[-1].ival))); } -#line 40323 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12155 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); } break; case 1796: -#line 12157 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12157 "gram.y" { (yyval.list) = NIL; } -#line 40329 "gram.c" /* yacc.c:1646 */ break; case 1797: -#line 12161 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40335 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12161 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1798: -#line 12162 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40341 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12162 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1799: -#line 12163 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40347 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12163 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1800: -#line 12164 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40353 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12164 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1801: -#line 12165 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40359 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12165 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1802: -#line 12167 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12167 "gram.y" { - (yyval.typnam) = (yyvsp[-1].typnam); - (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam) = (yyvsp[(1) - (2)].typnam); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); } -#line 40368 "gram.c" /* yacc.c:1646 */ break; case 1803: -#line 12172 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12172 "gram.y" { - (yyval.typnam) = (yyvsp[-3].typnam); + (yyval.typnam) = (yyvsp[(1) - (4)].typnam); (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); } -#line 40378 "gram.c" /* yacc.c:1646 */ break; case 1804: -#line 12191 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40384 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12191 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1805: -#line 12192 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40390 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12192 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1806: -#line 12193 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40396 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12193 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1807: -#line 12194 "gram.y" /* yacc.c:1646 */ - { (yyval.typnam) = (yyvsp[0].typnam); } -#line 40402 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12194 "gram.y" + { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } break; case 1808: -#line 12206 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12206 "gram.y" { - (yyval.typnam) = makeTypeName((yyvsp[-1].str)); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40412 "gram.c" /* yacc.c:1646 */ break; case 1809: -#line 12212 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12212 "gram.y" { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-2].str)), (yyvsp[-1].list))); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-2]); + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(2) - (3)].list))); + (yyval.typnam)->typmods = (yyvsp[(3) - (3)].list); + (yyval.typnam)->location = (yylsp[(1) - (3)]); } -#line 40422 "gram.c" /* yacc.c:1646 */ break; case 1810: -#line 12219 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 40428 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12219 "gram.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 1811: -#line 12220 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12220 "gram.y" { (yyval.list) = NIL; } -#line 40434 "gram.c" /* yacc.c:1646 */ break; case 1812: -#line 12227 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12227 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40443 "gram.c" /* yacc.c:1646 */ break; case 1813: -#line 12232 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12232 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40452 "gram.c" /* yacc.c:1646 */ break; case 1814: -#line 12237 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12237 "gram.y" { (yyval.typnam) = SystemTypeName("int2"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40461 "gram.c" /* yacc.c:1646 */ break; case 1815: -#line 12242 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12242 "gram.y" { (yyval.typnam) = SystemTypeName("int8"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40470 "gram.c" /* yacc.c:1646 */ break; case 1816: -#line 12247 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12247 "gram.y" { (yyval.typnam) = SystemTypeName("float4"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40479 "gram.c" /* yacc.c:1646 */ break; case 1817: -#line 12252 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12252 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam) = (yyvsp[(2) - (2)].typnam); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40488 "gram.c" /* yacc.c:1646 */ break; case 1818: -#line 12257 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12257 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40497 "gram.c" /* yacc.c:1646 */ break; case 1819: -#line 12262 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12262 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40507 "gram.c" /* yacc.c:1646 */ break; case 1820: -#line 12268 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12268 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40517 "gram.c" /* yacc.c:1646 */ break; case 1821: -#line 12274 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12274 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[0].list); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40527 "gram.c" /* yacc.c:1646 */ break; case 1822: -#line 12280 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12280 "gram.y" { (yyval.typnam) = SystemTypeName("bool"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40536 "gram.c" /* yacc.c:1646 */ break; case 1823: -#line 12287 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12287 "gram.y" { /* * Check FLOAT() precision limits assuming IEEE floating * types - thomas 1997-09-18 */ - if ((yyvsp[-1].ival) < 1) + if ((yyvsp[(2) - (3)].ival) < 1) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("precision for type float must be at least 1 bit"), - parser_errposition((yylsp[-1])))); - else if ((yyvsp[-1].ival) <= 24) + parser_errposition((yylsp[(2) - (3)])))); + else if ((yyvsp[(2) - (3)].ival) <= 24) (yyval.typnam) = SystemTypeName("float4"); - else if ((yyvsp[-1].ival) <= 53) + else if ((yyvsp[(2) - (3)].ival) <= 53) (yyval.typnam) = SystemTypeName("float8"); else ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("precision for type float must be less than 54 bits"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(2) - (3)])))); } -#line 40561 "gram.c" /* yacc.c:1646 */ break; case 1824: -#line 12308 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12308 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); } -#line 40569 "gram.c" /* yacc.c:1646 */ break; case 1825: -#line 12318 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12318 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 40577 "gram.c" /* yacc.c:1646 */ break; case 1826: -#line 12322 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12322 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 40585 "gram.c" /* yacc.c:1646 */ break; case 1827: -#line 12330 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12330 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 40593 "gram.c" /* yacc.c:1646 */ break; case 1828: -#line 12334 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12334 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; } -#line 40602 "gram.c" /* yacc.c:1646 */ break; case 1829: -#line 12342 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12342 "gram.y" { char *typname; - typname = (yyvsp[-3].boolean) ? "varbit" : "bit"; + typname = (yyvsp[(2) - (5)].boolean) ? "varbit" : "bit"; (yyval.typnam) = SystemTypeName(typname); - (yyval.typnam)->typmods = (yyvsp[-1].list); - (yyval.typnam)->location = (yylsp[-4]); + (yyval.typnam)->typmods = (yyvsp[(4) - (5)].list); + (yyval.typnam)->location = (yylsp[(1) - (5)]); } -#line 40615 "gram.c" /* yacc.c:1646 */ break; case 1830: -#line 12354 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12354 "gram.y" { /* bit defaults to bit(1), varbit to no limit */ - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) { (yyval.typnam) = SystemTypeName("varbit"); } @@ -40627,37 +42015,37 @@ yyreduce: (yyval.typnam) = SystemTypeName("bit"); (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); } - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40633 "gram.c" /* yacc.c:1646 */ break; case 1831: -#line 12375 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12375 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 40641 "gram.c" /* yacc.c:1646 */ break; case 1832: -#line 12379 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12379 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 40649 "gram.c" /* yacc.c:1646 */ break; case 1833: -#line 12385 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12385 "gram.y" { - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); } -#line 40657 "gram.c" /* yacc.c:1646 */ break; case 1834: -#line 12389 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12389 "gram.y" { /* Length was not specified so allow to be unrestricted. * This handles problems with fixed-length (bpchar) strings @@ -40665,878 +42053,878 @@ yyreduce: * of one, but should not be constrained if the length * was not specified. */ - (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; } -#line 40672 "gram.c" /* yacc.c:1646 */ break; case 1835: -#line 12402 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12402 "gram.y" { - (yyval.typnam) = SystemTypeName((yyvsp[-3].str)); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); - (yyval.typnam)->location = (yylsp[-3]); + (yyval.typnam) = SystemTypeName((yyvsp[(1) - (4)].str)); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); + (yyval.typnam)->location = (yylsp[(1) - (4)]); } -#line 40682 "gram.c" /* yacc.c:1646 */ break; case 1836: -#line 12410 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12410 "gram.y" { - (yyval.typnam) = SystemTypeName((yyvsp[0].str)); + (yyval.typnam) = SystemTypeName((yyvsp[(1) - (1)].str)); /* char defaults to char(1), varchar to no limit */ - if (strcmp((yyvsp[0].str), "bpchar") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "bpchar") == 0) (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40694 "gram.c" /* yacc.c:1646 */ break; case 1837: -#line 12420 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 40700 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12420 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; } break; case 1838: -#line 12422 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 40706 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12422 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; } break; case 1839: -#line 12424 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12424 "gram.y" { (yyval.str) = "varchar"; } -#line 40712 "gram.c" /* yacc.c:1646 */ break; case 1840: -#line 12426 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 40718 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12426 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; } break; case 1841: -#line 12428 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 40724 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12428 "gram.y" + { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; } break; case 1842: -#line 12430 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } -#line 40730 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12430 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; } break; case 1843: -#line 12434 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12434 "gram.y" { (yyval.boolean) = TRUE; } -#line 40736 "gram.c" /* yacc.c:1646 */ break; case 1844: -#line 12435 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12435 "gram.y" { (yyval.boolean) = FALSE; } -#line 40742 "gram.c" /* yacc.c:1646 */ break; case 1845: -#line 12443 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12443 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.typnam)->location = (yylsp[-4]); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.typnam)->location = (yylsp[(1) - (5)]); } -#line 40755 "gram.c" /* yacc.c:1646 */ break; case 1846: -#line 12452 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12452 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40767 "gram.c" /* yacc.c:1646 */ break; case 1847: -#line 12460 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12460 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.typnam)->location = (yylsp[-4]); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.typnam)->location = (yylsp[(1) - (5)]); } -#line 40780 "gram.c" /* yacc.c:1646 */ break; case 1848: -#line 12469 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12469 "gram.y" { - if ((yyvsp[0].boolean)) + if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->location = (yylsp[-1]); + (yyval.typnam)->location = (yylsp[(1) - (2)]); } -#line 40792 "gram.c" /* yacc.c:1646 */ break; case 1849: -#line 12480 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12480 "gram.y" { (yyval.typnam) = SystemTypeName("interval"); - (yyval.typnam)->location = (yylsp[0]); + (yyval.typnam)->location = (yylsp[(1) - (1)]); } -#line 40801 "gram.c" /* yacc.c:1646 */ break; case 1850: -#line 12487 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12487 "gram.y" { (yyval.boolean) = TRUE; } -#line 40807 "gram.c" /* yacc.c:1646 */ break; case 1851: -#line 12488 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12488 "gram.y" { (yyval.boolean) = FALSE; } -#line 40813 "gram.c" /* yacc.c:1646 */ break; case 1852: -#line 12489 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12489 "gram.y" { (yyval.boolean) = FALSE; } -#line 40819 "gram.c" /* yacc.c:1646 */ break; case 1853: -#line 12494 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[0]))); } -#line 40825 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12494 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); } break; case 1854: -#line 12496 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[0]))); } -#line 40831 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12496 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); } break; case 1855: -#line 12498 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[0]))); } -#line 40837 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12498 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); } break; case 1856: -#line 12500 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[0]))); } -#line 40843 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12500 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); } break; case 1857: -#line 12502 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[0]))); } -#line 40849 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12502 "gram.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); } break; case 1858: -#line 12504 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 40855 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12504 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 1859: -#line 12506 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12506 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | - INTERVAL_MASK(MONTH), (yylsp[-2]))); + INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); } -#line 40864 "gram.c" /* yacc.c:1646 */ break; case 1860: -#line 12511 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12511 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR), (yylsp[-2]))); + INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); } -#line 40873 "gram.c" /* yacc.c:1646 */ break; case 1861: -#line 12516 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12516 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[-2]))); + INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); } -#line 40883 "gram.c" /* yacc.c:1646 */ break; case 1862: -#line 12522 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12522 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[-2])); + INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); } -#line 40895 "gram.c" /* yacc.c:1646 */ break; case 1863: -#line 12530 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12530 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[-2]))); + INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); } -#line 40904 "gram.c" /* yacc.c:1646 */ break; case 1864: -#line 12535 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12535 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[-2])); + INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); } -#line 40915 "gram.c" /* yacc.c:1646 */ break; case 1865: -#line 12542 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12542 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[-2])); + INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); } -#line 40925 "gram.c" /* yacc.c:1646 */ break; case 1866: -#line 12548 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12548 "gram.y" { (yyval.list) = NIL; } -#line 40931 "gram.c" /* yacc.c:1646 */ break; case 1867: -#line 12553 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12553 "gram.y" { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[0]))); + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); } -#line 40939 "gram.c" /* yacc.c:1646 */ break; case 1868: -#line 12557 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12557 "gram.y" { - (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[-3])), - makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (4)])), + makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); } -#line 40948 "gram.c" /* yacc.c:1646 */ break; case 1869: -#line 12592 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 40954 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12592 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1870: -#line 12594 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), (yylsp[-1])); } -#line 40960 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12594 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); } break; case 1871: -#line 12596 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12596 "gram.y" { CollateClause *n = makeNode(CollateClause); - n->arg = (yyvsp[-2].node); - n->collname = (yyvsp[0].list); - n->location = (yylsp[-1]); + n->arg = (yyvsp[(1) - (3)].node); + n->collname = (yyvsp[(3) - (3)].list); + n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *) n; } -#line 40972 "gram.c" /* yacc.c:1646 */ break; case 1872: -#line 12604 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12604 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("timezone"), - list_make2((yyvsp[0].node), (yyvsp[-4].node)), - (yylsp[-3])); + list_make2((yyvsp[(5) - (5)].node), (yyvsp[(1) - (5)].node)), + (yylsp[(2) - (5)])); } -#line 40982 "gram.c" /* yacc.c:1646 */ break; case 1873: -#line 12619 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 40988 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12619 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1874: -#line 12621 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } -#line 40994 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12621 "gram.y" + { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1875: -#line 12623 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41000 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12623 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1876: -#line 12625 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41006 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12625 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1877: -#line 12627 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41012 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12627 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1878: -#line 12629 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41018 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12629 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1879: -#line 12631 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41024 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12631 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1880: -#line 12633 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41030 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12633 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1881: -#line 12635 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41036 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12635 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1882: -#line 12637 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41042 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12637 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1883: -#line 12639 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41048 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12639 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1884: -#line 12641 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41054 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12641 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1885: -#line 12643 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41060 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12643 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1886: -#line 12645 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41066 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12645 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1887: -#line 12648 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41072 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12648 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1888: -#line 12650 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 41078 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12650 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1889: -#line 12652 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } -#line 41084 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12652 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); } break; case 1890: -#line 12655 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeAndExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41090 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12655 "gram.y" + { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1891: -#line 12657 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeOrExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41096 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12657 "gram.y" + { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1892: -#line 12659 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } -#line 41102 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12659 "gram.y" + { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1893: -#line 12661 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } -#line 41108 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12661 "gram.y" + { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1894: -#line 12664 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12664 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", - (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } -#line 41117 "gram.c" /* yacc.c:1646 */ break; case 1895: -#line 12669 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12669 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-3])); + list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), + (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", - (yyvsp[-4].node), (Node *) n, (yylsp[-3])); + (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); } -#line 41129 "gram.c" /* yacc.c:1646 */ break; case 1896: -#line 12677 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12677 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", - (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); } -#line 41138 "gram.c" /* yacc.c:1646 */ break; case 1897: -#line 12682 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12682 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", - (yyvsp[-5].node), (Node *) n, (yylsp[-4])); + (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); } -#line 41150 "gram.c" /* yacc.c:1646 */ break; case 1898: -#line 12690 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12690 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", - (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } -#line 41159 "gram.c" /* yacc.c:1646 */ break; case 1899: -#line 12695 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12695 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-3])); + list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), + (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", - (yyvsp[-4].node), (Node *) n, (yylsp[-3])); + (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); } -#line 41171 "gram.c" /* yacc.c:1646 */ break; case 1900: -#line 12703 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12703 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", - (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); } -#line 41180 "gram.c" /* yacc.c:1646 */ break; case 1901: -#line 12708 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12708 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", - (yyvsp[-5].node), (Node *) n, (yylsp[-4])); + (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); } -#line 41192 "gram.c" /* yacc.c:1646 */ break; case 1902: -#line 12717 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12717 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[0].node), makeNullAConst(-1)), - (yylsp[-2])); + list_make2((yyvsp[(4) - (4)].node), makeNullAConst(-1)), + (yylsp[(2) - (4)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", - (yyvsp[-3].node), (Node *) n, (yylsp[-2])); + (yyvsp[(1) - (4)].node), (Node *) n, (yylsp[(2) - (4)])); } -#line 41204 "gram.c" /* yacc.c:1646 */ break; case 1903: -#line 12725 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12725 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", - (yyvsp[-5].node), (Node *) n, (yylsp[-4])); + (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); } -#line 41216 "gram.c" /* yacc.c:1646 */ break; case 1904: -#line 12733 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12733 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[0].node), makeNullAConst(-1)), - (yylsp[-3])); + list_make2((yyvsp[(5) - (5)].node), makeNullAConst(-1)), + (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", - (yyvsp[-4].node), (Node *) n, (yylsp[-3])); + (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); } -#line 41228 "gram.c" /* yacc.c:1646 */ break; case 1905: -#line 12741 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12741 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-5])); + list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), + (yylsp[(2) - (7)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", - (yyvsp[-6].node), (Node *) n, (yylsp[-5])); + (yyvsp[(1) - (7)].node), (Node *) n, (yylsp[(2) - (7)])); } -#line 41240 "gram.c" /* yacc.c:1646 */ break; case 1906: -#line 12759 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12759 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-2].node); + n->arg = (Expr *) (yyvsp[(1) - (3)].node); n->nulltesttype = IS_NULL; - n->location = (yylsp[-1]); + n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)n; } -#line 41252 "gram.c" /* yacc.c:1646 */ break; case 1907: -#line 12767 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12767 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-1].node); + n->arg = (Expr *) (yyvsp[(1) - (2)].node); n->nulltesttype = IS_NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *)n; } -#line 41264 "gram.c" /* yacc.c:1646 */ break; case 1908: -#line 12775 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12775 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-3].node); + n->arg = (Expr *) (yyvsp[(1) - (4)].node); n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[-2]); + n->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)n; } -#line 41276 "gram.c" /* yacc.c:1646 */ break; case 1909: -#line 12783 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12783 "gram.y" { NullTest *n = makeNode(NullTest); - n->arg = (Expr *) (yyvsp[-1].node); + n->arg = (Expr *) (yyvsp[(1) - (2)].node); n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *)n; } -#line 41288 "gram.c" /* yacc.c:1646 */ break; case 1910: -#line 12791 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12791 "gram.y" { - if (list_length((yyvsp[-2].list)) != 2) + if (list_length((yyvsp[(1) - (3)].list)) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("wrong number of parameters on left side of OVERLAPS expression"), - parser_errposition((yylsp[-2])))); - if (list_length((yyvsp[0].list)) != 2) + parser_errposition((yylsp[(1) - (3)])))); + if (list_length((yyvsp[(3) - (3)].list)) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("wrong number of parameters on right side of OVERLAPS expression"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(3) - (3)])))); (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlaps"), - list_concat((yyvsp[-2].list), (yyvsp[0].list)), - (yylsp[-1])); + list_concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)), + (yylsp[(2) - (3)])); } -#line 41308 "gram.c" /* yacc.c:1646 */ break; case 1911: -#line 12807 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12807 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-2].node); + b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_TRUE; - b->location = (yylsp[-1]); + b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; } -#line 41320 "gram.c" /* yacc.c:1646 */ break; case 1912: -#line 12815 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12815 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-3].node); + b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_TRUE; - b->location = (yylsp[-2]); + b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; } -#line 41332 "gram.c" /* yacc.c:1646 */ break; case 1913: -#line 12823 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12823 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-2].node); + b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_FALSE; - b->location = (yylsp[-1]); + b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; } -#line 41344 "gram.c" /* yacc.c:1646 */ break; case 1914: -#line 12831 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12831 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-3].node); + b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_FALSE; - b->location = (yylsp[-2]); + b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; } -#line 41356 "gram.c" /* yacc.c:1646 */ break; case 1915: -#line 12839 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12839 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-2].node); + b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_UNKNOWN; - b->location = (yylsp[-1]); + b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; } -#line 41368 "gram.c" /* yacc.c:1646 */ break; case 1916: -#line 12847 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12847 "gram.y" { BooleanTest *b = makeNode(BooleanTest); - b->arg = (Expr *) (yyvsp[-3].node); + b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_UNKNOWN; - b->location = (yylsp[-2]); + b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; } -#line 41380 "gram.c" /* yacc.c:1646 */ break; case 1917: -#line 12855 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12855 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); } -#line 41388 "gram.c" /* yacc.c:1646 */ break; case 1918: -#line 12859 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12859 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); } -#line 41396 "gram.c" /* yacc.c:1646 */ break; case 1919: -#line 12863 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12863 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[-5].node), (Node *) (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); } -#line 41404 "gram.c" /* yacc.c:1646 */ break; case 1920: -#line 12867 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12867 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[-6].node), (Node *) (yyvsp[-1].list), (yylsp[-5])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); } -#line 41412 "gram.c" /* yacc.c:1646 */ break; case 1921: -#line 12871 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12871 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN, "BETWEEN", - (yyvsp[-5].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + (yyvsp[(1) - (6)].node), + (Node *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); } -#line 41424 "gram.c" /* yacc.c:1646 */ break; case 1922: -#line 12879 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12879 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN, "NOT BETWEEN", - (yyvsp[-6].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-5])); + (yyvsp[(1) - (7)].node), + (Node *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), + (yylsp[(2) - (7)])); } -#line 41436 "gram.c" /* yacc.c:1646 */ break; case 1923: -#line 12887 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12887 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN_SYM, "BETWEEN SYMMETRIC", - (yyvsp[-5].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-4])); + (yyvsp[(1) - (6)].node), + (Node *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), + (yylsp[(2) - (6)])); } -#line 41448 "gram.c" /* yacc.c:1646 */ break; case 1924: -#line 12895 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12895 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN_SYM, "NOT BETWEEN SYMMETRIC", - (yyvsp[-6].node), - (Node *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), - (yylsp[-5])); + (yyvsp[(1) - (7)].node), + (Node *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), + (yylsp[(2) - (7)])); } -#line 41460 "gram.c" /* yacc.c:1646 */ break; case 1925: -#line 12903 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12903 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ - if (IsA((yyvsp[0].node), SubLink)) + if (IsA((yyvsp[(3) - (3)].node), SubLink)) { /* generate foo = ANY (subquery) */ - SubLink *n = (SubLink *) (yyvsp[0].node); + SubLink *n = (SubLink *) (yyvsp[(3) - (3)].node); n->subLinkType = ANY_SUBLINK; n->subLinkId = 0; - n->testexpr = (yyvsp[-2].node); + n->testexpr = (yyvsp[(1) - (3)].node); n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[-1]); + n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)n; } else { /* generate scalar IN expression */ - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } } -#line 41484 "gram.c" /* yacc.c:1646 */ break; case 1926: -#line 12923 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12923 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ - if (IsA((yyvsp[0].node), SubLink)) + if (IsA((yyvsp[(4) - (4)].node), SubLink)) { /* generate NOT (foo = ANY (subquery)) */ /* Make an = ANY node */ - SubLink *n = (SubLink *) (yyvsp[0].node); + SubLink *n = (SubLink *) (yyvsp[(4) - (4)].node); n->subLinkType = ANY_SUBLINK; n->subLinkId = 0; - n->testexpr = (yyvsp[-3].node); + n->testexpr = (yyvsp[(1) - (4)].node); n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[-2]); + n->location = (yylsp[(2) - (4)]); /* Stick a NOT on top; must have same parse location */ - (yyval.node) = makeNotExpr((Node *) n, (yylsp[-2])); + (yyval.node) = makeNotExpr((Node *) n, (yylsp[(2) - (4)])); } else { /* generate scalar NOT IN expression */ - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); } } -#line 41510 "gram.c" /* yacc.c:1646 */ break; case 1927: -#line 12945 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12945 "gram.y" { SubLink *n = makeNode(SubLink); - n->subLinkType = (yyvsp[-1].ival); + n->subLinkType = (yyvsp[(3) - (4)].ival); n->subLinkId = 0; - n->testexpr = (yyvsp[-3].node); - n->operName = (yyvsp[-2].list); - n->subselect = (yyvsp[0].node); - n->location = (yylsp[-2]); + n->testexpr = (yyvsp[(1) - (4)].node); + n->operName = (yyvsp[(2) - (4)].list); + n->subselect = (yyvsp[(4) - (4)].node); + n->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)n; } -#line 41525 "gram.c" /* yacc.c:1646 */ break; case 1928: -#line 12956 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12956 "gram.y" { - if ((yyvsp[-3].ival) == ANY_SUBLINK) - (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ANY, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + if ((yyvsp[(3) - (6)].ival) == ANY_SUBLINK) + (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ANY, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); else - (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ALL, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ALL, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); } -#line 41536 "gram.c" /* yacc.c:1646 */ break; case 1929: -#line 12963 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12963 "gram.y" { /* Not sure how to get rid of the parentheses * but there are lots of shift/reduce errors without them. @@ -41550,32 +42938,32 @@ yyreduce: ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("UNIQUE predicate is not yet implemented"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); } -#line 41556 "gram.c" /* yacc.c:1646 */ break; case 1930: -#line 12979 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12979 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-2].node)), (yylsp[-1])); + list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); } -#line 41565 "gram.c" /* yacc.c:1646 */ break; case 1931: -#line 12984 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12984 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-3].node)), (yylsp[-2])), - (yylsp[-2])); + list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), + (yylsp[(2) - (4)])); } -#line 41575 "gram.c" /* yacc.c:1646 */ break; case 1932: -#line 12990 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 12990 "gram.y" { /* * The SQL spec only allows DEFAULT in "contextually typed @@ -41586,216 +42974,216 @@ yyreduce: */ SetToDefault *n = makeNode(SetToDefault); /* parse analysis will fill in the rest */ - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; } -#line 41593 "gram.c" /* yacc.c:1646 */ break; case 1933: -#line 13015 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41599 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13015 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1934: -#line 13017 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), (yylsp[-1])); } -#line 41605 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13017 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); } break; case 1935: -#line 13019 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 41611 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13019 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1936: -#line 13021 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } -#line 41617 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13021 "gram.y" + { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1937: -#line 13023 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41623 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13023 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1938: -#line 13025 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41629 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13025 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1939: -#line 13027 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41635 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13027 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1940: -#line 13029 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41641 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13029 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1941: -#line 13031 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41647 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13031 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1942: -#line 13033 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41653 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13033 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1943: -#line 13035 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41659 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13035 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1944: -#line 13037 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41665 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13037 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1945: -#line 13039 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41671 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13039 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1946: -#line 13041 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41677 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13041 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1947: -#line 13043 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41683 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13043 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1948: -#line 13045 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41689 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13045 "gram.y" + { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1949: -#line 13047 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } -#line 41695 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13047 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } break; case 1950: -#line 13049 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } -#line 41701 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13049 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); } break; case 1951: -#line 13051 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } -#line 41707 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13051 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); } break; case 1952: -#line 13053 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13053 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); } -#line 41715 "gram.c" /* yacc.c:1646 */ break; case 1953: -#line 13057 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13057 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); } -#line 41723 "gram.c" /* yacc.c:1646 */ break; case 1954: -#line 13061 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13061 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[-5].node), (Node *) (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); } -#line 41731 "gram.c" /* yacc.c:1646 */ break; case 1955: -#line 13065 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13065 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[-6].node), (Node *) (yyvsp[-1].list), (yylsp[-5])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); } -#line 41739 "gram.c" /* yacc.c:1646 */ break; case 1956: -#line 13069 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13069 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-2].node)), (yylsp[-1])); + list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); } -#line 41748 "gram.c" /* yacc.c:1646 */ break; case 1957: -#line 13074 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13074 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, - list_make1((yyvsp[-3].node)), (yylsp[-2])), - (yylsp[-2])); + list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), + (yylsp[(2) - (4)])); } -#line 41758 "gram.c" /* yacc.c:1646 */ break; case 1958: -#line 13089 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41764 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13089 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1959: -#line 13090 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41770 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13090 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1960: -#line 13092 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13092 "gram.y" { ParamRef *p = makeNode(ParamRef); - p->number = (yyvsp[-1].ival); - p->location = (yylsp[-1]); - if ((yyvsp[0].list)) + p->number = (yyvsp[(1) - (2)].ival); + p->location = (yylsp[(1) - (2)]); + if ((yyvsp[(2) - (2)].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (Node *) p; - n->indirection = check_indirection((yyvsp[0].list), yyscanner); + n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *) n; } else (yyval.node) = (Node *) p; } -#line 41789 "gram.c" /* yacc.c:1646 */ break; case 1961: -#line 13107 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13107 "gram.y" { - if ((yyvsp[0].list)) + if ((yyvsp[(4) - (4)].list)) { A_Indirection *n = makeNode(A_Indirection); - n->arg = (yyvsp[-2].node); - n->indirection = check_indirection((yyvsp[0].list), yyscanner); + n->arg = (yyvsp[(2) - (4)].node); + n->indirection = check_indirection((yyvsp[(4) - (4)].list), yyscanner); (yyval.node) = (Node *)n; } else if (operator_precedence_warning) @@ -41817,44 +43205,44 @@ yyreduce: * we'd just as soon not waste cycles on dummy parse * nodes if we don't have to. */ - (yyval.node) = (Node *) makeA_Expr(AEXPR_PAREN, NIL, (yyvsp[-2].node), NULL, - exprLocation((yyvsp[-2].node))); + (yyval.node) = (Node *) makeA_Expr(AEXPR_PAREN, NIL, (yyvsp[(2) - (4)].node), NULL, + exprLocation((yyvsp[(2) - (4)].node))); } else - (yyval.node) = (yyvsp[-2].node); + (yyval.node) = (yyvsp[(2) - (4)].node); } -#line 41827 "gram.c" /* yacc.c:1646 */ break; case 1962: -#line 13141 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41833 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13141 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1963: -#line 13143 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 41839 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13143 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1964: -#line 13145 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13145 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXPR_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[0].node); - n->location = (yylsp[0]); + n->subselect = (yyvsp[(1) - (1)].node); + n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; } -#line 41854 "gram.c" /* yacc.c:1646 */ break; case 1965: -#line 13156 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13156 "gram.y" { /* * Because the select_with_parens nonterminal is designed @@ -41872,162 +43260,162 @@ yyreduce: n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[-1].node); - n->location = (yylsp[-1]); + n->subselect = (yyvsp[(1) - (2)].node); + n->location = (yylsp[(1) - (2)]); a->arg = (Node *)n; - a->indirection = check_indirection((yyvsp[0].list), yyscanner); + a->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *)a; } -#line 41882 "gram.c" /* yacc.c:1646 */ break; case 1966: -#line 13180 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13180 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXISTS_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[0].node); - n->location = (yylsp[-1]); + n->subselect = (yyvsp[(2) - (2)].node); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 41897 "gram.c" /* yacc.c:1646 */ break; case 1967: -#line 13191 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13191 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = ARRAY_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; - n->subselect = (yyvsp[0].node); - n->location = (yylsp[-1]); + n->subselect = (yyvsp[(2) - (2)].node); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 41912 "gram.c" /* yacc.c:1646 */ break; case 1968: -#line 13202 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13202 "gram.y" { - A_ArrayExpr *n = castNode(A_ArrayExpr, (yyvsp[0].node)); + A_ArrayExpr *n = castNode(A_ArrayExpr, (yyvsp[(2) - (2)].node)); /* point outermost A_ArrayExpr to the ARRAY keyword */ - n->location = (yylsp[-1]); + n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; } -#line 41923 "gram.c" /* yacc.c:1646 */ break; case 1969: -#line 13209 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13209 "gram.y" { RowExpr *r = makeNode(RowExpr); - r->args = (yyvsp[0].list); + r->args = (yyvsp[(1) - (1)].list); r->row_typeid = InvalidOid; /* not analyzed yet */ r->colnames = NIL; /* to be filled in during analysis */ r->row_format = COERCE_EXPLICIT_CALL; /* abuse */ - r->location = (yylsp[0]); + r->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)r; } -#line 41937 "gram.c" /* yacc.c:1646 */ break; case 1970: -#line 13219 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13219 "gram.y" { RowExpr *r = makeNode(RowExpr); - r->args = (yyvsp[0].list); + r->args = (yyvsp[(1) - (1)].list); r->row_typeid = InvalidOid; /* not analyzed yet */ r->colnames = NIL; /* to be filled in during analysis */ r->row_format = COERCE_IMPLICIT_CAST; /* abuse */ - r->location = (yylsp[0]); + r->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)r; } -#line 41951 "gram.c" /* yacc.c:1646 */ break; case 1971: -#line 13229 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13229 "gram.y" { GroupingFunc *g = makeNode(GroupingFunc); - g->args = (yyvsp[-1].list); - g->location = (yylsp[-3]); + g->args = (yyvsp[(3) - (4)].list); + g->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)g; } -#line 41962 "gram.c" /* yacc.c:1646 */ break; case 1972: -#line 13238 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13238 "gram.y" { - (yyval.node) = (Node *) makeFuncCall((yyvsp[-2].list), NIL, (yylsp[-2])); + (yyval.node) = (Node *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, (yylsp[(1) - (3)])); } -#line 41970 "gram.c" /* yacc.c:1646 */ break; case 1973: -#line 13242 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13242 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-4].list), (yyvsp[-2].list), (yylsp[-4])); - n->agg_order = (yyvsp[-1].list); + FuncCall *n = makeFuncCall((yyvsp[(1) - (5)].list), (yyvsp[(3) - (5)].list), (yylsp[(1) - (5)])); + n->agg_order = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *)n; } -#line 41980 "gram.c" /* yacc.c:1646 */ break; case 1974: -#line 13248 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13248 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-5].list), list_make1((yyvsp[-2].node)), (yylsp[-5])); + FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), list_make1((yyvsp[(4) - (6)].node)), (yylsp[(1) - (6)])); n->func_variadic = TRUE; - n->agg_order = (yyvsp[-1].list); + n->agg_order = (yyvsp[(5) - (6)].list); (yyval.node) = (Node *)n; } -#line 41991 "gram.c" /* yacc.c:1646 */ break; case 1975: -#line 13255 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13255 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-7].list), lappend((yyvsp[-5].list), (yyvsp[-2].node)), (yylsp[-7])); + FuncCall *n = makeFuncCall((yyvsp[(1) - (8)].list), lappend((yyvsp[(3) - (8)].list), (yyvsp[(6) - (8)].node)), (yylsp[(1) - (8)])); n->func_variadic = TRUE; - n->agg_order = (yyvsp[-1].list); + n->agg_order = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *)n; } -#line 42002 "gram.c" /* yacc.c:1646 */ break; case 1976: -#line 13262 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13262 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-5].list), (yyvsp[-2].list), (yylsp[-5])); - n->agg_order = (yyvsp[-1].list); + FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); + n->agg_order = (yyvsp[(5) - (6)].list); /* Ideally we'd mark the FuncCall node to indicate * "must be an aggregate", but there's no provision * for that in FuncCall at the moment. */ (yyval.node) = (Node *)n; } -#line 42016 "gram.c" /* yacc.c:1646 */ break; case 1977: -#line 13272 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13272 "gram.y" { - FuncCall *n = makeFuncCall((yyvsp[-5].list), (yyvsp[-2].list), (yylsp[-5])); - n->agg_order = (yyvsp[-1].list); + FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); + n->agg_order = (yyvsp[(5) - (6)].list); n->agg_distinct = TRUE; (yyval.node) = (Node *)n; } -#line 42027 "gram.c" /* yacc.c:1646 */ break; case 1978: -#line 13279 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13279 "gram.y" { /* * We consider AGGREGATE(*) to invoke a parameterless @@ -42039,17 +43427,17 @@ yyreduce: * so that later processing can detect what the argument * really was. */ - FuncCall *n = makeFuncCall((yyvsp[-3].list), NIL, (yylsp[-3])); + FuncCall *n = makeFuncCall((yyvsp[(1) - (4)].list), NIL, (yylsp[(1) - (4)])); n->agg_star = TRUE; (yyval.node) = (Node *)n; } -#line 42047 "gram.c" /* yacc.c:1646 */ break; case 1979: -#line 13307 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13307 "gram.y" { - FuncCall *n = (FuncCall *) (yyvsp[-3].node); + FuncCall *n = (FuncCall *) (yyvsp[(1) - (4)].node); /* * The order clause for WITHIN GROUP and the one for * plain-aggregate ORDER BY share a field, so we have to @@ -42058,230 +43446,230 @@ yyreduce: * location. Other consistency checks are deferred to * parse analysis. */ - if ((yyvsp[-2].list) != NIL) + if ((yyvsp[(2) - (4)].list) != NIL) { if (n->agg_order != NIL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(2) - (4)])))); if (n->agg_distinct) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use DISTINCT with WITHIN GROUP"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(2) - (4)])))); if (n->func_variadic) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use VARIADIC with WITHIN GROUP"), - parser_errposition((yylsp[-2])))); - n->agg_order = (yyvsp[-2].list); + parser_errposition((yylsp[(2) - (4)])))); + n->agg_order = (yyvsp[(2) - (4)].list); n->agg_within_group = TRUE; } - n->agg_filter = (yyvsp[-1].node); - n->over = (yyvsp[0].windef); + n->agg_filter = (yyvsp[(3) - (4)].node); + n->over = (yyvsp[(4) - (4)].windef); (yyval.node) = (Node *) n; } -#line 42086 "gram.c" /* yacc.c:1646 */ break; case 1980: -#line 13342 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 42092 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13342 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1981: -#line 13352 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 42098 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13352 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1982: -#line 13353 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 42104 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13353 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 1983: -#line 13361 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13361 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), - list_make1((yyvsp[-1].node)), - (yylsp[-4])); + list_make1((yyvsp[(4) - (5)].node)), + (yylsp[(1) - (5)])); } -#line 42114 "gram.c" /* yacc.c:1646 */ break; case 1984: -#line 13367 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13367 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); } -#line 42122 "gram.c" /* yacc.c:1646 */ break; case 1985: -#line 13371 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13371 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); } -#line 42130 "gram.c" /* yacc.c:1646 */ break; case 1986: -#line 13375 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13375 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, (yyvsp[-1].ival), (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 42138 "gram.c" /* yacc.c:1646 */ break; case 1987: -#line 13379 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13379 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); } -#line 42146 "gram.c" /* yacc.c:1646 */ break; case 1988: -#line 13383 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13383 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[-1].ival), (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 42154 "gram.c" /* yacc.c:1646 */ break; case 1989: -#line 13387 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13387 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); } -#line 42162 "gram.c" /* yacc.c:1646 */ break; case 1990: -#line 13391 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13391 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME_N, (yyvsp[-1].ival), (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 42170 "gram.c" /* yacc.c:1646 */ break; case 1991: -#line 13395 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13395 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); } -#line 42178 "gram.c" /* yacc.c:1646 */ break; case 1992: -#line 13399 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13399 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, (yyvsp[-1].ival), (yylsp[-3])); + (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); } -#line 42186 "gram.c" /* yacc.c:1646 */ break; case 1993: -#line 13403 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13403 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); } -#line 42194 "gram.c" /* yacc.c:1646 */ break; case 1994: -#line 13407 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13407 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); } -#line 42202 "gram.c" /* yacc.c:1646 */ break; case 1995: -#line 13411 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13411 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_SESSION_USER, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); } -#line 42210 "gram.c" /* yacc.c:1646 */ break; case 1996: -#line 13415 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13415 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_USER, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_USER, -1, (yylsp[(1) - (1)])); } -#line 42218 "gram.c" /* yacc.c:1646 */ break; case 1997: -#line 13419 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13419 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); } -#line 42226 "gram.c" /* yacc.c:1646 */ break; case 1998: -#line 13423 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13423 "gram.y" { - (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, (yylsp[0])); + (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); } -#line 42234 "gram.c" /* yacc.c:1646 */ break; case 1999: -#line 13427 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam), (yylsp[-5])); } -#line 42240 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13427 "gram.y" + { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), (yylsp[(1) - (6)])); } break; case 2000: -#line 13429 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13429 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 42248 "gram.c" /* yacc.c:1646 */ break; case 2001: -#line 13433 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13433 "gram.y" { /* overlay(A PLACING B FROM C FOR D) is converted to * overlay(A, B, C, D) * overlay(A PLACING B FROM C) is converted to * overlay(A, B, C) */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 42261 "gram.c" /* yacc.c:1646 */ break; case 2002: -#line 13442 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13442 "gram.y" { /* position(A in B) is converted to position(B, A) */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("position"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("position"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 42270 "gram.c" /* yacc.c:1646 */ break; case 2003: -#line 13447 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13447 "gram.y" { /* substring(A from B for C) is converted to * substring(A, B, C) - thomas 2000-11-28 */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("substring"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("substring"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 42281 "gram.c" /* yacc.c:1646 */ break; case 2004: -#line 13454 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13454 "gram.y" { /* TREAT(expr AS target) converts expr of a particular type to target, * which is defined to be a subtype of the original expression. @@ -42292,503 +43680,503 @@ yyreduce: * Convert SystemTypeName() to SystemFuncName() even though * at the moment they result in the same thing. */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName(((Value *)llast((yyvsp[-1].typnam)->names))->val.str), - list_make1((yyvsp[-3].node)), - (yylsp[-5])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName(((Value *)llast((yyvsp[(5) - (6)].typnam)->names))->val.str), + list_make1((yyvsp[(3) - (6)].node)), + (yylsp[(1) - (6)])); } -#line 42300 "gram.c" /* yacc.c:1646 */ break; case 2005: -#line 13469 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13469 "gram.y" { /* various trim expressions are defined in SQL * - thomas 1997-07-19 */ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 42311 "gram.c" /* yacc.c:1646 */ break; case 2006: -#line 13476 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13476 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 42319 "gram.c" /* yacc.c:1646 */ break; case 2007: -#line 13480 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13480 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[-1].list), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); } -#line 42327 "gram.c" /* yacc.c:1646 */ break; case 2008: -#line 13484 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13484 "gram.y" { - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 42335 "gram.c" /* yacc.c:1646 */ break; case 2009: -#line 13488 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13488 "gram.y" { - (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[-3].node), (yyvsp[-1].node), (yylsp[-5])); + (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); } -#line 42343 "gram.c" /* yacc.c:1646 */ break; case 2010: -#line 13492 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13492 "gram.y" { CoalesceExpr *c = makeNode(CoalesceExpr); - c->args = (yyvsp[-1].list); - c->location = (yylsp[-3]); + c->args = (yyvsp[(3) - (4)].list); + c->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)c; } -#line 42354 "gram.c" /* yacc.c:1646 */ break; case 2011: -#line 13499 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13499 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); - v->args = (yyvsp[-1].list); + v->args = (yyvsp[(3) - (4)].list); v->op = IS_GREATEST; - v->location = (yylsp[-3]); + v->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)v; } -#line 42366 "gram.c" /* yacc.c:1646 */ break; case 2012: -#line 13507 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13507 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); - v->args = (yyvsp[-1].list); + v->args = (yyvsp[(3) - (4)].list); v->op = IS_LEAST; - v->location = (yylsp[-3]); + v->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)v; } -#line 42378 "gram.c" /* yacc.c:1646 */ break; case 2013: -#line 13515 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13515 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); } -#line 42386 "gram.c" /* yacc.c:1646 */ break; case 2014: -#line 13519 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13519 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-1].str), NIL, NIL, (yylsp[-4])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (5)].str), NIL, NIL, (yylsp[(1) - (5)])); } -#line 42394 "gram.c" /* yacc.c:1646 */ break; case 2015: -#line 13523 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13523 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), (yyvsp[-1].list), NIL, (yylsp[-6])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), (yyvsp[(6) - (7)].list), NIL, (yylsp[(1) - (7)])); } -#line 42402 "gram.c" /* yacc.c:1646 */ break; case 2016: -#line 13527 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13527 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-3].str), NIL, (yyvsp[-1].list), (yylsp[-6])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), NIL, (yyvsp[(6) - (7)].list), (yylsp[(1) - (7)])); } -#line 42410 "gram.c" /* yacc.c:1646 */ break; case 2017: -#line 13531 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13531 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[-5].str), (yyvsp[-3].list), (yyvsp[-1].list), (yylsp[-8])); + (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (9)].str), (yyvsp[(6) - (9)].list), (yyvsp[(8) - (9)].list), (yylsp[(1) - (9)])); } -#line 42418 "gram.c" /* yacc.c:1646 */ break; case 2018: -#line 13535 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13535 "gram.y" { /* xmlexists(A PASSING [BY REF] B [BY REF]) is * converted to xmlexists(A, B)*/ - (yyval.node) = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2((yyvsp[-2].node), (yyvsp[-1].node)), (yylsp[-4])); + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(4) - (5)].node)), (yylsp[(1) - (5)])); } -#line 42428 "gram.c" /* yacc.c:1646 */ break; case 2019: -#line 13541 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13541 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[-1].list), NIL, (yylsp[-3])); + (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[(3) - (4)].list), NIL, (yylsp[(1) - (4)])); } -#line 42436 "gram.c" /* yacc.c:1646 */ break; case 2020: -#line 13545 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13545 "gram.y" { XmlExpr *x = (XmlExpr *) makeXmlExpr(IS_XMLPARSE, NULL, NIL, - list_make2((yyvsp[-2].node), makeBoolAConst((yyvsp[-1].boolean), -1)), - (yylsp[-5])); - x->xmloption = (yyvsp[-3].ival); + list_make2((yyvsp[(4) - (6)].node), makeBoolAConst((yyvsp[(5) - (6)].boolean), -1)), + (yylsp[(1) - (6)])); + x->xmloption = (yyvsp[(3) - (6)].ival); (yyval.node) = (Node *)x; } -#line 42449 "gram.c" /* yacc.c:1646 */ break; case 2021: -#line 13554 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13554 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-1].str), NULL, NIL, (yylsp[-4])); + (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (5)].str), NULL, NIL, (yylsp[(1) - (5)])); } -#line 42457 "gram.c" /* yacc.c:1646 */ break; case 2022: -#line 13558 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13558 "gram.y" { - (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[-3].str), NULL, list_make1((yyvsp[-1].node)), (yylsp[-6])); + (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (7)].str), NULL, list_make1((yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); } -#line 42465 "gram.c" /* yacc.c:1646 */ break; case 2023: -#line 13562 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13562 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLROOT, NULL, NIL, - list_make3((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node)), (yylsp[-6])); + list_make3((yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); } -#line 42474 "gram.c" /* yacc.c:1646 */ break; case 2024: -#line 13567 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13567 "gram.y" { XmlSerialize *n = makeNode(XmlSerialize); - n->xmloption = (yyvsp[-4].ival); - n->expr = (yyvsp[-3].node); - n->typeName = (yyvsp[-1].typnam); - n->location = (yylsp[-6]); + n->xmloption = (yyvsp[(3) - (7)].ival); + n->expr = (yyvsp[(4) - (7)].node); + n->typeName = (yyvsp[(6) - (7)].typnam); + n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *)n; } -#line 42487 "gram.c" /* yacc.c:1646 */ break; case 2025: -#line 13581 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 42493 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13581 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 2026: -#line 13583 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13583 "gram.y" { (yyval.node) = makeNullAConst(-1); } -#line 42499 "gram.c" /* yacc.c:1646 */ break; case 2027: -#line 13587 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13587 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_YES, -1); } -#line 42505 "gram.c" /* yacc.c:1646 */ break; case 2028: -#line 13589 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13589 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO, -1); } -#line 42511 "gram.c" /* yacc.c:1646 */ break; case 2029: -#line 13591 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13591 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } -#line 42517 "gram.c" /* yacc.c:1646 */ break; case 2030: -#line 13593 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13593 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_OMITTED, -1); } -#line 42523 "gram.c" /* yacc.c:1646 */ break; case 2031: -#line 13596 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 42529 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13596 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 2032: -#line 13599 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 42535 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13599 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; case 2033: -#line 13600 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } -#line 42541 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13600 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } break; case 2034: -#line 13604 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13604 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *) (yyvsp[-2].node); - (yyval.target)->location = (yylsp[-2]); + (yyval.target)->val = (Node *) (yyvsp[(1) - (3)].node); + (yyval.target)->location = (yylsp[(1) - (3)]); } -#line 42553 "gram.c" /* yacc.c:1646 */ break; case 2035: -#line 13612 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13612 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *) (yyvsp[0].node); - (yyval.target)->location = (yylsp[0]); + (yyval.target)->val = (Node *) (yyvsp[(1) - (1)].node); + (yyval.target)->location = (yylsp[(1) - (1)]); } -#line 42565 "gram.c" /* yacc.c:1646 */ break; case 2036: -#line 13621 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13621 "gram.y" { (yyval.ival) = XMLOPTION_DOCUMENT; } -#line 42571 "gram.c" /* yacc.c:1646 */ break; case 2037: -#line 13622 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13622 "gram.y" { (yyval.ival) = XMLOPTION_CONTENT; } -#line 42577 "gram.c" /* yacc.c:1646 */ break; case 2038: -#line 13625 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13625 "gram.y" { (yyval.boolean) = TRUE; } -#line 42583 "gram.c" /* yacc.c:1646 */ break; case 2039: -#line 13626 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13626 "gram.y" { (yyval.boolean) = FALSE; } -#line 42589 "gram.c" /* yacc.c:1646 */ break; case 2040: -#line 13627 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13627 "gram.y" { (yyval.boolean) = FALSE; } -#line 42595 "gram.c" /* yacc.c:1646 */ break; case 2041: -#line 13633 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13633 "gram.y" { - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(2) - (2)].node); } -#line 42603 "gram.c" /* yacc.c:1646 */ break; case 2042: -#line 13637 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13637 "gram.y" { - (yyval.node) = (yyvsp[-2].node); + (yyval.node) = (yyvsp[(2) - (4)].node); } -#line 42611 "gram.c" /* yacc.c:1646 */ break; case 2043: -#line 13641 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13641 "gram.y" { - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(4) - (4)].node); } -#line 42619 "gram.c" /* yacc.c:1646 */ break; case 2044: -#line 13645 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13645 "gram.y" { - (yyval.node) = (yyvsp[-2].node); + (yyval.node) = (yyvsp[(4) - (6)].node); } -#line 42627 "gram.c" /* yacc.c:1646 */ break; case 2045: -#line 13655 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 42633 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13655 "gram.y" + { (yyval.list) = (yyvsp[(4) - (5)].list); } break; case 2046: -#line 13656 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13656 "gram.y" { (yyval.list) = NIL; } -#line 42639 "gram.c" /* yacc.c:1646 */ break; case 2047: -#line 13660 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[-1].node); } -#line 42645 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13660 "gram.y" + { (yyval.node) = (yyvsp[(4) - (5)].node); } break; case 2048: -#line 13661 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13661 "gram.y" { (yyval.node) = NULL; } -#line 42651 "gram.c" /* yacc.c:1646 */ break; case 2049: -#line 13669 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 42657 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13669 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 2050: -#line 13670 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13670 "gram.y" { (yyval.list) = NIL; } -#line 42663 "gram.c" /* yacc.c:1646 */ break; case 2051: -#line 13674 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].windef)); } -#line 42669 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13674 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); } break; case 2052: -#line 13676 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].windef)); } -#line 42675 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13676 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); } break; case 2053: -#line 13681 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13681 "gram.y" { - WindowDef *n = (yyvsp[0].windef); - n->name = (yyvsp[-2].str); + WindowDef *n = (yyvsp[(3) - (3)].windef); + n->name = (yyvsp[(1) - (3)].str); (yyval.windef) = n; } -#line 42685 "gram.c" /* yacc.c:1646 */ break; case 2054: -#line 13689 "gram.y" /* yacc.c:1646 */ - { (yyval.windef) = (yyvsp[0].windef); } -#line 42691 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13689 "gram.y" + { (yyval.windef) = (yyvsp[(2) - (2)].windef); } break; case 2055: -#line 13691 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13691 "gram.y" { WindowDef *n = makeNode(WindowDef); - n->name = (yyvsp[0].str); + n->name = (yyvsp[(2) - (2)].str); n->refname = NULL; n->partitionClause = NIL; n->orderClause = NIL; n->frameOptions = FRAMEOPTION_DEFAULTS; n->startOffset = NULL; n->endOffset = NULL; - n->location = (yylsp[0]); + n->location = (yylsp[(2) - (2)]); (yyval.windef) = n; } -#line 42708 "gram.c" /* yacc.c:1646 */ break; case 2056: -#line 13704 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13704 "gram.y" { (yyval.windef) = NULL; } -#line 42714 "gram.c" /* yacc.c:1646 */ break; case 2057: -#line 13709 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13709 "gram.y" { WindowDef *n = makeNode(WindowDef); n->name = NULL; - n->refname = (yyvsp[-4].str); - n->partitionClause = (yyvsp[-3].list); - n->orderClause = (yyvsp[-2].list); + n->refname = (yyvsp[(2) - (6)].str); + n->partitionClause = (yyvsp[(3) - (6)].list); + n->orderClause = (yyvsp[(4) - (6)].list); /* copy relevant fields of opt_frame_clause */ - n->frameOptions = (yyvsp[-1].windef)->frameOptions; - n->startOffset = (yyvsp[-1].windef)->startOffset; - n->endOffset = (yyvsp[-1].windef)->endOffset; - n->location = (yylsp[-5]); + n->frameOptions = (yyvsp[(5) - (6)].windef)->frameOptions; + n->startOffset = (yyvsp[(5) - (6)].windef)->startOffset; + n->endOffset = (yyvsp[(5) - (6)].windef)->endOffset; + n->location = (yylsp[(1) - (6)]); (yyval.windef) = n; } -#line 42732 "gram.c" /* yacc.c:1646 */ break; case 2058: -#line 13734 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 42738 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13734 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2059: -#line 13735 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13735 "gram.y" { (yyval.str) = NULL; } -#line 42744 "gram.c" /* yacc.c:1646 */ break; case 2060: -#line 13738 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 42750 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13738 "gram.y" + { (yyval.list) = (yyvsp[(3) - (3)].list); } break; case 2061: -#line 13739 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13739 "gram.y" { (yyval.list) = NIL; } -#line 42756 "gram.c" /* yacc.c:1646 */ break; case 2062: -#line 13751 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13751 "gram.y" { - WindowDef *n = (yyvsp[0].windef); + WindowDef *n = (yyvsp[(2) - (2)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | FRAMEOPTION_END_VALUE_PRECEDING)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RANGE PRECEDING is only supported with UNBOUNDED"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); if (n->frameOptions & (FRAMEOPTION_START_VALUE_FOLLOWING | FRAMEOPTION_END_VALUE_FOLLOWING)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RANGE FOLLOWING is only supported with UNBOUNDED"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); (yyval.windef) = n; } -#line 42778 "gram.c" /* yacc.c:1646 */ break; case 2063: -#line 13769 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13769 "gram.y" { - WindowDef *n = (yyvsp[0].windef); + WindowDef *n = (yyvsp[(2) - (2)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; (yyval.windef) = n; } -#line 42788 "gram.c" /* yacc.c:1646 */ break; case 2064: -#line 13775 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13775 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_DEFAULTS; @@ -42796,35 +44184,35 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 42800 "gram.c" /* yacc.c:1646 */ break; case 2065: -#line 13785 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13785 "gram.y" { - WindowDef *n = (yyvsp[0].windef); + WindowDef *n = (yyvsp[(1) - (1)].windef); /* reject invalid cases */ if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from following row cannot end with current row"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; (yyval.windef) = n; } -#line 42821 "gram.c" /* yacc.c:1646 */ break; case 2066: -#line 13802 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13802 "gram.y" { - WindowDef *n1 = (yyvsp[-2].windef); - WindowDef *n2 = (yyvsp[0].windef); + WindowDef *n1 = (yyvsp[(2) - (4)].windef); + WindowDef *n2 = (yyvsp[(4) - (4)].windef); /* form merged options */ int frameOptions = n1->frameOptions; /* shift converts START_ options to END_ options */ @@ -42835,34 +44223,34 @@ yyreduce: ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(2) - (4)])))); if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame end cannot be UNBOUNDED PRECEDING"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(4) - (4)])))); if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from current row cannot have preceding rows"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(4) - (4)])))); if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | FRAMEOPTION_END_CURRENT_ROW))) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from following row cannot have preceding rows"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(4) - (4)])))); n1->frameOptions = frameOptions; n1->endOffset = n2->startOffset; (yyval.windef) = n1; } -#line 42862 "gram.c" /* yacc.c:1646 */ break; case 2067: -#line 13847 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13847 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; @@ -42870,11 +44258,11 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 42874 "gram.c" /* yacc.c:1646 */ break; case 2068: -#line 13855 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13855 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; @@ -42882,11 +44270,11 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 42886 "gram.c" /* yacc.c:1646 */ break; case 2069: -#line 13863 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13863 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; @@ -42894,468 +44282,468 @@ yyreduce: n->endOffset = NULL; (yyval.windef) = n; } -#line 42898 "gram.c" /* yacc.c:1646 */ break; case 2070: -#line 13871 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13871 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; - n->startOffset = (yyvsp[-1].node); + n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; } -#line 42910 "gram.c" /* yacc.c:1646 */ break; case 2071: -#line 13879 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13879 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; - n->startOffset = (yyvsp[-1].node); + n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; } -#line 42922 "gram.c" /* yacc.c:1646 */ break; case 2072: -#line 13899 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 42928 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13899 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 2073: -#line 13900 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13900 "gram.y" { (yyval.list) = NIL; } -#line 42934 "gram.c" /* yacc.c:1646 */ break; case 2074: -#line 13901 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-3].list), (yyvsp[-1].node)); } -#line 42940 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13901 "gram.y" + { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); } break; case 2075: -#line 13904 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 42946 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13904 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 2076: -#line 13905 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13905 "gram.y" { (yyval.list) = NIL; } -#line 42952 "gram.c" /* yacc.c:1646 */ break; case 2077: -#line 13908 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-3].list), (yyvsp[-1].node)); } -#line 42958 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13908 "gram.y" + { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); } break; case 2078: -#line 13911 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13911 "gram.y" { (yyval.ival) = ANY_SUBLINK; } -#line 42964 "gram.c" /* yacc.c:1646 */ break; case 2079: -#line 13912 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13912 "gram.y" { (yyval.ival) = ANY_SUBLINK; } -#line 42970 "gram.c" /* yacc.c:1646 */ break; case 2080: -#line 13913 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13913 "gram.y" { (yyval.ival) = ALL_SUBLINK; } -#line 42976 "gram.c" /* yacc.c:1646 */ break; case 2081: -#line 13916 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 42982 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13916 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2082: -#line 13917 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 42988 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13917 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2083: -#line 13920 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13920 "gram.y" { (yyval.str) = "+"; } -#line 42994 "gram.c" /* yacc.c:1646 */ break; case 2084: -#line 13921 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13921 "gram.y" { (yyval.str) = "-"; } -#line 43000 "gram.c" /* yacc.c:1646 */ break; case 2085: -#line 13922 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13922 "gram.y" { (yyval.str) = "*"; } -#line 43006 "gram.c" /* yacc.c:1646 */ break; case 2086: -#line 13923 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13923 "gram.y" { (yyval.str) = "/"; } -#line 43012 "gram.c" /* yacc.c:1646 */ break; case 2087: -#line 13924 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13924 "gram.y" { (yyval.str) = "%"; } -#line 43018 "gram.c" /* yacc.c:1646 */ break; case 2088: -#line 13925 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13925 "gram.y" { (yyval.str) = "^"; } -#line 43024 "gram.c" /* yacc.c:1646 */ break; case 2089: -#line 13926 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13926 "gram.y" { (yyval.str) = "<"; } -#line 43030 "gram.c" /* yacc.c:1646 */ break; case 2090: -#line 13927 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13927 "gram.y" { (yyval.str) = ">"; } -#line 43036 "gram.c" /* yacc.c:1646 */ break; case 2091: -#line 13928 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13928 "gram.y" { (yyval.str) = "="; } -#line 43042 "gram.c" /* yacc.c:1646 */ break; case 2092: -#line 13929 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13929 "gram.y" { (yyval.str) = "<="; } -#line 43048 "gram.c" /* yacc.c:1646 */ break; case 2093: -#line 13930 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13930 "gram.y" { (yyval.str) = ">="; } -#line 43054 "gram.c" /* yacc.c:1646 */ break; case 2094: -#line 13931 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13931 "gram.y" { (yyval.str) = "<>"; } -#line 43060 "gram.c" /* yacc.c:1646 */ break; case 2095: -#line 13935 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 43066 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13935 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 2096: -#line 13937 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 43072 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13937 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 2097: -#line 13942 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 43078 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13942 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 2098: -#line 13944 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 43084 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13944 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 2099: -#line 13949 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 43090 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13949 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 2100: -#line 13951 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[-1].list); } -#line 43096 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13951 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); } break; case 2101: -#line 13953 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13953 "gram.y" { (yyval.list) = list_make1(makeString("~~")); } -#line 43102 "gram.c" /* yacc.c:1646 */ break; case 2102: -#line 13955 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13955 "gram.y" { (yyval.list) = list_make1(makeString("!~~")); } -#line 43108 "gram.c" /* yacc.c:1646 */ break; case 2103: -#line 13957 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13957 "gram.y" { (yyval.list) = list_make1(makeString("~~*")); } -#line 43114 "gram.c" /* yacc.c:1646 */ break; case 2104: -#line 13959 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13959 "gram.y" { (yyval.list) = list_make1(makeString("!~~*")); } -#line 43120 "gram.c" /* yacc.c:1646 */ break; case 2105: -#line 13971 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13971 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 43128 "gram.c" /* yacc.c:1646 */ break; case 2106: -#line 13975 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13975 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 43136 "gram.c" /* yacc.c:1646 */ break; case 2107: -#line 13982 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13982 "gram.y" { - (yyval.list) = list_make1((yyvsp[0].node)); + (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } -#line 43144 "gram.c" /* yacc.c:1646 */ break; case 2108: -#line 13986 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13986 "gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } -#line 43152 "gram.c" /* yacc.c:1646 */ break; case 2109: -#line 13992 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13992 "gram.y" { - (yyval.node) = (yyvsp[0].node); + (yyval.node) = (yyvsp[(1) - (1)].node); } -#line 43160 "gram.c" /* yacc.c:1646 */ break; case 2110: -#line 13996 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 13996 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); - na->name = (yyvsp[-2].str); - na->arg = (Expr *) (yyvsp[0].node); + na->name = (yyvsp[(1) - (3)].str); + na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ - na->location = (yylsp[-2]); + na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; } -#line 43173 "gram.c" /* yacc.c:1646 */ break; case 2111: -#line 14005 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14005 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); - na->name = (yyvsp[-2].str); - na->arg = (Expr *) (yyvsp[0].node); + na->name = (yyvsp[(1) - (3)].str); + na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ - na->location = (yylsp[-2]); + na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; } -#line 43186 "gram.c" /* yacc.c:1646 */ break; case 2112: -#line 14015 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].typnam)); } -#line 43192 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14015 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); } break; case 2113: -#line 14016 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].typnam)); } -#line 43198 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14016 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); } break; case 2114: -#line 14020 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14020 "gram.y" { - (yyval.node) = makeAArrayExpr((yyvsp[-1].list), (yylsp[-2])); + (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); } -#line 43206 "gram.c" /* yacc.c:1646 */ break; case 2115: -#line 14024 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14024 "gram.y" { - (yyval.node) = makeAArrayExpr((yyvsp[-1].list), (yylsp[-2])); + (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); } -#line 43214 "gram.c" /* yacc.c:1646 */ break; case 2116: -#line 14028 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14028 "gram.y" { - (yyval.node) = makeAArrayExpr(NIL, (yylsp[-1])); + (yyval.node) = makeAArrayExpr(NIL, (yylsp[(1) - (2)])); } -#line 43222 "gram.c" /* yacc.c:1646 */ break; case 2117: -#line 14033 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 43228 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14033 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 2118: -#line 14034 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } -#line 43234 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14034 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 2119: -#line 14040 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14040 "gram.y" { - (yyval.list) = list_make2(makeStringConst((yyvsp[-2].str), (yylsp[-2])), (yyvsp[0].node)); + (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); } -#line 43242 "gram.c" /* yacc.c:1646 */ break; case 2120: -#line 14043 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14043 "gram.y" { (yyval.list) = NIL; } -#line 43248 "gram.c" /* yacc.c:1646 */ break; case 2121: -#line 14050 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43254 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14050 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2122: -#line 14051 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14051 "gram.y" { (yyval.str) = "year"; } -#line 43260 "gram.c" /* yacc.c:1646 */ break; case 2123: -#line 14052 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14052 "gram.y" { (yyval.str) = "month"; } -#line 43266 "gram.c" /* yacc.c:1646 */ break; case 2124: -#line 14053 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14053 "gram.y" { (yyval.str) = "day"; } -#line 43272 "gram.c" /* yacc.c:1646 */ break; case 2125: -#line 14054 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14054 "gram.y" { (yyval.str) = "hour"; } -#line 43278 "gram.c" /* yacc.c:1646 */ break; case 2126: -#line 14055 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14055 "gram.y" { (yyval.str) = "minute"; } -#line 43284 "gram.c" /* yacc.c:1646 */ break; case 2127: -#line 14056 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14056 "gram.y" { (yyval.str) = "second"; } -#line 43290 "gram.c" /* yacc.c:1646 */ break; case 2128: -#line 14057 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43296 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14057 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2129: -#line 14068 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14068 "gram.y" { - (yyval.list) = list_make4((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make4((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node)); } -#line 43304 "gram.c" /* yacc.c:1646 */ break; case 2130: -#line 14072 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14072 "gram.y" { - (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); } -#line 43312 "gram.c" /* yacc.c:1646 */ break; case 2131: -#line 14079 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 43318 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14079 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 2132: -#line 14085 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-2].node)); } -#line 43324 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14085 "gram.y" + { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); } break; case 2133: -#line 14086 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14086 "gram.y" { (yyval.list) = NIL; } -#line 43330 "gram.c" /* yacc.c:1646 */ break; case 2134: -#line 14103 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14103 "gram.y" { - (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); } -#line 43338 "gram.c" /* yacc.c:1646 */ break; case 2135: -#line 14107 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14107 "gram.y" { /* not legal per SQL99, but might as well allow it */ - (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[0].node), (yyvsp[-1].node)); + (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyvsp[(2) - (3)].node)); } -#line 43347 "gram.c" /* yacc.c:1646 */ break; case 2136: -#line 14112 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14112 "gram.y" { - (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); + (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } -#line 43355 "gram.c" /* yacc.c:1646 */ break; case 2137: -#line 14116 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14116 "gram.y" { /* * Since there are no cases where this syntax allows @@ -43366,477 +44754,477 @@ yyreduce: * which it is likely to do if the second argument * is unknown or doesn't have an implicit cast to int4. */ - (yyval.list) = list_make3((yyvsp[-1].node), makeIntConst(1, -1), - makeTypeCast((yyvsp[0].node), + (yyval.list) = list_make3((yyvsp[(1) - (2)].node), makeIntConst(1, -1), + makeTypeCast((yyvsp[(2) - (2)].node), SystemTypeName("int4"), -1)); } -#line 43374 "gram.c" /* yacc.c:1646 */ break; case 2138: -#line 14131 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14131 "gram.y" { - (yyval.list) = (yyvsp[0].list); + (yyval.list) = (yyvsp[(1) - (1)].list); } -#line 43382 "gram.c" /* yacc.c:1646 */ break; case 2139: -#line 14135 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14135 "gram.y" { (yyval.list) = NIL; } -#line 43388 "gram.c" /* yacc.c:1646 */ break; case 2140: -#line 14139 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 43394 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14139 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 2141: -#line 14142 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 43400 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14142 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 2142: -#line 14145 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[0].list), (yyvsp[-2].node)); } -#line 43406 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14145 "gram.y" + { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); } break; case 2143: -#line 14146 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 43412 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14146 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 2144: -#line 14147 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 43418 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14147 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 2145: -#line 14151 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14151 "gram.y" { SubLink *n = makeNode(SubLink); - n->subselect = (yyvsp[0].node); + n->subselect = (yyvsp[(1) - (1)].node); /* other fields will be filled later */ (yyval.node) = (Node *)n; } -#line 43429 "gram.c" /* yacc.c:1646 */ break; case 2146: -#line 14157 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (Node *)(yyvsp[-1].list); } -#line 43435 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14157 "gram.y" + { (yyval.node) = (Node *)(yyvsp[(2) - (3)].list); } break; case 2147: -#line 14168 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14168 "gram.y" { CaseExpr *c = makeNode(CaseExpr); c->casetype = InvalidOid; /* not analyzed yet */ - c->arg = (Expr *) (yyvsp[-3].node); - c->args = (yyvsp[-2].list); - c->defresult = (Expr *) (yyvsp[-1].node); - c->location = (yylsp[-4]); + c->arg = (Expr *) (yyvsp[(2) - (5)].node); + c->args = (yyvsp[(3) - (5)].list); + c->defresult = (Expr *) (yyvsp[(4) - (5)].node); + c->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *)c; } -#line 43449 "gram.c" /* yacc.c:1646 */ break; case 2148: -#line 14181 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 43455 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14181 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 2149: -#line 14182 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 43461 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14182 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; case 2150: -#line 14187 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14187 "gram.y" { CaseWhen *w = makeNode(CaseWhen); - w->expr = (Expr *) (yyvsp[-2].node); - w->result = (Expr *) (yyvsp[0].node); - w->location = (yylsp[-3]); + w->expr = (Expr *) (yyvsp[(2) - (4)].node); + w->result = (Expr *) (yyvsp[(4) - (4)].node); + w->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)w; } -#line 43473 "gram.c" /* yacc.c:1646 */ break; case 2151: -#line 14197 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 43479 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14197 "gram.y" + { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 2152: -#line 14198 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14198 "gram.y" { (yyval.node) = NULL; } -#line 43485 "gram.c" /* yacc.c:1646 */ break; case 2153: -#line 14201 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 43491 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14201 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 2154: -#line 14202 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14202 "gram.y" { (yyval.node) = NULL; } -#line 43497 "gram.c" /* yacc.c:1646 */ break; case 2155: -#line 14206 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14206 "gram.y" { - (yyval.node) = makeColumnRef((yyvsp[0].str), NIL, (yylsp[0]), yyscanner); + (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); } -#line 43505 "gram.c" /* yacc.c:1646 */ break; case 2156: -#line 14210 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14210 "gram.y" { - (yyval.node) = makeColumnRef((yyvsp[-1].str), (yyvsp[0].list), (yylsp[-1]), yyscanner); + (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); } -#line 43513 "gram.c" /* yacc.c:1646 */ break; case 2157: -#line 14217 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14217 "gram.y" { - (yyval.node) = (Node *) makeString((yyvsp[0].str)); + (yyval.node) = (Node *) makeString((yyvsp[(2) - (2)].str)); } -#line 43521 "gram.c" /* yacc.c:1646 */ break; case 2158: -#line 14221 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14221 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); } -#line 43529 "gram.c" /* yacc.c:1646 */ break; case 2159: -#line 14225 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14225 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = false; ai->lidx = NULL; - ai->uidx = (yyvsp[-1].node); + ai->uidx = (yyvsp[(2) - (3)].node); (yyval.node) = (Node *) ai; } -#line 43541 "gram.c" /* yacc.c:1646 */ break; case 2160: -#line 14233 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14233 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = true; - ai->lidx = (yyvsp[-3].node); - ai->uidx = (yyvsp[-1].node); + ai->lidx = (yyvsp[(2) - (5)].node); + ai->uidx = (yyvsp[(4) - (5)].node); (yyval.node) = (Node *) ai; } -#line 43553 "gram.c" /* yacc.c:1646 */ break; case 2161: -#line 14243 "gram.y" /* yacc.c:1646 */ - { (yyval.node) = (yyvsp[0].node); } -#line 43559 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14243 "gram.y" + { (yyval.node) = (yyvsp[(1) - (1)].node); } break; case 2162: -#line 14244 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14244 "gram.y" { (yyval.node) = NULL; } -#line 43565 "gram.c" /* yacc.c:1646 */ break; case 2163: -#line 14248 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].node)); } -#line 43571 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14248 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); } break; case 2164: -#line 14249 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 43577 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14249 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; case 2165: -#line 14253 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14253 "gram.y" { (yyval.list) = NIL; } -#line 43583 "gram.c" /* yacc.c:1646 */ break; case 2166: -#line 14254 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } -#line 43589 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14254 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; case 2169: -#line 14268 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = (yyvsp[0].list); } -#line 43595 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14268 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); } break; case 2170: -#line 14269 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14269 "gram.y" { (yyval.list) = NIL; } -#line 43601 "gram.c" /* yacc.c:1646 */ break; case 2171: -#line 14273 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].target)); } -#line 43607 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14273 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); } break; case 2172: -#line 14274 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } -#line 43613 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14274 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); } break; case 2173: -#line 14278 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14278 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *)(yyvsp[-2].node); - (yyval.target)->location = (yylsp[-2]); + (yyval.target)->val = (Node *)(yyvsp[(1) - (3)].node); + (yyval.target)->location = (yylsp[(1) - (3)]); } -#line 43625 "gram.c" /* yacc.c:1646 */ break; case 2174: -#line 14294 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14294 "gram.y" { (yyval.target) = makeNode(ResTarget); - (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->name = (yyvsp[(2) - (2)].str); (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *)(yyvsp[-1].node); - (yyval.target)->location = (yylsp[-1]); + (yyval.target)->val = (Node *)(yyvsp[(1) - (2)].node); + (yyval.target)->location = (yylsp[(1) - (2)]); } -#line 43637 "gram.c" /* yacc.c:1646 */ break; case 2175: -#line 14302 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14302 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; - (yyval.target)->val = (Node *)(yyvsp[0].node); - (yyval.target)->location = (yylsp[0]); + (yyval.target)->val = (Node *)(yyvsp[(1) - (1)].node); + (yyval.target)->location = (yylsp[(1) - (1)]); } -#line 43649 "gram.c" /* yacc.c:1646 */ break; case 2176: -#line 14310 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14310 "gram.y" { ColumnRef *n = makeNode(ColumnRef); n->fields = list_make1(makeNode(A_Star)); - n->location = (yylsp[0]); + n->location = (yylsp[(1) - (1)]); (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *)n; - (yyval.target)->location = (yylsp[0]); + (yyval.target)->location = (yylsp[(1) - (1)]); } -#line 43665 "gram.c" /* yacc.c:1646 */ break; case 2177: -#line 14331 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].range)); } -#line 43671 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14331 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); } break; case 2178: -#line 14332 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } -#line 43677 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14332 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); } break; case 2179: -#line 14344 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14344 "gram.y" { - (yyval.range) = makeRangeVar(NULL, (yyvsp[0].str), (yylsp[0])); + (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 43685 "gram.c" /* yacc.c:1646 */ break; case 2180: -#line 14348 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14348 "gram.y" { - check_qualified_name((yyvsp[0].list), yyscanner); - (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[-1])); - switch (list_length((yyvsp[0].list))) + check_qualified_name((yyvsp[(2) - (2)].list), yyscanner); + (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[(1) - (2)])); + switch (list_length((yyvsp[(2) - (2)].list))) { case 1: (yyval.range)->catalogname = NULL; - (yyval.range)->schemaname = (yyvsp[-1].str); - (yyval.range)->relname = strVal(linitial((yyvsp[0].list))); + (yyval.range)->schemaname = (yyvsp[(1) - (2)].str); + (yyval.range)->relname = strVal(linitial((yyvsp[(2) - (2)].list))); break; case 2: - (yyval.range)->catalogname = (yyvsp[-1].str); - (yyval.range)->schemaname = strVal(linitial((yyvsp[0].list))); - (yyval.range)->relname = strVal(lsecond((yyvsp[0].list))); + (yyval.range)->catalogname = (yyvsp[(1) - (2)].str); + (yyval.range)->schemaname = strVal(linitial((yyvsp[(2) - (2)].list))); + (yyval.range)->relname = strVal(lsecond((yyvsp[(2) - (2)].list))); break; default: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", - NameListToString(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)))), - parser_errposition((yylsp[-1])))); + NameListToString(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)))), + parser_errposition((yylsp[(1) - (2)])))); break; } } -#line 43714 "gram.c" /* yacc.c:1646 */ break; case 2181: -#line 14375 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 43720 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14375 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 2182: -#line 14377 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } -#line 43726 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14377 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); } break; case 2183: -#line 14381 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43732 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14381 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2184: -#line 14384 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43738 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14384 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2185: -#line 14387 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43744 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14387 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2186: -#line 14389 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43750 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14389 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2187: -#line 14391 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43756 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14391 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2188: -#line 14393 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43762 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14393 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2189: -#line 14404 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } -#line 43768 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14404 "gram.y" + { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); } break; case 2190: -#line 14406 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14406 "gram.y" { - (yyval.list) = check_func_name(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)), + (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); } -#line 43777 "gram.c" /* yacc.c:1646 */ break; case 2191: -#line 14417 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14417 "gram.y" { - (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); + (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); } -#line 43785 "gram.c" /* yacc.c:1646 */ break; case 2192: -#line 14421 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14421 "gram.y" { - (yyval.node) = makeFloatConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 43793 "gram.c" /* yacc.c:1646 */ break; case 2193: -#line 14425 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14425 "gram.y" { - (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 43801 "gram.c" /* yacc.c:1646 */ break; case 2194: -#line 14429 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14429 "gram.y" { - (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 43809 "gram.c" /* yacc.c:1646 */ break; case 2195: -#line 14433 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14433 "gram.y" { /* This is a bit constant per SQL99: * Without Feature F511, "BIT data type", * a shall not be a * or a . */ - (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); } -#line 43822 "gram.c" /* yacc.c:1646 */ break; case 2196: -#line 14442 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14442 "gram.y" { /* generic type 'literal' syntax */ - TypeName *t = makeTypeNameFromNameList((yyvsp[-1].list)); - t->location = (yylsp[-1]); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); + t->location = (yylsp[(1) - (2)]); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), t); } -#line 43833 "gram.c" /* yacc.c:1646 */ break; case 2197: -#line 14449 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14449 "gram.y" { /* generic syntax with a type modifier */ - TypeName *t = makeTypeNameFromNameList((yyvsp[-5].list)); + TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (6)].list)); ListCell *lc; /* @@ -43845,7 +45233,7 @@ yyreduce: * don't actually wish to allow NamedArgExpr in this * context, nor ORDER BY. */ - foreach(lc, (yyvsp[-3].list)) + foreach(lc, (yyvsp[(3) - (6)].list)) { NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); @@ -43855,106 +45243,106 @@ yyreduce: errmsg("type modifier cannot have parameter name"), parser_errposition(arg->location))); } - if ((yyvsp[-2].list) != NIL) + if ((yyvsp[(4) - (6)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("type modifier cannot have ORDER BY"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(4) - (6)])))); - t->typmods = (yyvsp[-3].list); - t->location = (yylsp[-5]); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + t->typmods = (yyvsp[(3) - (6)].list); + t->location = (yylsp[(1) - (6)]); + (yyval.node) = makeStringConstCast((yyvsp[(6) - (6)].str), (yylsp[(6) - (6)]), t); } -#line 43869 "gram.c" /* yacc.c:1646 */ break; case 2198: -#line 14481 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14481 "gram.y" { - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), (yyvsp[-1].typnam)); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); } -#line 43877 "gram.c" /* yacc.c:1646 */ break; case 2199: -#line 14485 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14485 "gram.y" { - TypeName *t = (yyvsp[-2].typnam); - t->typmods = (yyvsp[0].list); - (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); + TypeName *t = (yyvsp[(1) - (3)].typnam); + t->typmods = (yyvsp[(3) - (3)].list); + (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); } -#line 43887 "gram.c" /* yacc.c:1646 */ break; case 2200: -#line 14491 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14491 "gram.y" { - TypeName *t = (yyvsp[-4].typnam); + TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); - (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); } -#line 43898 "gram.c" /* yacc.c:1646 */ break; case 2201: -#line 14498 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14498 "gram.y" { - (yyval.node) = makeBoolAConst(TRUE, (yylsp[0])); + (yyval.node) = makeBoolAConst(TRUE, (yylsp[(1) - (1)])); } -#line 43906 "gram.c" /* yacc.c:1646 */ break; case 2202: -#line 14502 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14502 "gram.y" { - (yyval.node) = makeBoolAConst(FALSE, (yylsp[0])); + (yyval.node) = makeBoolAConst(FALSE, (yylsp[(1) - (1)])); } -#line 43914 "gram.c" /* yacc.c:1646 */ break; case 2203: -#line 14506 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14506 "gram.y" { - (yyval.node) = makeNullAConst((yylsp[0])); + (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); } -#line 43922 "gram.c" /* yacc.c:1646 */ break; case 2204: -#line 14511 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 43928 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14511 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; case 2205: -#line 14512 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 43934 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14512 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2206: -#line 14514 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = (yyvsp[0].ival); } -#line 43940 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14514 "gram.y" + { (yyval.ival) = (yyvsp[(1) - (1)].ival); } break; case 2207: -#line 14515 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = + (yyvsp[0].ival); } -#line 43946 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14515 "gram.y" + { (yyval.ival) = + (yyvsp[(2) - (2)].ival); } break; case 2208: -#line 14516 "gram.y" /* yacc.c:1646 */ - { (yyval.ival) = - (yyvsp[0].ival); } -#line 43952 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14516 "gram.y" + { (yyval.ival) = - (yyvsp[(2) - (2)].ival); } break; case 2209: -#line 14521 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14521 "gram.y" { - RoleSpec *spc = (RoleSpec *) (yyvsp[0].rolespec); + RoleSpec *spc = (RoleSpec *) (yyvsp[(1) - (1)].rolespec); switch (spc->roletype) { case ROLESPEC_CSTRING: @@ -43965,175 +45353,175 @@ yyreduce: (errcode(ERRCODE_RESERVED_NAME), errmsg("role name \"%s\" is reserved", "public"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); case ROLESPEC_SESSION_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "SESSION_USER"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); case ROLESPEC_CURRENT_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "CURRENT_USER"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); } } -#line 43984 "gram.c" /* yacc.c:1646 */ break; case 2210: -#line 14551 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14551 "gram.y" { /* * "public" and "none" are not keywords, but they must * be treated specially here. */ RoleSpec *n; - if (strcmp((yyvsp[0].str), "public") == 0) + if (strcmp((yyvsp[(1) - (1)].str), "public") == 0) { - n = (RoleSpec *) makeRoleSpec(ROLESPEC_PUBLIC, (yylsp[0])); + n = (RoleSpec *) makeRoleSpec(ROLESPEC_PUBLIC, (yylsp[(1) - (1)])); n->roletype = ROLESPEC_PUBLIC; } - else if (strcmp((yyvsp[0].str), "none") == 0) + else if (strcmp((yyvsp[(1) - (1)].str), "none") == 0) { ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("role name \"%s\" is reserved", "none"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); } else { - n = makeRoleSpec(ROLESPEC_CSTRING, (yylsp[0])); - n->rolename = pstrdup((yyvsp[0].str)); + n = makeRoleSpec(ROLESPEC_CSTRING, (yylsp[(1) - (1)])); + n->rolename = pstrdup((yyvsp[(1) - (1)].str)); } (yyval.rolespec) = n; } -#line 44015 "gram.c" /* yacc.c:1646 */ break; case 2211: -#line 14578 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14578 "gram.y" { - (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[0])); + (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); } -#line 44023 "gram.c" /* yacc.c:1646 */ break; case 2212: -#line 14582 "gram.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14582 "gram.y" { - (yyval.rolespec) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[0])); + (yyval.rolespec) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[(1) - (1)])); } -#line 44031 "gram.c" /* yacc.c:1646 */ break; case 2213: -#line 14588 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = list_make1((yyvsp[0].rolespec)); } -#line 44037 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14588 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); } break; case 2214: -#line 14590 "gram.y" /* yacc.c:1646 */ - { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].rolespec)); } -#line 44043 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14590 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); } break; case 2215: -#line 14606 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 44049 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14606 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2216: -#line 14607 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44055 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14607 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2217: -#line 14608 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44061 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14608 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2218: -#line 14613 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 44067 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14613 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2219: -#line 14614 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44073 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14614 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2220: -#line 14615 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44079 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14615 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2221: -#line 14620 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 44085 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14620 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2222: -#line 14621 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44091 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14621 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2223: -#line 14622 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44097 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14622 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2224: -#line 14623 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44103 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14623 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2225: -#line 14629 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = (yyvsp[0].str); } -#line 44109 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14629 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 2226: -#line 14630 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44115 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14630 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2227: -#line 14631 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44121 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14631 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2228: -#line 14632 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44127 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14632 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; case 2229: -#line 14633 "gram.y" /* yacc.c:1646 */ - { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 44133 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 14633 "gram.y" + { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); } break; -#line 44137 "gram.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 45525 "gram.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -44156,7 +45544,7 @@ yyreduce: *++yyvsp = yyval; *++yylsp = yyloc; - /* Now 'shift' the result of the reduction. Determine what state + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -44171,9 +45559,9 @@ yyreduce: goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -44224,20 +45612,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc, yyscanner); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc, yyscanner); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -44257,7 +45645,7 @@ yyerrorlab: goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -44270,29 +45658,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp, yyscanner); + yystos[yystate], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -44348,14 +45736,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc, yyscanner); } - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp, yyscanner); + yystos[*yyssp], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); } #ifndef yyoverflow @@ -44366,9 +45754,13 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - return yyresult; + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 15122 "gram.y" /* yacc.c:1906 */ + + +/* Line 2055 of yacc.c */ +#line 15122 "gram.y" /* diff --git a/src/parser/gram.h b/src/parser/gram.h index bc4c06fb..4be071dc 100644 --- a/src/parser/gram.h +++ b/src/parser/gram.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_BASE_YY_GRAM_H_INCLUDED # define YY_BASE_YY_GRAM_H_INCLUDED -/* Debug traces. */ +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,465 +40,466 @@ extern int base_yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - ABORT_P = 273, - ABSOLUTE_P = 274, - ACCESS = 275, - ACTION = 276, - ADD_P = 277, - ADMIN = 278, - AFTER = 279, - AGGREGATE = 280, - ALL = 281, - ALSO = 282, - ALTER = 283, - ALWAYS = 284, - ANALYSE = 285, - ANALYZE = 286, - AND = 287, - ANY = 288, - ARRAY = 289, - AS = 290, - ASC = 291, - ASSERTION = 292, - ASSIGNMENT = 293, - ASYMMETRIC = 294, - AT = 295, - ATTACH = 296, - ATTRIBUTE = 297, - AUTHORIZATION = 298, - BACKWARD = 299, - BEFORE = 300, - BEGIN_P = 301, - BETWEEN = 302, - BIGINT = 303, - BINARY = 304, - BIT = 305, - BOOLEAN_P = 306, - BOTH = 307, - BY = 308, - CACHE = 309, - CALLED = 310, - CASCADE = 311, - CASCADED = 312, - CASE = 313, - CAST = 314, - CATALOG_P = 315, - CHAIN = 316, - CHAR_P = 317, - CHARACTER = 318, - CHARACTERISTICS = 319, - CHECK = 320, - CHECKPOINT = 321, - CLASS = 322, - CLOSE = 323, - CLUSTER = 324, - COALESCE = 325, - COLLATE = 326, - COLLATION = 327, - COLUMN = 328, - COLUMNS = 329, - COMMENT = 330, - COMMENTS = 331, - COMMIT = 332, - COMMITTED = 333, - CONCURRENTLY = 334, - CONFIGURATION = 335, - CONFLICT = 336, - CONNECTION = 337, - CONSTRAINT = 338, - CONSTRAINTS = 339, - CONTENT_P = 340, - CONTINUE_P = 341, - CONVERSION_P = 342, - COPY = 343, - COST = 344, - CREATE = 345, - CROSS = 346, - CSV = 347, - CUBE = 348, - CURRENT_P = 349, - CURRENT_CATALOG = 350, - CURRENT_DATE = 351, - CURRENT_ROLE = 352, - CURRENT_SCHEMA = 353, - CURRENT_TIME = 354, - CURRENT_TIMESTAMP = 355, - CURRENT_USER = 356, - CURSOR = 357, - CYCLE = 358, - DATA_P = 359, - DATABASE = 360, - DAY_P = 361, - DEALLOCATE = 362, - DEC = 363, - DECIMAL_P = 364, - DECLARE = 365, - DEFAULT = 366, - DEFAULTS = 367, - DEFERRABLE = 368, - DEFERRED = 369, - DEFINER = 370, - DELETE_P = 371, - DELIMITER = 372, - DELIMITERS = 373, - DEPENDS = 374, - DESC = 375, - DETACH = 376, - DICTIONARY = 377, - DISABLE_P = 378, - DISCARD = 379, - DISTINCT = 380, - DO = 381, - DOCUMENT_P = 382, - DOMAIN_P = 383, - DOUBLE_P = 384, - DROP = 385, - EACH = 386, - ELSE = 387, - ENABLE_P = 388, - ENCODING = 389, - ENCRYPTED = 390, - END_P = 391, - ENUM_P = 392, - ESCAPE = 393, - EVENT = 394, - EXCEPT = 395, - EXCLUDE = 396, - EXCLUDING = 397, - EXCLUSIVE = 398, - EXECUTE = 399, - EXISTS = 400, - EXPLAIN = 401, - EXTENSION = 402, - EXTERNAL = 403, - EXTRACT = 404, - FALSE_P = 405, - FAMILY = 406, - FETCH = 407, - FILTER = 408, - FIRST_P = 409, - FLOAT_P = 410, - FOLLOWING = 411, - FOR = 412, - FORCE = 413, - FOREIGN = 414, - FORWARD = 415, - FREEZE = 416, - FROM = 417, - FULL = 418, - FUNCTION = 419, - FUNCTIONS = 420, - GENERATED = 421, - GLOBAL = 422, - GRANT = 423, - GRANTED = 424, - GREATEST = 425, - GROUP_P = 426, - GROUPING = 427, - HANDLER = 428, - HAVING = 429, - HEADER_P = 430, - HOLD = 431, - HOUR_P = 432, - IDENTITY_P = 433, - IF_P = 434, - ILIKE = 435, - IMMEDIATE = 436, - IMMUTABLE = 437, - IMPLICIT_P = 438, - IMPORT_P = 439, - IN_P = 440, - INCLUDING = 441, - INCREMENT = 442, - INDEX = 443, - INDEXES = 444, - INHERIT = 445, - INHERITS = 446, - INITIALLY = 447, - INLINE_P = 448, - INNER_P = 449, - INOUT = 450, - INPUT_P = 451, - INSENSITIVE = 452, - INSERT = 453, - INSTEAD = 454, - INT_P = 455, - INTEGER = 456, - INTERSECT = 457, - INTERVAL = 458, - INTO = 459, - INVOKER = 460, - IS = 461, - ISNULL = 462, - ISOLATION = 463, - JOIN = 464, - KEY = 465, - LABEL = 466, - LANGUAGE = 467, - LARGE_P = 468, - LAST_P = 469, - LATERAL_P = 470, - LEADING = 471, - LEAKPROOF = 472, - LEAST = 473, - LEFT = 474, - LEVEL = 475, - LIKE = 476, - LIMIT = 477, - LISTEN = 478, - LOAD = 479, - LOCAL = 480, - LOCALTIME = 481, - LOCALTIMESTAMP = 482, - LOCATION = 483, - LOCK_P = 484, - LOCKED = 485, - LOGGED = 486, - MAPPING = 487, - MATCH = 488, - MATERIALIZED = 489, - MAXVALUE = 490, - METHOD = 491, - MINUTE_P = 492, - MINVALUE = 493, - MODE = 494, - MONTH_P = 495, - MOVE = 496, - NAME_P = 497, - NAMES = 498, - NATIONAL = 499, - NATURAL = 500, - NCHAR = 501, - NEW = 502, - NEXT = 503, - NO = 504, - NONE = 505, - NOT = 506, - NOTHING = 507, - NOTIFY = 508, - NOTNULL = 509, - NOWAIT = 510, - NULL_P = 511, - NULLIF = 512, - NULLS_P = 513, - NUMERIC = 514, - OBJECT_P = 515, - OF = 516, - OFF = 517, - OFFSET = 518, - OIDS = 519, - OLD = 520, - ON = 521, - ONLY = 522, - OPERATOR = 523, - OPTION = 524, - OPTIONS = 525, - OR = 526, - ORDER = 527, - ORDINALITY = 528, - OUT_P = 529, - OUTER_P = 530, - OVER = 531, - OVERLAPS = 532, - OVERLAY = 533, - OVERRIDING = 534, - OWNED = 535, - OWNER = 536, - PARALLEL = 537, - PARSER = 538, - PARTIAL = 539, - PARTITION = 540, - PASSING = 541, - PASSWORD = 542, - PGPOOL = 543, - PLACING = 544, - PLANS = 545, - POLICY = 546, - POSITION = 547, - PRECEDING = 548, - PRECISION = 549, - PRESERVE = 550, - PREPARE = 551, - PREPARED = 552, - PRIMARY = 553, - PRIOR = 554, - PRIVILEGES = 555, - PROCEDURAL = 556, - PROCEDURE = 557, - PROGRAM = 558, - PUBLICATION = 559, - QUOTE = 560, - RANGE = 561, - READ = 562, - REAL = 563, - REASSIGN = 564, - RECHECK = 565, - RECURSIVE = 566, - REF = 567, - REFERENCES = 568, - REFERENCING = 569, - REFRESH = 570, - REINDEX = 571, - RELATIVE_P = 572, - RELEASE = 573, - RENAME = 574, - REPEATABLE = 575, - REPLACE = 576, - REPLICA = 577, - RESET = 578, - RESTART = 579, - RESTRICT = 580, - RETURNING = 581, - RETURNS = 582, - REVOKE = 583, - RIGHT = 584, - ROLE = 585, - ROLLBACK = 586, - ROLLUP = 587, - ROW = 588, - ROWS = 589, - RULE = 590, - SAVEPOINT = 591, - SCHEMA = 592, - SCHEMAS = 593, - SCROLL = 594, - SEARCH = 595, - SECOND_P = 596, - SECURITY = 597, - SELECT = 598, - SEQUENCE = 599, - SEQUENCES = 600, - SERIALIZABLE = 601, - SERVER = 602, - SESSION = 603, - SESSION_USER = 604, - SET = 605, - SETS = 606, - SETOF = 607, - SHARE = 608, - SHOW = 609, - SIMILAR = 610, - SIMPLE = 611, - SKIP = 612, - SMALLINT = 613, - SNAPSHOT = 614, - SOME = 615, - SQL_P = 616, - STABLE = 617, - STANDALONE_P = 618, - START = 619, - STATEMENT = 620, - STATISTICS = 621, - STDIN = 622, - STDOUT = 623, - STORAGE = 624, - STRICT_P = 625, - STRIP_P = 626, - SUBSCRIPTION = 627, - SUBSTRING = 628, - SYMMETRIC = 629, - SYSID = 630, - SYSTEM_P = 631, - TABLE = 632, - TABLES = 633, - TABLESAMPLE = 634, - TABLESPACE = 635, - TEMP = 636, - TEMPLATE = 637, - TEMPORARY = 638, - TEXT_P = 639, - THEN = 640, - TIME = 641, - TIMESTAMP = 642, - TO = 643, - TRAILING = 644, - TRANSACTION = 645, - TRANSFORM = 646, - TREAT = 647, - TRIGGER = 648, - TRIM = 649, - TRUE_P = 650, - TRUNCATE = 651, - TRUSTED = 652, - TYPE_P = 653, - TYPES_P = 654, - UNBOUNDED = 655, - UNCOMMITTED = 656, - UNENCRYPTED = 657, - UNION = 658, - UNIQUE = 659, - UNKNOWN = 660, - UNLISTEN = 661, - UNLOGGED = 662, - UNTIL = 663, - UPDATE = 664, - USER = 665, - USING = 666, - VACUUM = 667, - VALID = 668, - VALIDATE = 669, - VALIDATOR = 670, - VALUE_P = 671, - VALUES = 672, - VARCHAR = 673, - VARIADIC = 674, - VARYING = 675, - VERBOSE = 676, - VERSION_P = 677, - VIEW = 678, - VIEWS = 679, - VOLATILE = 680, - WHEN = 681, - WHERE = 682, - WHITESPACE_P = 683, - WINDOW = 684, - WITH = 685, - WITHIN = 686, - WITHOUT = 687, - WORK = 688, - WRAPPER = 689, - WRITE = 690, - XML_P = 691, - XMLATTRIBUTES = 692, - XMLCONCAT = 693, - XMLELEMENT = 694, - XMLEXISTS = 695, - XMLFOREST = 696, - XMLNAMESPACES = 697, - XMLPARSE = 698, - XMLPI = 699, - XMLROOT = 700, - XMLSERIALIZE = 701, - XMLTABLE = 702, - YEAR_P = 703, - YES_P = 704, - ZONE = 705, - NOT_LA = 706, - NULLS_LA = 707, - WITH_LA = 708, - POSTFIXOP = 709, - UMINUS = 710 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + LESS_EQUALS = 270, + GREATER_EQUALS = 271, + NOT_EQUALS = 272, + ABORT_P = 273, + ABSOLUTE_P = 274, + ACCESS = 275, + ACTION = 276, + ADD_P = 277, + ADMIN = 278, + AFTER = 279, + AGGREGATE = 280, + ALL = 281, + ALSO = 282, + ALTER = 283, + ALWAYS = 284, + ANALYSE = 285, + ANALYZE = 286, + AND = 287, + ANY = 288, + ARRAY = 289, + AS = 290, + ASC = 291, + ASSERTION = 292, + ASSIGNMENT = 293, + ASYMMETRIC = 294, + AT = 295, + ATTACH = 296, + ATTRIBUTE = 297, + AUTHORIZATION = 298, + BACKWARD = 299, + BEFORE = 300, + BEGIN_P = 301, + BETWEEN = 302, + BIGINT = 303, + BINARY = 304, + BIT = 305, + BOOLEAN_P = 306, + BOTH = 307, + BY = 308, + CACHE = 309, + CALLED = 310, + CASCADE = 311, + CASCADED = 312, + CASE = 313, + CAST = 314, + CATALOG_P = 315, + CHAIN = 316, + CHAR_P = 317, + CHARACTER = 318, + CHARACTERISTICS = 319, + CHECK = 320, + CHECKPOINT = 321, + CLASS = 322, + CLOSE = 323, + CLUSTER = 324, + COALESCE = 325, + COLLATE = 326, + COLLATION = 327, + COLUMN = 328, + COLUMNS = 329, + COMMENT = 330, + COMMENTS = 331, + COMMIT = 332, + COMMITTED = 333, + CONCURRENTLY = 334, + CONFIGURATION = 335, + CONFLICT = 336, + CONNECTION = 337, + CONSTRAINT = 338, + CONSTRAINTS = 339, + CONTENT_P = 340, + CONTINUE_P = 341, + CONVERSION_P = 342, + COPY = 343, + COST = 344, + CREATE = 345, + CROSS = 346, + CSV = 347, + CUBE = 348, + CURRENT_P = 349, + CURRENT_CATALOG = 350, + CURRENT_DATE = 351, + CURRENT_ROLE = 352, + CURRENT_SCHEMA = 353, + CURRENT_TIME = 354, + CURRENT_TIMESTAMP = 355, + CURRENT_USER = 356, + CURSOR = 357, + CYCLE = 358, + DATA_P = 359, + DATABASE = 360, + DAY_P = 361, + DEALLOCATE = 362, + DEC = 363, + DECIMAL_P = 364, + DECLARE = 365, + DEFAULT = 366, + DEFAULTS = 367, + DEFERRABLE = 368, + DEFERRED = 369, + DEFINER = 370, + DELETE_P = 371, + DELIMITER = 372, + DELIMITERS = 373, + DEPENDS = 374, + DESC = 375, + DETACH = 376, + DICTIONARY = 377, + DISABLE_P = 378, + DISCARD = 379, + DISTINCT = 380, + DO = 381, + DOCUMENT_P = 382, + DOMAIN_P = 383, + DOUBLE_P = 384, + DROP = 385, + EACH = 386, + ELSE = 387, + ENABLE_P = 388, + ENCODING = 389, + ENCRYPTED = 390, + END_P = 391, + ENUM_P = 392, + ESCAPE = 393, + EVENT = 394, + EXCEPT = 395, + EXCLUDE = 396, + EXCLUDING = 397, + EXCLUSIVE = 398, + EXECUTE = 399, + EXISTS = 400, + EXPLAIN = 401, + EXTENSION = 402, + EXTERNAL = 403, + EXTRACT = 404, + FALSE_P = 405, + FAMILY = 406, + FETCH = 407, + FILTER = 408, + FIRST_P = 409, + FLOAT_P = 410, + FOLLOWING = 411, + FOR = 412, + FORCE = 413, + FOREIGN = 414, + FORWARD = 415, + FREEZE = 416, + FROM = 417, + FULL = 418, + FUNCTION = 419, + FUNCTIONS = 420, + GENERATED = 421, + GLOBAL = 422, + GRANT = 423, + GRANTED = 424, + GREATEST = 425, + GROUP_P = 426, + GROUPING = 427, + HANDLER = 428, + HAVING = 429, + HEADER_P = 430, + HOLD = 431, + HOUR_P = 432, + IDENTITY_P = 433, + IF_P = 434, + ILIKE = 435, + IMMEDIATE = 436, + IMMUTABLE = 437, + IMPLICIT_P = 438, + IMPORT_P = 439, + IN_P = 440, + INCLUDING = 441, + INCREMENT = 442, + INDEX = 443, + INDEXES = 444, + INHERIT = 445, + INHERITS = 446, + INITIALLY = 447, + INLINE_P = 448, + INNER_P = 449, + INOUT = 450, + INPUT_P = 451, + INSENSITIVE = 452, + INSERT = 453, + INSTEAD = 454, + INT_P = 455, + INTEGER = 456, + INTERSECT = 457, + INTERVAL = 458, + INTO = 459, + INVOKER = 460, + IS = 461, + ISNULL = 462, + ISOLATION = 463, + JOIN = 464, + KEY = 465, + LABEL = 466, + LANGUAGE = 467, + LARGE_P = 468, + LAST_P = 469, + LATERAL_P = 470, + LEADING = 471, + LEAKPROOF = 472, + LEAST = 473, + LEFT = 474, + LEVEL = 475, + LIKE = 476, + LIMIT = 477, + LISTEN = 478, + LOAD = 479, + LOCAL = 480, + LOCALTIME = 481, + LOCALTIMESTAMP = 482, + LOCATION = 483, + LOCK_P = 484, + LOCKED = 485, + LOGGED = 486, + MAPPING = 487, + MATCH = 488, + MATERIALIZED = 489, + MAXVALUE = 490, + METHOD = 491, + MINUTE_P = 492, + MINVALUE = 493, + MODE = 494, + MONTH_P = 495, + MOVE = 496, + NAME_P = 497, + NAMES = 498, + NATIONAL = 499, + NATURAL = 500, + NCHAR = 501, + NEW = 502, + NEXT = 503, + NO = 504, + NONE = 505, + NOT = 506, + NOTHING = 507, + NOTIFY = 508, + NOTNULL = 509, + NOWAIT = 510, + NULL_P = 511, + NULLIF = 512, + NULLS_P = 513, + NUMERIC = 514, + OBJECT_P = 515, + OF = 516, + OFF = 517, + OFFSET = 518, + OIDS = 519, + OLD = 520, + ON = 521, + ONLY = 522, + OPERATOR = 523, + OPTION = 524, + OPTIONS = 525, + OR = 526, + ORDER = 527, + ORDINALITY = 528, + OUT_P = 529, + OUTER_P = 530, + OVER = 531, + OVERLAPS = 532, + OVERLAY = 533, + OVERRIDING = 534, + OWNED = 535, + OWNER = 536, + PARALLEL = 537, + PARSER = 538, + PARTIAL = 539, + PARTITION = 540, + PASSING = 541, + PASSWORD = 542, + PGPOOL = 543, + PLACING = 544, + PLANS = 545, + POLICY = 546, + POSITION = 547, + PRECEDING = 548, + PRECISION = 549, + PRESERVE = 550, + PREPARE = 551, + PREPARED = 552, + PRIMARY = 553, + PRIOR = 554, + PRIVILEGES = 555, + PROCEDURAL = 556, + PROCEDURE = 557, + PROGRAM = 558, + PUBLICATION = 559, + QUOTE = 560, + RANGE = 561, + READ = 562, + REAL = 563, + REASSIGN = 564, + RECHECK = 565, + RECURSIVE = 566, + REF = 567, + REFERENCES = 568, + REFERENCING = 569, + REFRESH = 570, + REINDEX = 571, + RELATIVE_P = 572, + RELEASE = 573, + RENAME = 574, + REPEATABLE = 575, + REPLACE = 576, + REPLICA = 577, + RESET = 578, + RESTART = 579, + RESTRICT = 580, + RETURNING = 581, + RETURNS = 582, + REVOKE = 583, + RIGHT = 584, + ROLE = 585, + ROLLBACK = 586, + ROLLUP = 587, + ROW = 588, + ROWS = 589, + RULE = 590, + SAVEPOINT = 591, + SCHEMA = 592, + SCHEMAS = 593, + SCROLL = 594, + SEARCH = 595, + SECOND_P = 596, + SECURITY = 597, + SELECT = 598, + SEQUENCE = 599, + SEQUENCES = 600, + SERIALIZABLE = 601, + SERVER = 602, + SESSION = 603, + SESSION_USER = 604, + SET = 605, + SETS = 606, + SETOF = 607, + SHARE = 608, + SHOW = 609, + SIMILAR = 610, + SIMPLE = 611, + SKIP = 612, + SMALLINT = 613, + SNAPSHOT = 614, + SOME = 615, + SQL_P = 616, + STABLE = 617, + STANDALONE_P = 618, + START = 619, + STATEMENT = 620, + STATISTICS = 621, + STDIN = 622, + STDOUT = 623, + STORAGE = 624, + STRICT_P = 625, + STRIP_P = 626, + SUBSCRIPTION = 627, + SUBSTRING = 628, + SYMMETRIC = 629, + SYSID = 630, + SYSTEM_P = 631, + TABLE = 632, + TABLES = 633, + TABLESAMPLE = 634, + TABLESPACE = 635, + TEMP = 636, + TEMPLATE = 637, + TEMPORARY = 638, + TEXT_P = 639, + THEN = 640, + TIME = 641, + TIMESTAMP = 642, + TO = 643, + TRAILING = 644, + TRANSACTION = 645, + TRANSFORM = 646, + TREAT = 647, + TRIGGER = 648, + TRIM = 649, + TRUE_P = 650, + TRUNCATE = 651, + TRUSTED = 652, + TYPE_P = 653, + TYPES_P = 654, + UNBOUNDED = 655, + UNCOMMITTED = 656, + UNENCRYPTED = 657, + UNION = 658, + UNIQUE = 659, + UNKNOWN = 660, + UNLISTEN = 661, + UNLOGGED = 662, + UNTIL = 663, + UPDATE = 664, + USER = 665, + USING = 666, + VACUUM = 667, + VALID = 668, + VALIDATE = 669, + VALIDATOR = 670, + VALUE_P = 671, + VALUES = 672, + VARCHAR = 673, + VARIADIC = 674, + VARYING = 675, + VERBOSE = 676, + VERSION_P = 677, + VIEW = 678, + VIEWS = 679, + VOLATILE = 680, + WHEN = 681, + WHERE = 682, + WHITESPACE_P = 683, + WINDOW = 684, + WITH = 685, + WITHIN = 686, + WITHOUT = 687, + WORK = 688, + WRAPPER = 689, + WRITE = 690, + XML_P = 691, + XMLATTRIBUTES = 692, + XMLCONCAT = 693, + XMLELEMENT = 694, + XMLEXISTS = 695, + XMLFOREST = 696, + XMLNAMESPACES = 697, + XMLPARSE = 698, + XMLPI = 699, + XMLROOT = 700, + XMLSERIALIZE = 701, + XMLTABLE = 702, + YEAR_P = 703, + YES_P = 704, + ZONE = 705, + NOT_LA = 706, + NULLS_LA = 707, + WITH_LA = 708, + POSTFIXOP = 709, + UMINUS = 710 + }; #endif /* Tokens. */ #define IDENT 258 @@ -955,12 +956,13 @@ extern int base_yydebug; #define POSTFIXOP 709 #define UMINUS 710 -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 239 "gram.y" /* yacc.c:1909 */ +/* Line 2058 of yacc.c */ +#line 239 "gram.y" core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ @@ -1004,30 +1006,41 @@ union YYSTYPE PartitionBoundSpec *partboundspec; RoleSpec *rolespec; -#line 1008 "gram.h" /* yacc.c:1909 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 2058 of yacc.c */ +#line 1012 "gram.h" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int base_yyparse (void *YYPARSE_PARAM); +#else +int base_yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int base_yyparse (core_yyscan_t yyscanner); +#else +int base_yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ #endif /* !YY_BASE_YY_GRAM_H_INCLUDED */ diff --git a/src/parser/scan.c b/src/parser/scan.c index 52574f26..b71dbd4e 100644 --- a/src/parser/scan.c +++ b/src/parser/scan.c @@ -1,4 +1,5 @@ #line 2 "scan.c" +#line 2 "scan.l" /*------------------------------------------------------------------------- * * scan.l @@ -45,7 +46,9 @@ #include "utils/palloc.h" #include "utils/elog.h" -#line 49 "scan.c" + + +#line 52 "scan.c" #define YY_INT_ALIGNED short int @@ -53,8 +56,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -133,13 +136,25 @@ typedef unsigned int flex_uint32_t; #endif /* ! FLEXINT_H */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* Returned upon end-of-file. */ @@ -192,15 +207,7 @@ typedef void* yyscan_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -222,7 +229,6 @@ typedef size_t yy_size_t; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -252,12 +258,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -336,7 +342,7 @@ static void core_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanne YY_BUFFER_STATE core_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE core_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE core_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); +YY_BUFFER_STATE core_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *core_yyalloc (yy_size_t ,yyscan_t yyscanner ); void *core_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); @@ -368,7 +374,7 @@ void core_yyfree (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define core_yywrap(yyscanner) (/*CONSTCOND*/1) +#define core_yywrap(yyscanner) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -380,14 +386,14 @@ typedef int yy_state_type; static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); +static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ + yyleng = (size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; @@ -436,7 +442,7 @@ static yyconst flex_int16_t yy_accept[290] = 28, 28, 28, 28, 55, 55, 28, 28, 0 } ; -static yyconst YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, @@ -468,7 +474,7 @@ static yyconst YY_CHAR yy_ec[256] = 29, 29, 29, 29, 29 } ; -static yyconst YY_CHAR yy_meta[38] = +static yyconst flex_int32_t yy_meta[38] = { 0, 1, 1, 2, 2, 3, 4, 3, 5, 3, 3, 6, 1, 7, 3, 3, 1, 7, 8, 8, 1, @@ -476,7 +482,7 @@ static yyconst YY_CHAR yy_meta[38] = 10, 10, 10, 10, 11, 10, 10 } ; -static yyconst flex_uint16_t yy_base[357] = +static yyconst flex_int16_t yy_base[357] = { 0, 0, 0, 404, 403, 33, 52, 395, 394, 376, 375, 41, 42, 362, 361, 55, 75, 353, 352, 82, 117, @@ -562,7 +568,7 @@ static yyconst flex_int16_t yy_def[357] = 289, 289, 289, 289, 289, 289 } ; -static yyconst flex_uint16_t yy_nxt[1202] = +static yyconst flex_int16_t yy_nxt[1202] = { 0, 28, 29, 30, 29, 31, 32, 33, 34, 35, 33, 36, 37, 35, 35, 38, 39, 40, 41, 41, 42, @@ -1075,7 +1081,7 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ -#line 1079 "scan.c" +#line 1085 "scan.c" #define INITIAL 0 #define xb 1 @@ -1116,8 +1122,8 @@ struct yyguts_t size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; - int yy_n_chars; - int yyleng_r; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; @@ -1168,23 +1174,23 @@ void core_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *core_yyget_in (yyscan_t yyscanner ); -void core_yyset_in (FILE * _in_str ,yyscan_t yyscanner ); +void core_yyset_in (FILE * in_str ,yyscan_t yyscanner ); FILE *core_yyget_out (yyscan_t yyscanner ); -void core_yyset_out (FILE * _out_str ,yyscan_t yyscanner ); +void core_yyset_out (FILE * out_str ,yyscan_t yyscanner ); - int core_yyget_leng (yyscan_t yyscanner ); +yy_size_t core_yyget_leng (yyscan_t yyscanner ); char *core_yyget_text (yyscan_t yyscanner ); int core_yyget_lineno (yyscan_t yyscanner ); -void core_yyset_lineno (int _line_number ,yyscan_t yyscanner ); +void core_yyset_lineno (int line_number ,yyscan_t yyscanner ); int core_yyget_column (yyscan_t yyscanner ); -void core_yyset_column (int _column_no ,yyscan_t yyscanner ); +void core_yyset_column (int column_no ,yyscan_t yyscanner ); YYSTYPE * core_yyget_lval (yyscan_t yyscanner ); @@ -1206,8 +1212,6 @@ extern int core_yywrap (yyscan_t yyscanner ); #endif #endif -#ifndef YY_NO_UNPUT -#endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif @@ -1228,12 +1232,7 @@ static int input (yyscan_t yyscanner ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1241,7 +1240,7 @@ static int input (yyscan_t yyscanner ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1265,7 +1264,7 @@ static int input (yyscan_t yyscanner ); else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -1322,7 +1321,7 @@ extern int core_yylex \ /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif #define YY_RULE_SETUP \ @@ -1332,11 +1331,16 @@ extern int core_yylex \ */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +#line 398 "scan.l" + + +#line 1343 "scan.c" + yylval = yylval_param; yylloc = yylloc_param; @@ -1367,13 +1371,7 @@ YY_DECL core_yy_load_buffer_state(yyscanner ); } - { -#line 398 "scan.l" - - -#line 1377 "scan.c" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; @@ -1389,7 +1387,7 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -1401,7 +1399,7 @@ yy_match: if ( yy_current_state >= 290 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_current_state != 289 ); @@ -2364,7 +2362,7 @@ YY_RULE_SETUP #line 1020 "scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2370 "scan.c" +#line 2366 "scan.c" case YY_END_OF_BUFFER: { @@ -2494,7 +2492,6 @@ YY_FATAL_ERROR( "flex scanner jammed" ); "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ } /* end of core_yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -2507,9 +2504,9 @@ YY_FATAL_ERROR( "flex scanner jammed" ); static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = yyg->yytext_ptr; - yy_size_t number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) @@ -2538,7 +2535,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -2551,7 +2548,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -2565,7 +2562,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -2578,7 +2575,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -2620,9 +2617,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) core_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); @@ -2641,15 +2638,15 @@ static int yy_get_next_buffer (yyscan_t yyscanner) static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -2661,7 +2658,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yy_current_state >= 290 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -2674,11 +2671,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { - int yy_is_jam; + register int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - char *yy_cp = yyg->yy_c_buf_p; + register char *yy_cp = yyg->yy_c_buf_p; - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; @@ -2690,17 +2687,13 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yy_current_state >= 290 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 289); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT - -#endif - #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) @@ -2726,7 +2719,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) @@ -2750,7 +2743,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) case EOB_ACT_END_OF_FILE: { if ( core_yywrap(yyscanner ) ) - return 0; + return EOF; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; @@ -2854,7 +2847,7 @@ static void core_yy_load_buffer_state (yyscan_t yyscanner) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in core_yy_create_buffer()" ); - b->yy_buf_size = (yy_size_t)size; + b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -3006,7 +2999,7 @@ void core_yypop_buffer_state (yyscan_t yyscanner) */ static void core_yyensure_buffer_stack (yyscan_t yyscanner) { - int num_to_alloc; + yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { @@ -3015,7 +3008,7 @@ static void core_yyensure_buffer_stack (yyscan_t yyscanner) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)core_yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); @@ -3032,7 +3025,7 @@ static void core_yyensure_buffer_stack (yyscan_t yyscanner) if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)core_yyrealloc @@ -3062,7 +3055,7 @@ YY_BUFFER_STATE core_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yy base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return NULL; + return 0; b = (YY_BUFFER_STATE) core_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) @@ -3071,7 +3064,7 @@ YY_BUFFER_STATE core_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yy b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -3094,7 +3087,7 @@ YY_BUFFER_STATE core_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yy YY_BUFFER_STATE core_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) { - return core_yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); + return core_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to core_yylex() will @@ -3104,15 +3097,15 @@ YY_BUFFER_STATE core_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE core_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) +YY_BUFFER_STATE core_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) _yybytes_len + 2; + n = _yybytes_len + 2; buf = (char *) core_yyalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in core_yy_scan_bytes()" ); @@ -3138,11 +3131,9 @@ YY_BUFFER_STATE core_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -3221,7 +3212,7 @@ FILE *core_yyget_out (yyscan_t yyscanner) /** Get the length of the current token. * @param yyscanner The scanner object. */ -int core_yyget_leng (yyscan_t yyscanner) +yy_size_t core_yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; @@ -3248,10 +3239,10 @@ void core_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) } /** Set the current line number. - * @param _line_number line number + * @param line_number * @param yyscanner The scanner object. */ -void core_yyset_lineno (int _line_number , yyscan_t yyscanner) +void core_yyset_lineno (int line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; @@ -3259,14 +3250,14 @@ void core_yyset_lineno (int _line_number , yyscan_t yyscanner) if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "core_yyset_lineno called with no buffer" ); - yylineno = _line_number; + yylineno = line_number; } /** Set the current column. - * @param _column_no column number + * @param line_number * @param yyscanner The scanner object. */ -void core_yyset_column (int _column_no , yyscan_t yyscanner) +void core_yyset_column (int column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; @@ -3274,25 +3265,25 @@ void core_yyset_column (int _column_no , yyscan_t yyscanner) if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "core_yyset_column called with no buffer" ); - yycolumn = _column_no; + yycolumn = column_no; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * @param yyscanner The scanner object. * @see core_yy_switch_to_buffer */ -void core_yyset_in (FILE * _in_str , yyscan_t yyscanner) +void core_yyset_in (FILE * in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = _in_str ; + yyin = in_str ; } -void core_yyset_out (FILE * _out_str , yyscan_t yyscanner) +void core_yyset_out (FILE * out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = _out_str ; + yyout = out_str ; } int core_yyget_debug (yyscan_t yyscanner) @@ -3301,10 +3292,10 @@ int core_yyget_debug (yyscan_t yyscanner) return yy_flex_debug; } -void core_yyset_debug (int _bdebug , yyscan_t yyscanner) +void core_yyset_debug (int bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = _bdebug ; + yy_flex_debug = bdebug ; } /* Accessor methods for yylval and yylloc */ @@ -3404,10 +3395,10 @@ static int yy_init_globals (yyscan_t yyscanner) * This function is called from core_yylex_destroy(), so don't allocate here. */ - yyg->yy_buffer_stack = NULL; + yyg->yy_buffer_stack = 0; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = NULL; + yyg->yy_c_buf_p = (char *) 0; yyg->yy_init = 0; yyg->yy_start = 0; @@ -3420,8 +3411,8 @@ static int yy_init_globals (yyscan_t yyscanner) yyin = stdin; yyout = stdout; #else - yyin = NULL; - yyout = NULL; + yyin = (FILE *) 0; + yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by @@ -3467,10 +3458,7 @@ int core_yylex_destroy (yyscan_t yyscanner) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -3479,7 +3467,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yysca #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; diff --git a/src/protocol/child.c b/src/protocol/child.c index eca91776..fbea3a87 100644 --- a/src/protocol/child.c +++ b/src/protocol/child.c @@ -2313,7 +2313,7 @@ retry_startup: found = 0; backend = pool_get_cp(sp->user, sp->database, sp->major, 1); - + if (backend != NULL) { found = 1; diff --git a/src/sample/pgpool.conf.sample b/src/sample/pgpool.conf.sample index 21344258..a757d6e6 100644 --- a/src/sample/pgpool.conf.sample +++ b/src/sample/pgpool.conf.sample @@ -91,6 +91,12 @@ authentication_timeout = 60 # Delay in seconds to complete client authentication # 0 means no timeout. +allow_clear_text_frontend_auth = off + # Allow Pgpool-II to use clear text password authentication + # with clients, when pool_passwd does not + # contain the user password + + # - SSL Connections - ssl = off diff --git a/src/sample/pgpool.conf.sample-logical b/src/sample/pgpool.conf.sample-logical index 3429a07d..2f1af573 100644 --- a/src/sample/pgpool.conf.sample-logical +++ b/src/sample/pgpool.conf.sample-logical @@ -92,6 +92,11 @@ authentication_timeout = 60 # Delay in seconds to complete client authentication # 0 means no timeout. +allow_clear_text_frontend_auth = off + # Allow Pgpool-II to use clear text password authentication + # with clients, when pool_passwd does not + # contain the user password + # - SSL Connections - ssl = off diff --git a/src/sample/pgpool.conf.sample-master-slave b/src/sample/pgpool.conf.sample-master-slave index fcc4a0ae..563e8a11 100644 --- a/src/sample/pgpool.conf.sample-master-slave +++ b/src/sample/pgpool.conf.sample-master-slave @@ -91,6 +91,11 @@ authentication_timeout = 60 # Delay in seconds to complete client authentication # 0 means no timeout. +allow_clear_text_frontend_auth = off + # Allow Pgpool-II to use clear text password authentication + # with clients, when pool_passwd does not + # contain the user password + # - SSL Connections - ssl = off diff --git a/src/sample/pgpool.conf.sample-replication b/src/sample/pgpool.conf.sample-replication index fc70c4a3..b1b09e73 100644 --- a/src/sample/pgpool.conf.sample-replication +++ b/src/sample/pgpool.conf.sample-replication @@ -90,6 +90,11 @@ authentication_timeout = 60 # Delay in seconds to complete client authentication # 0 means no timeout. +allow_clear_text_frontend_auth = off + # Allow Pgpool-II to use clear text password authentication + # with clients, when pool_passwd does not + # contain the user password + # - SSL Connections - ssl = off diff --git a/src/sample/pgpool.conf.sample-stream b/src/sample/pgpool.conf.sample-stream index 7adce85b..629b279f 100644 --- a/src/sample/pgpool.conf.sample-stream +++ b/src/sample/pgpool.conf.sample-stream @@ -92,6 +92,11 @@ authentication_timeout = 60 # Delay in seconds to complete client authentication # 0 means no timeout. +allow_clear_text_frontend_auth = off + # Allow Pgpool-II to use clear text password authentication + # with clients, when pool_passwd does not + # contain the user password + # - SSL Connections - ssl = off diff --git a/src/sample/pool_hba.conf.sample b/src/sample/pool_hba.conf.sample index 6e37e273..b174f74b 100644 --- a/src/sample/pool_hba.conf.sample +++ b/src/sample/pool_hba.conf.sample @@ -38,8 +38,8 @@ # the mask. Alternatively, you can write an IP address and netmask in # separate columns to specify the set of hosts. # -# METHOD can be "trust", "reject", "md5" or "pam". Note that "pam" sends passwords -# in clear text. +# METHOD can be "trust", "reject", "md5" , "scram-sha-256" or "pam". +# Note that "pam" sends passwords in clear text. # # OPTION is the name of the PAM service. Default service name is "pgpool" # diff --git a/src/test/pgpool_setup b/src/test/pgpool_setup index 4e511e11..e52ae620 100755 --- a/src/test/pgpool_setup +++ b/src/test/pgpool_setup @@ -277,6 +277,7 @@ chmod 755 $1/$PGPOOL_REMOTE_START_SCRIPT function set_postgresql_conf { PGCONF=$1/postgresql.conf + PGHBACONF=$1/pg_hba.conf echo "listen_addresses = '*'" >> $PGCONF echo "port = $PORT" >> $PGCONF @@ -309,14 +310,24 @@ function set_postgresql_conf fi fi - ed $1/pg_hba.conf <> $PGHBACONF + echo "host all md5_user 0/0 md5" >> $PGHBACONF + echo "host all all 0/0 trust" >> $PGHBACONF + + echo "local all scram_user scram-sha-256" >> $PGHBACONF + echo "local all md5_user md5" >> $PGHBACONF + echo "local all all trust" >> $PGHBACONF + + ed $1/pg_hba.conf <> etc/pgpool.conf +echo "allow_clear_text_frontend_auth = on" >> etc/pgpool.conf +#set max_init_children to 1 to make sure we reuse the +#connection to test wrong password rejection +echo "num_init_children = 1" >> etc/pgpool.conf + +./startall + +export PGPORT=$PGPOOL_PORT +wait_for_pgpool_startup + +#set passwords +$PSQL -c "SET password_encryption = 'scram-sha-256'; CREATE ROLE scram_user PASSWORD 'scram_password'; ALTER ROLE scram_user WITH LOGIN;" test +$PSQL -c "SET password_encryption = 'md5'; CREATE ROLE md5_user PASSWORD 'md5_password'; ALTER ROLE md5_user WITH LOGIN" test +$PSQL -c "CREATE ROLE trust_user PASSWORD 'trust_password';ALTER ROLE trust_user WITH LOGIN" test + + +if $PSQL -c "SELECT rolname,substring(rolpassword, 1, 14) FROM pg_authid where rolname ='scram_user'" test|grep "SCRAM-SHA-256" >/dev/null 2>&1 +then + echo "scram_user authenticated setup successfuly" +else + echo "scram authentication setup failed" + failed=1 +fi +if $PSQL -c "SELECT rolname,substring(rolpassword, 1, 4) FROM pg_authid where rolname ='md5_user'" test|grep "md5" >/dev/null 2>&1 +then + echo "md5 authenticated setup successfuly" +else + echo "md5 authentication setup failed" + failed=1 +fi +#create pgpass file +echo "127.0.0.1:$PGPORT:test:scram_user:scram_password" >> pgpass +echo "127.0.0.1:$PGPORT:test:md5_user:md5_password" >> pgpass +chmod 0600 pgpass +echo "127.0.0.1:$PGPORT:test:scram_user:scram_wrong_password" >> pgpasswrong +echo "127.0.0.1:$PGPORT:test:md5_user:md5_wrong_password" >> pgpasswrong +chmod 0600 pgpasswrong + +export PGPASSFILE=$PWD/pgpass + +if $PSQL -h 127.0.0.1 -U scram_user -c "SELECT user, inet_client_addr();" test|grep "scram_user" >/dev/null 2>&1 +then + echo "scram_user authenticated successfuly" +else + echo "scram authentication failed" + failed=1 +fi + +if $PSQL -h 127.0.0.1 -U md5_user -c "SELECT user, inet_client_addr();" test|grep "md5_user" >/dev/null 2>&1 +then + echo "md5_user authenticated successfuly" +else + echo "md5 authentication failed" + failed=1 +fi +#now try using the wrong passwords1: +export PGPASSFILE=$PWD/pgpasswrong +echo "Trying wrong passwords now" +#try connect using scram_user and md5 user +if $PSQL -h 127.0.0.1 -U scram_user -c "SELECT user, inet_client_addr();" test|grep "scram_user" >/dev/null 2>&1 +then + failed=1 + echo "serious problem with scram authentication, password not verified by pgpool" +else + echo "wrong password rejected properly for scram auth" +fi + +if $PSQL -h 127.0.0.1 -U md5_user -c "SELECT user, inet_client_addr();" test|grep "md5_user" >/dev/null 2>&1 +then + failed=1 + echo "serious problem with md5 authentication, password not verified by pgpool" +else + echo "wrong password rejected properly for md5 auth" +fi + +./shutdownall +if [ -z "$failed" ]; then + exit 0 +fi + +exit 1 diff --git a/src/test/regression/tests/021.pool_passwd_auth/pool_hba.conf b/src/test/regression/tests/021.pool_passwd_auth/pool_hba.conf new file mode 100644 index 00000000..1b2e47e1 --- /dev/null +++ b/src/test/regression/tests/021.pool_passwd_auth/pool_hba.conf @@ -0,0 +1,71 @@ +# pgpool Client Authentication Configuration File +# =============================================== +# +# The format rule in this file follows the rules in the PostgreSQL +# Administrator's Guide. Refer to chapter "Client Authentication" for a +# complete description. A short synopsis follows. +# +# This file controls: which hosts are allowed to connect, how clients +# are authenticated, which user names they can use, which databases they +# can access. Records take one of these forms: +# +# local DATABASE USER METHOD [OPTION] +# host DATABASE USER CIDR-ADDRESS METHOD [OPTION] +# +# (The uppercase items must be replaced by actual values.) +# +# The first field is the connection type: "local" is a Unix-domain +# socket, "host" is either a plain or SSL-encrypted TCP/IP socket. +# +# DATABASE can be "all", "sameuser", a database name, or a comma-separated +# list thereof. Note that "samegroup" like in PostgreSQL's pg_hba.conf +# file is not supported, since pgpool does not know which group a user +# belongs to. Also note that the database specified here may not exist in +# the backend PostgreSQL. pgpool will authenticate based on the database's +# name, not based on whether it exists or not. +# +# USER can be "all", a user name, or a comma-separated list thereof. In +# both the DATABASE and USER fields you can also write a file name prefixed +# with "@" to include names from a separate file. Note that a group name +# prefixed with "+" like in PostgreSQL's pg_hba.conf file is not supported +# because of the same reason as "samegroup" token. Also note that a user +# name specified here may not exist in the backend PostgreSQL. pgpool will +# authenticate based on the user's name, not based on whether he/she exists. +# +# CIDR-ADDRESS specifies the set of hosts the record matches. +# It is made up of an IP address and a CIDR mask that is an integer +# (between 0 and 32 (IPv4) that specifies the number of significant bits in +# the mask. Alternatively, you can write an IP address and netmask in +# separate columns to specify the set of hosts. +# +# METHOD can be "trust", "reject", "md5" , "scram-sha-256" or "pam". +# Note that "pam" sends passwords in clear text. +# +# OPTION is the name of the PAM service. Default service name is "pgpool" +# +# Database and user names containing spaces, commas, quotes and other special +# characters must be quoted. Quoting one of the keywords "all" or "sameuser" +# makes the name lose its special character, and just match a database or +# username with that name. +# +# This file is read on pgpool startup. If you edit the file on a running +# system, you have to restart the pgpool for the changes to take effect. + +# Put your actual configuration here +# ---------------------------------- +# +# If you want to allow non-local connections, you need to add more +# "host" records. In that case you will also need to make pgpool listen +# on a non-local interface via the listen_addresses configuration parameter. +# + +# TYPE DATABASE USER CIDR-ADDRESS METHOD + +# "local" is for Unix domain socket connections only +local all all trust +# IPv4 local connections: +host all scram_user 127.0.0.1/32 scram-sha-256 +host all scram_user ::1/128 scram-sha-256 + +host all md5_user 127.0.0.1/32 md5 +host all md5_user ::1/128 md5 diff --git a/src/test/regression/tests/021.pool_passwd_auth/test.sh b/src/test/regression/tests/021.pool_passwd_auth/test.sh new file mode 100755 index 00000000..a836add9 --- /dev/null +++ b/src/test/regression/tests/021.pool_passwd_auth/test.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash +#------------------------------------------------------------------- +# test script for scram and md5 authentication +# where password is stored in pool_passwd file +# +source $TESTLIBS +TESTDIR=testdir +PSQL=$PGBIN/psql +CREATEUSER=$PGBIN/createuser + + +rm -fr $TESTDIR +mkdir $TESTDIR +cd $TESTDIR + +# create test environment +echo -n "creating test environment..." +$PGPOOL_SETUP -m s -n 2 || exit 1 +echo "done." + +source ./bashrc.ports + +#echo "enable_pool_hba = on" >> etc/pgpool.conf +echo "allow_clear_text_frontend_auth = off" >> etc/pgpool.conf +#set max_init_children to 1 to make sure we reuse the +#connection to test wrong password rejection +echo "num_init_children = 1" >> etc/pgpool.conf +echo "enable_pool_hba = on" >> etc/pgpool.conf + +#create pool_passwd file +echo "scram_user:scram_password" >> etc/pool_passwd +echo "md5_user:md5_password" >> etc/pool_passwd +#copy the pool_hba to etc dir +cp ../pool_hba.conf etc/ +./startall + +export PGPORT=$PGPOOL_PORT +wait_for_pgpool_startup + +#set passwords +$PSQL -c "SET password_encryption = 'scram-sha-256'; CREATE ROLE scram_user PASSWORD 'scram_password'; ALTER ROLE scram_user WITH LOGIN;" test +$PSQL -c "SET password_encryption = 'md5'; CREATE ROLE md5_user PASSWORD 'md5_password'; ALTER ROLE md5_user WITH LOGIN" test +$PSQL -c "CREATE ROLE trust_user PASSWORD 'trust_password';ALTER ROLE trust_user WITH LOGIN" test + + +if $PSQL -c "SELECT rolname,substring(rolpassword, 1, 14) FROM pg_authid where rolname ='scram_user'" test|grep "SCRAM-SHA-256" >/dev/null 2>&1 +then + echo "scram_user authenticated setup successfuly" +else + echo "scram authentication setup failed" + failed=1 +fi +if $PSQL -c "SELECT rolname,substring(rolpassword, 1, 4) FROM pg_authid where rolname ='md5_user'" test|grep "md5" >/dev/null 2>&1 +then + echo "md5 authenticated setup successfuly" +else + echo "md5 authentication setup failed" + failed=1 +fi +#create pgpass file +echo "127.0.0.1:$PGPORT:test:scram_user:scram_password" >> pgpass +echo "127.0.0.1:$PGPORT:test:md5_user:md5_password" >> pgpass +chmod 0600 pgpass +echo "127.0.0.1:$PGPORT:test:scram_user:scram_wrong_password" >> pgpasswrong +echo "127.0.0.1:$PGPORT:test:md5_user:md5_wrong_password" >> pgpasswrong +chmod 0600 pgpasswrong + + +export PGPASSFILE=$PWD/pgpass + +if $PSQL -h 127.0.0.1 -U scram_user -c "SELECT user, inet_client_addr();" test|grep "scram_user" >/dev/null 2>&1 +then + echo "scram_user authenticated successfuly" +else + echo "scram authentication failed" + failed=1 +fi + +if $PSQL -h 127.0.0.1 -U md5_user -c "SELECT user, inet_client_addr();" test|grep "md5_user" >/dev/null 2>&1 +then + echo "md5_user authenticated successfuly" +else + echo "md5 authentication failed" + failed=1 +fi +#now try using the wrong passwords1: +export PGPASSFILE=$PWD/pgpasswrong +echo "Trying wrong passwords now" +#try connect using scram_user and md5 user +if $PSQL -h 127.0.0.1 -U scram_user -c "SELECT user, inet_client_addr();" test|grep "scram_user" >/dev/null 2>&1 +then + failed=1 + echo "serious problem with scram authentication, password not verified by pgpool" +else + echo "wrong password rejected properly for scram auth" +fi + +if $PSQL -h 127.0.0.1 -U md5_user -c "SELECT user, inet_client_addr();" test|grep "md5_user" >/dev/null 2>&1 +then + failed=1 + echo "serious problem with md5 authentication, password not verified by pgpool" +else + echo "wrong password rejected properly for md5 auth" +fi + +./shutdownall +if [ -z "$failed" ]; then + exit 0 +fi + +exit 1 diff --git a/src/test/regression/tests/022.pool_passwd_alternative_auth/pool_hba.conf b/src/test/regression/tests/022.pool_passwd_alternative_auth/pool_hba.conf new file mode 100644 index 00000000..9a3ab388 --- /dev/null +++ b/src/test/regression/tests/022.pool_passwd_alternative_auth/pool_hba.conf @@ -0,0 +1,71 @@ +# pgpool Client Authentication Configuration File +# =============================================== +# +# The format rule in this file follows the rules in the PostgreSQL +# Administrator's Guide. Refer to chapter "Client Authentication" for a +# complete description. A short synopsis follows. +# +# This file controls: which hosts are allowed to connect, how clients +# are authenticated, which user names they can use, which databases they +# can access. Records take one of these forms: +# +# local DATABASE USER METHOD [OPTION] +# host DATABASE USER CIDR-ADDRESS METHOD [OPTION] +# +# (The uppercase items must be replaced by actual values.) +# +# The first field is the connection type: "local" is a Unix-domain +# socket, "host" is either a plain or SSL-encrypted TCP/IP socket. +# +# DATABASE can be "all", "sameuser", a database name, or a comma-separated +# list thereof. Note that "samegroup" like in PostgreSQL's pg_hba.conf +# file is not supported, since pgpool does not know which group a user +# belongs to. Also note that the database specified here may not exist in +# the backend PostgreSQL. pgpool will authenticate based on the database's +# name, not based on whether it exists or not. +# +# USER can be "all", a user name, or a comma-separated list thereof. In +# both the DATABASE and USER fields you can also write a file name prefixed +# with "@" to include names from a separate file. Note that a group name +# prefixed with "+" like in PostgreSQL's pg_hba.conf file is not supported +# because of the same reason as "samegroup" token. Also note that a user +# name specified here may not exist in the backend PostgreSQL. pgpool will +# authenticate based on the user's name, not based on whether he/she exists. +# +# CIDR-ADDRESS specifies the set of hosts the record matches. +# It is made up of an IP address and a CIDR mask that is an integer +# (between 0 and 32 (IPv4) that specifies the number of significant bits in +# the mask. Alternatively, you can write an IP address and netmask in +# separate columns to specify the set of hosts. +# +# METHOD can be "trust", "reject", "md5" , "scram-sha-256" or "pam". +# Note that "pam" sends passwords in clear text. +# +# OPTION is the name of the PAM service. Default service name is "pgpool" +# +# Database and user names containing spaces, commas, quotes and other special +# characters must be quoted. Quoting one of the keywords "all" or "sameuser" +# makes the name lose its special character, and just match a database or +# username with that name. +# +# This file is read on pgpool startup. If you edit the file on a running +# system, you have to restart the pgpool for the changes to take effect. + +# Put your actual configuration here +# ---------------------------------- +# +# If you want to allow non-local connections, you need to add more +# "host" records. In that case you will also need to make pgpool listen +# on a non-local interface via the listen_addresses configuration parameter. +# + +# TYPE DATABASE USER CIDR-ADDRESS METHOD + +# "local" is for Unix domain socket connections only +local all all trust +# IPv4 local connections: +host all md5_user 127.0.0.1/32 scram-sha-256 +host all md5_user ::1/128 scram-sha-256 + +host all scram_user 127.0.0.1/32 md5 +host all scram_user ::1/128 md5 diff --git a/src/test/regression/tests/022.pool_passwd_alternative_auth/test.sh b/src/test/regression/tests/022.pool_passwd_alternative_auth/test.sh new file mode 100755 index 00000000..67c527e5 --- /dev/null +++ b/src/test/regression/tests/022.pool_passwd_alternative_auth/test.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash +#------------------------------------------------------------------- +# test script for scram and md5 authentication +# where password is stored in pool_passwd file and +# frontend uses different auth from backends +# +source $TESTLIBS +TESTDIR=testdir +PSQL=$PGBIN/psql +CREATEUSER=$PGBIN/createuser + + +rm -fr $TESTDIR +mkdir $TESTDIR +cd $TESTDIR + +# create test environment +echo -n "creating test environment..." +$PGPOOL_SETUP -m s -n 2 || exit 1 +echo "done." + +source ./bashrc.ports + +#echo "enable_pool_hba = on" >> etc/pgpool.conf +echo "allow_clear_text_frontend_auth = off" >> etc/pgpool.conf +#set max_init_children to 1 to make sure we reuse the +#connection to test wrong password rejection +echo "num_init_children = 1" >> etc/pgpool.conf +echo "enable_pool_hba = on" >> etc/pgpool.conf + +#create pool_passwd file +echo "scram_user:scram_password" >> etc/pool_passwd +echo "md5_user:md5_password" >> etc/pool_passwd +#copy the pool_hba to etc dir +cp ../pool_hba.conf etc/ +./startall + +export PGPORT=$PGPOOL_PORT +wait_for_pgpool_startup + +#set passwords +$PSQL -c "SET password_encryption = 'scram-sha-256'; CREATE ROLE scram_user PASSWORD 'scram_password'; ALTER ROLE scram_user WITH LOGIN;" test +$PSQL -c "SET password_encryption = 'md5'; CREATE ROLE md5_user PASSWORD 'md5_password'; ALTER ROLE md5_user WITH LOGIN" test +$PSQL -c "CREATE ROLE trust_user PASSWORD 'trust_password';ALTER ROLE trust_user WITH LOGIN" test + + +if $PSQL -c "SELECT rolname,substring(rolpassword, 1, 14) FROM pg_authid where rolname ='scram_user'" test|grep "SCRAM-SHA-256" >/dev/null 2>&1 +then + echo "scram_user authenticated setup successfuly" +else + echo "scram authentication setup failed" + failed=1 +fi +if $PSQL -c "SELECT rolname,substring(rolpassword, 1, 4) FROM pg_authid where rolname ='md5_user'" test|grep "md5" >/dev/null 2>&1 +then + echo "md5 authenticated setup successfuly" +else + echo "md5 authentication setup failed" + failed=1 +fi +#create pgpass file +echo "127.0.0.1:$PGPORT:test:scram_user:scram_password" >> pgpass +echo "127.0.0.1:$PGPORT:test:md5_user:md5_password" >> pgpass +chmod 0600 pgpass +echo "127.0.0.1:$PGPORT:test:scram_user:scram_wrong_password" >> pgpasswrong +echo "127.0.0.1:$PGPORT:test:md5_user:md5_wrong_password" >> pgpasswrong +chmod 0600 pgpasswrong + + +export PGPASSFILE=$PWD/pgpass + +if $PSQL -h 127.0.0.1 -U scram_user -c "SELECT user, inet_client_addr();" test|grep "scram_user" >/dev/null 2>&1 +then + echo "scram_user authenticated successfuly" +else + echo "scram authentication failed" + failed=1 +fi + +if $PSQL -h 127.0.0.1 -U md5_user -c "SELECT user, inet_client_addr();" test|grep "md5_user" >/dev/null 2>&1 +then + echo "md5_user authenticated successfuly" +else + echo "md5 authentication failed" + failed=1 +fi +#now try using the wrong passwords1: +export PGPASSFILE=$PWD/pgpasswrong +echo "Trying wrong passwords now" +#try connect using scram_user and md5 user +if $PSQL -h 127.0.0.1 -U scram_user -c "SELECT user, inet_client_addr();" test|grep "scram_user" >/dev/null 2>&1 +then + failed=1 + echo "serious problem with scram authentication, password not verified by pgpool" +else + echo "wrong password rejected properly for scram auth" +fi + +if $PSQL -h 127.0.0.1 -U md5_user -c "SELECT user, inet_client_addr();" test|grep "md5_user" >/dev/null 2>&1 +then + failed=1 + echo "serious problem with md5 authentication, password not verified by pgpool" +else + echo "wrong password rejected properly for md5 auth" +fi + +./shutdownall +if [ -z "$failed" ]; then + exit 0 +fi + +exit 1 diff --git a/src/tools/Makefile.am b/src/tools/Makefile.am index cb31c42f..7f446c87 100644 --- a/src/tools/Makefile.am +++ b/src/tools/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = pcp pgmd5 +SUBDIRS = pcp pgmd5 pgenc dist_bin_SCRIPTS = pgpool_setup watchdog_setup diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in index bebf92ec..ea12591d 100644 --- a/src/tools/Makefile.in +++ b/src/tools/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,17 +15,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -89,6 +79,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/tools +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs $(dist_bin_SCRIPTS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -99,8 +91,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(dist_bin_SCRIPTS) \ - $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -191,7 +181,6 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -346,7 +335,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -355,7 +343,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = pcp pgmd5 +SUBDIRS = pcp pgmd5 pgenc dist_bin_SCRIPTS = pgpool_setup watchdog_setup all: all-recursive @@ -372,6 +360,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/tools/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -706,8 +695,6 @@ uninstall-am: uninstall-dist_binSCRIPTS ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dist_binSCRIPTS -.PRECIOUS: Makefile - pgpool_setup: ln -s ../test/pgpool_setup . diff --git a/src/tools/pcp/Makefile.in b/src/tools/pcp/Makefile.in index 9dca9faf..3a5ce59b 100644 --- a/src/tools/pcp/Makefile.in +++ b/src/tools/pcp/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,17 +15,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -95,6 +85,8 @@ bin_PROGRAMS = pcp_stop_pgpool$(EXEEXT) pcp_node_count$(EXEEXT) \ pcp_promote_node$(EXEEXT) pcp_pool_status$(EXEEXT) \ pcp_watchdog_info$(EXEEXT) subdir = src/tools/pcp +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -105,7 +97,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -221,7 +212,6 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -351,7 +341,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -401,6 +390,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/tools/pcp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/tools/pcp/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -749,8 +739,6 @@ uninstall-am: uninstall-binPROGRAMS mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/src/tools/pgenc/Makefile.am b/src/tools/pgenc/Makefile.am new file mode 100644 index 00000000..b04fb4d9 --- /dev/null +++ b/src/tools/pgenc/Makefile.am @@ -0,0 +1,54 @@ +AM_CPPFLAGS = -D_GNU_SOURCE -DPOOL_PRIVATE -I @PGSQL_INCLUDE_DIR@ +bin_PROGRAMS = pg_enc + +dist_pg_enc_SOURCES = pg_enc.c \ + ../fe_port.c +nodist_pg_enc_SOURCES = ssl_utils.c \ + md5.c \ + base64.c \ + pool_passwd.c \ + pool_signal.c \ + strlcpy.c \ + regex_array.c \ + pool_config_variables.c \ + pool_config.c \ + fe_memutils.c \ + pool_path.c \ + pool_globals.c + +DEFS = @DEFS@ \ + -DDEFAULT_CONFIGDIR=\"$(sysconfdir)\" -DPOOL_TOOLS + +pool_passwd.c: ../../../src/auth/pool_passwd.c + rm -f $@ && ln -s $< . +pool_path.c: ../../../src/utils/pool_path.c + rm -f $@ && ln -s $< . +md5.c: ../../../src/auth/md5.c + rm -f $@ && ln -s $< . +md5.h: ../../../src/include/auth/md5.h + rm -f $@ && ln -s $< . +base64.c: ../../../src/utils/base64.c + rm -f $@ && ln -s $< . +ssl_utils.c: ../../../src/utils/ssl_utils.c + rm -f $@ && ln -s $< . +base64.h: ../../../src/include/utils/base64.h + rm -f $@ && ln -s $< . +ssl_utils.h: ../../../src/include/utils/ssl_utils.h + rm -f $@ && ln -s $< . +pool_signal.c: ../../../src/utils/pool_signal.c + rm -f $@ && ln -s $< . +strlcpy.c: ../../../src/utils/strlcpy.c + rm -f $@ && ln -s $< . +regex_array.c: ../../../src/utils/regex_array.c + rm -f $@ && ln -s $< . +pool_config_variables.c: ../../../src/config/pool_config_variables.c + rm -f $@ && ln -s $< . +pool_config.c: ../../../src/config/pool_config.c + rm -f $@ && ln -s $< . +fe_memutils.c: ../../../src/tools/fe_memutils.c + rm -f $@ && ln -s $< . +pool_globals.c: ../../../src/main/pool_globals.c + rm -f $@ && ln -s $< . + +clean-local: + -rm -f $(nodist_pg_enc_SOURCES) diff --git a/src/tools/pgenc/Makefile.in b/src/tools/pgenc/Makefile.in new file mode 100644 index 00000000..e71fdbb2 --- /dev/null +++ b/src/tools/pgenc/Makefile.in @@ -0,0 +1,687 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = pg_enc$(EXEEXT) +subdir = src/tools/pgenc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/c-compiler.m4 \ + $(top_srcdir)/c-library.m4 $(top_srcdir)/general.m4 \ + $(top_srcdir)/ac_func_accept_argtypes.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/src/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am__dirstamp = $(am__leading_dot)dirstamp +dist_pg_enc_OBJECTS = pg_enc.$(OBJEXT) ../fe_port.$(OBJEXT) +nodist_pg_enc_OBJECTS = ssl_utils.$(OBJEXT) md5.$(OBJEXT) \ + base64.$(OBJEXT) pool_passwd.$(OBJEXT) pool_signal.$(OBJEXT) \ + strlcpy.$(OBJEXT) regex_array.$(OBJEXT) \ + pool_config_variables.$(OBJEXT) pool_config.$(OBJEXT) \ + fe_memutils.$(OBJEXT) pool_path.$(OBJEXT) \ + pool_globals.$(OBJEXT) +pg_enc_OBJECTS = $(dist_pg_enc_OBJECTS) $(nodist_pg_enc_OBJECTS) +pg_enc_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src/include +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(dist_pg_enc_SOURCES) $(nodist_pg_enc_SOURCES) +DIST_SOURCES = $(dist_pg_enc_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOG = @CATALOG@ +CC = @CC@ +CFLAGS = @CFLAGS@ +COLLATEINDEX = @COLLATEINDEX@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ \ + -DDEFAULT_CONFIGDIR=\"$(sysconfdir)\" -DPOOL_TOOLS + +DLLTOOL = @DLLTOOL@ +DOCBOOKSTYLE = @DOCBOOKSTYLE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JADE = @JADE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LYNX = @LYNX@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MEMCACHED_DIR = @MEMCACHED_DIR@ +MEMCACHED_INCLUDE_OPT = @MEMCACHED_INCLUDE_OPT@ +MEMCACHED_LINK_OPT = @MEMCACHED_LINK_OPT@ +MEMCACHED_RPATH_OPT = @MEMCACHED_RPATH_OPT@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NSGMLS = @NSGMLS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSX = @OSX@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PGCONFIG = @PGCONFIG@ +PGSQL_INCLUDE_DIR = @PGSQL_INCLUDE_DIR@ +PGSQL_LIB_DIR = @PGSQL_LIB_DIR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +STYLE = @STYLE@ +VERSION = @VERSION@ +XMLLINT = @XMLLINT@ +XSLTPROC = @XSLTPROC@ +XSLTPROC_HTML_FLAGS = @XSLTPROC_HTML_FLAGS@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +have_docbook = @have_docbook@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -D_GNU_SOURCE -DPOOL_PRIVATE -I @PGSQL_INCLUDE_DIR@ +dist_pg_enc_SOURCES = pg_enc.c \ + ../fe_port.c + +nodist_pg_enc_SOURCES = ssl_utils.c \ + md5.c \ + base64.c \ + pool_passwd.c \ + pool_signal.c \ + strlcpy.c \ + regex_array.c \ + pool_config_variables.c \ + pool_config.c \ + fe_memutils.c \ + pool_path.c \ + pool_globals.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/tools/pgenc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps src/tools/pgenc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +../$(am__dirstamp): + @$(MKDIR_P) .. + @: > ../$(am__dirstamp) +../fe_port.$(OBJEXT): ../$(am__dirstamp) + +pg_enc$(EXEEXT): $(pg_enc_OBJECTS) $(pg_enc_DEPENDENCIES) $(EXTRA_pg_enc_DEPENDENCIES) + @rm -f pg_enc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pg_enc_OBJECTS) $(pg_enc_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f ../*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f ../$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool clean-local \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS + + +pool_passwd.c: ../../../src/auth/pool_passwd.c + rm -f $@ && ln -s $< . +pool_path.c: ../../../src/utils/pool_path.c + rm -f $@ && ln -s $< . +md5.c: ../../../src/auth/md5.c + rm -f $@ && ln -s $< . +md5.h: ../../../src/include/auth/md5.h + rm -f $@ && ln -s $< . +base64.c: ../../../src/utils/base64.c + rm -f $@ && ln -s $< . +ssl_utils.c: ../../../src/utils/ssl_utils.c + rm -f $@ && ln -s $< . +base64.h: ../../../src/include/utils/base64.h + rm -f $@ && ln -s $< . +ssl_utils.h: ../../../src/include/utils/ssl_utils.h + rm -f $@ && ln -s $< . +pool_signal.c: ../../../src/utils/pool_signal.c + rm -f $@ && ln -s $< . +strlcpy.c: ../../../src/utils/strlcpy.c + rm -f $@ && ln -s $< . +regex_array.c: ../../../src/utils/regex_array.c + rm -f $@ && ln -s $< . +pool_config_variables.c: ../../../src/config/pool_config_variables.c + rm -f $@ && ln -s $< . +pool_config.c: ../../../src/config/pool_config.c + rm -f $@ && ln -s $< . +fe_memutils.c: ../../../src/tools/fe_memutils.c + rm -f $@ && ln -s $< . +pool_globals.c: ../../../src/main/pool_globals.c + rm -f $@ && ln -s $< . + +clean-local: + -rm -f $(nodist_pg_enc_SOURCES) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/tools/pgenc/pg_enc.c b/src/tools/pgenc/pg_enc.c new file mode 100644 index 00000000..8671b449 --- /dev/null +++ b/src/tools/pgenc/pg_enc.c @@ -0,0 +1,450 @@ +/* -*-pgsql-c-*- */ +/* + * $Header$ + * + * pgpool: a language independent connection pool server for PostgreSQL + * written by Tatsuo Ishii + * + * Copyright (c) 2003-2018 PgPool Global Development Group + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose and without fee is hereby + * granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of the + * author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * pg_enc command main + * + */ +#include "pool.h" +#include "pool_config.h" +#include "auth/pool_passwd.h" +#include "utils/ssl_utils.h" +#include "utils/pool_path.h" +#include "utils/base64.h" +#include "version.h" + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_GETOPT_H +#include +#else +#include "utils/getopt_long.h" +#endif +#include +#include + +#define MAX_ENCODED_PASSWD_LEN (MAX_POOL_KEY_LEN * 2) + +static void print_usage(const char prog[], int exit_code); +static void set_tio_attr(int enable); +static void update_pool_passwd(char *conf_file, char *username, char *password, char *key); +static bool get_pool_key_filename(char *poolKeyFile); + +int +main(int argc, char *argv[]) +{ +#define PRINT_USAGE(exit_code) print_usage(argv[0], exit_code) + + char conf_file[POOLMAXPATHLEN+1]; + char enc_key[MAX_POOL_KEY_LEN+1]; + char pg_pass[MAX_PGPASS_LEN+1]; + char username[MAX_USER_NAME_LEN+1]; + char key_file_path[POOLMAXPATHLEN]; + int opt; + int optindex; + bool updatepasswd = false; + bool prompt = false; + bool prompt_for_key = false; + char *pool_key = NULL; + + static struct option long_options[] = { + {"help", no_argument, NULL, 'h'}, + {"prompt", no_argument, NULL, 'p'}, + {"prompt-for-key", no_argument, NULL, 'P'}, + {"update-pass", no_argument, NULL, 'm'}, + {"username", required_argument, NULL, 'u'}, + {"enc-key", required_argument, NULL, 'K'}, + {"key-file", required_argument, NULL, 'k'}, + {"config-file", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0} + }; + + snprintf(conf_file, sizeof(conf_file), "%s/%s", DEFAULT_CONFIGDIR, POOL_CONF_FILE_NAME); + + /* initialize username buffer with zeros so that we can use strlen on it later + to check if a username was given on the command line + */ + memset(username, 0, sizeof(username)); + memset(enc_key, 0, sizeof(enc_key)); + memset(key_file_path, 0, sizeof(key_file_path)); + + while ((opt = getopt_long(argc, argv, "hPpmf:u:k:K:", long_options, &optindex)) != -1) + { + switch (opt) + { + case 'p': /* prompt for postgres password */ + prompt = true; + break; + + case 'P': /* prompt for encryption key */ + prompt_for_key = true; + break; + + case 'm': /* update password file */ + updatepasswd = true; + break; + + case 'f': /* specify configuration file */ + if (!optarg) + { + PRINT_USAGE(EXIT_SUCCESS); + } + strlcpy(conf_file, optarg, sizeof(conf_file)); + break; + + case 'k': /* specify key file for encrypting pool_password entries */ + if (!optarg) + { + PRINT_USAGE(EXIT_SUCCESS); + } + strlcpy(key_file_path, optarg, sizeof(key_file_path)); + break; + + case 'K': /* specify configuration file */ + if (!optarg) + { + PRINT_USAGE(EXIT_SUCCESS); + } + strlcpy(enc_key, optarg, sizeof(enc_key)); + break; + + case 'u': + if (!optarg) + { + PRINT_USAGE(EXIT_SUCCESS); + } + /* check the input limit early */ + if (strlen(optarg) > sizeof(username)) + { + fprintf(stderr, "Error: input exceeds maximum username length!\n\n"); + exit(EXIT_FAILURE); + } + strlcpy(username, optarg, sizeof(username)); + break; + + default: + PRINT_USAGE(EXIT_SUCCESS); + break; + } + } + + /* Prompt for password. */ + if (prompt || optind >= argc) + { + char buf[MAX_PGPASS_LEN]; + int len; + + set_tio_attr(1); + printf("db password: "); + if (!fgets(buf, sizeof(buf), stdin)) + { + int eno = errno; + + fprintf(stderr, "Couldn't read input from stdin. (fgets(): %s)", + strerror(eno)); + + exit(EXIT_FAILURE); + } + printf("\n"); + set_tio_attr(0); + + /* Remove LF at the end of line, if there is any. */ + len = strlen(buf); + if (len > 0 && buf[len-1] == '\n') + { + buf[len-1] = '\0'; + len--; + } + stpncpy(pg_pass,buf,sizeof(pg_pass)); + } + + /* Read password from argv. */ + else + { + int len; + + len = strlen(argv[optind]); + + if (len > MAX_PGPASS_LEN) + { + fprintf(stderr, "Error: Input exceeds maximum password length given:%d max allowed:%d!\n\n",len,MAX_PGPASS_LEN); + PRINT_USAGE(EXIT_FAILURE); + } + + stpncpy(pg_pass,argv[optind],sizeof(pg_pass)); + } + /* prompt for key, overrides all key related arguments */ + if (prompt_for_key) + { + char buf[MAX_POOL_KEY_LEN]; + int len; + /* we need to read the encryption key from stdin */ + set_tio_attr(1); + printf("encryption key: "); + if (!fgets(buf, sizeof(buf), stdin)) + { + int eno = errno; + + fprintf(stderr, "Couldn't read input from stdin. (fgets(): %s)", + strerror(eno)); + + exit(EXIT_FAILURE); + } + printf("\n"); + set_tio_attr(0); + /* Remove LF at the end of line, if there is any. */ + len = strlen(buf); + if (len > 0 && buf[len-1] == '\n') + { + buf[len-1] = '\0'; + len--; + } + if (len == 0) + { + fprintf(stderr, "encryption key not provided\n"); + exit(EXIT_FAILURE); + } + stpncpy(enc_key,buf,sizeof(enc_key)); + } + else + { + /* check if we already have not got the key from command line argument */ + if (strlen(enc_key) == 0) + { + /* read from file */ + if (strlen(key_file_path) == 0) + { + get_pool_key_filename(key_file_path); + } + + fprintf(stdout, "trying to read key from file %s\n",key_file_path); + + pool_key = read_pool_key(key_file_path); + } + else + { + pool_key = enc_key; + } + } + + if (pool_key == NULL) + { + fprintf(stderr, "encryption key not provided"); + exit(EXIT_FAILURE); + } + + if (updatepasswd) + { + update_pool_passwd(conf_file, username, pg_pass, pool_key); + } + else + { + unsigned char ciphertext[MAX_ENCODED_PASSWD_LEN]; + unsigned char b64_enc[MAX_ENCODED_PASSWD_LEN]; + int len; + int cypher_len; + + cypher_len = aes_encrypt_with_password((unsigned char*)pg_pass, + strlen(pg_pass), pool_key, ciphertext); + + /* generate the hash for the given username */ + len = pg_b64_encode((const char*)ciphertext, cypher_len, (char*)b64_enc); + b64_enc[len] = 0; + fprintf(stdout,"\n%s\n",b64_enc); + fprintf(stdout,"pool_passwd string: AES%s\n",b64_enc); + +#ifdef DEBUG_ENCODING + unsigned char b64_dec[MAX_ENCODED_PASSWD_LEN]; + unsigned char plaintext[MAX_PGPASS_LEN]; + len = pg_b64_decode(b64_enc, len, b64_dec); + len = aes_decrypt_with_password(b64_dec, len, + pool_key, plaintext); + plaintext[len] = 0; +#endif + } + + if (pool_key != enc_key) + free(pool_key); + + return EXIT_SUCCESS; +} + +static void update_pool_passwd(char *conf_file, char *username, char *password, char *key) +{ + struct passwd *pw; + char pool_passwd[MAX_PGPASS_LEN+1]; + char dirnamebuf[POOLMAXPATHLEN+1]; + char *dirp; + char *user = username; + + unsigned char ciphertext[MAX_ENCODED_PASSWD_LEN]; + unsigned char b64_enc[MAX_ENCODED_PASSWD_LEN]; + int len; + + if (pool_init_config()) + { + fprintf(stderr, "pool_init_config() failed\n\n"); + exit(EXIT_FAILURE); + } + if (pool_get_config(conf_file, CFGCXT_RELOAD) == false) + { + fprintf(stderr, "Unable to get configuration. Exiting..."); + exit(EXIT_FAILURE); + } + + strlcpy(dirnamebuf, conf_file, sizeof(dirnamebuf)); + dirp = dirname(dirnamebuf); + snprintf(pool_passwd, sizeof(pool_passwd), "%s/%s", + dirp, pool_config->pool_passwd); + pool_init_pool_passwd(pool_passwd, POOL_PASSWD_RW); + + if(username == NULL || strlen(username) == 0) + { + /* get the user information from the current uid */ + pw = getpwuid(getuid()); + if (!pw) + { + fprintf(stderr, "getpwuid() failed\n\n"); + exit(EXIT_FAILURE); + } + user = pw->pw_name; + } + + /* generate the hash for the given username */ + int cypher_len = aes_encrypt_with_password((unsigned char*)password, strlen(password), key, ciphertext); + if (cypher_len <= 0 ) + { + fprintf(stderr, "password encryption failed\n\n"); + exit(EXIT_FAILURE); + } + + /* copy the prefix at the start of string */ + strcpy((char*)b64_enc, (char*)PASSWORD_AES_PREFIX); + len = pg_b64_encode((const char*)ciphertext, cypher_len, (char*)b64_enc + strlen(PASSWORD_AES_PREFIX)); + if (cypher_len <= 0 ) + { + fprintf(stderr, "base64 encoding failed\n\n"); + exit(EXIT_FAILURE); + } + len+= strlen(PASSWORD_AES_PREFIX); + b64_enc[len] = 0; + + pool_create_passwdent(user, (char*)b64_enc); + pool_finish_pool_passwd(); +} + +static void +print_usage(const char prog[], int exit_code) +{ + char homedir[POOLMAXPATHLEN]; + FILE *stream = (exit_code == EXIT_SUCCESS) ? stdout : stderr; + if (!get_home_directory(homedir, sizeof(homedir))) + strncpy(homedir,"USER-HOME-DIR",POOLMAXPATHLEN); + + fprintf(stream, "%s version %s (%s),\n", PACKAGE, VERSION, PGPOOLVERSION); + fprintf(stream, " password encryption utility for Pgpool\n\n"); + fprintf(stream, "Usage:\n"); + fprintf(stream, " %s [OPTIONS] \n",prog); + fprintf(stream, " -k, --key-file=KEY_FILE\n"); + fprintf(stream, " Set the path to the encryption key file\n"); + fprintf(stream, " (default: %s/%s)\n",homedir, POOLKEYFILE); + fprintf(stream, " can be over ridden by %s environment variable\n",POOLKEYFILEENV); + fprintf(stream, " -K, --enc-key=ENCRYPTION_KEY\n"); + fprintf(stream, " Encryption key to be used for encrypting database passwords\n"); + fprintf(stream, " Specify pgpool.conf\n"); + fprintf(stream, " -f, --config-file=CONFIG_FILE\n"); + fprintf(stream, " Encryption key to be used for encrypting database passwords\n"); + fprintf(stream, " -p, --prompt Prompt for database password using standard input.\n"); + fprintf(stream, " -P, --prompt-for-key Prompt for encryption key using standard input.\n"); + fprintf(stream, " -m, --update-pass create encrypted password entry in pool_passwd file.\n"); + fprintf(stream, " -u, --username database USER for creating pool_password entry.\n"); + fprintf(stream, " -h, --help Print this help\n\n"); + + exit(exit_code); +} + + +static void +set_tio_attr(int set) +{ + struct termios tio; + static struct termios tio_save; + + + if (!isatty(0)) + { + fprintf(stderr, "stdin is not tty\n"); + exit(EXIT_FAILURE); + } + + if (set) + { + if (tcgetattr(0, &tio) < 0) + { + fprintf(stderr, "set_tio_attr(set): tcgetattr failed\n"); + exit(EXIT_FAILURE); + } + + tio_save = tio; + + tio.c_iflag &= ~(BRKINT|ISTRIP|IXON); + tio.c_lflag &= ~(ICANON|IEXTEN|ECHO|ECHOE|ECHOK|ECHONL); + tio.c_cc[VMIN] = 1; + tio.c_cc[VTIME] = 0; + + if (tcsetattr(0, TCSANOW, &tio) < 0) + { + fprintf(stderr, "(set_tio_attr(set): tcsetattr failed\n"); + exit(EXIT_FAILURE); + } + } + else + { + if (tcsetattr(0, TCSANOW, &tio_save) < 0) + { + fprintf(stderr, "set_tio_attr(reset): tcsetattr failed\n"); + exit(EXIT_FAILURE); + } + } +} + +static bool +get_pool_key_filename(char *poolKeyFile) +{ + char *passfile_env; + + if ((passfile_env = getenv(POOLKEYFILEENV)) != NULL) + { + /* use the literal path from the environment, if set */ + strlcpy(poolKeyFile, passfile_env, POOLMAXPATHLEN); + } + else + { + char homedir[POOLMAXPATHLEN]; + if (!get_home_directory(homedir, sizeof(homedir))) + return false; + snprintf(poolKeyFile, POOLMAXPATHLEN, "%s/%s", homedir, POOLKEYFILE); + } + return true; +} + diff --git a/src/tools/pgmd5/Makefile.in b/src/tools/pgmd5/Makefile.in index 7b0363b9..db6bd8a7 100644 --- a/src/tools/pgmd5/Makefile.in +++ b/src/tools/pgmd5/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,17 +15,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -90,6 +80,8 @@ build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = pg_md5$(EXEEXT) subdir = src/tools/pgmd5 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -100,7 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -178,7 +169,6 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -310,7 +300,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -349,6 +338,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/tools/pgmd5/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/tools/pgmd5/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -652,8 +642,6 @@ uninstall-am: uninstall-binPROGRAMS pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS -.PRECIOUS: Makefile - md5.c: ../../../src/auth/md5.c rm -f $@ && ln -s $< . diff --git a/src/tools/pgmd5/pool_config.c b/src/tools/pgmd5/pool_config.c deleted file mode 100644 index 278de700..00000000 --- a/src/tools/pgmd5/pool_config.c +++ /dev/null @@ -1,2317 +0,0 @@ - -#line 3 "pool_config.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -typedef uint64_t flex_uint64_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - yy_size_t yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define yywrap(n) 1 -#define YY_SKIP_YYWRAP - -typedef unsigned char YY_CHAR; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; - -typedef int yy_state_type; - -extern int yylineno; - -int yylineno = 1; - -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (yy_size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 11 -#define YY_END_OF_BUFFER 12 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[38] = - { 0, - 0, 0, 12, 10, 2, 1, 10, 10, 10, 8, - 7, 7, 9, 4, 2, 0, 3, 0, 5, 0, - 8, 7, 7, 8, 0, 0, 6, 4, 4, 0, - 5, 0, 0, 8, 7, 6, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 4, 1, 1, 1, 5, 1, - 1, 1, 6, 1, 7, 8, 9, 10, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 9, 1, 1, - 12, 1, 1, 1, 13, 13, 13, 13, 14, 13, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 1, 16, 1, 1, 17, 1, 13, 13, 13, 13, - - 14, 13, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 18, - 15, 15, 1, 1, 1, 1, 1, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15 - } ; - -static yyconst flex_int32_t yy_meta[19] = - { 0, - 1, 1, 2, 1, 1, 1, 3, 3, 3, 4, - 4, 1, 5, 4, 3, 1, 3, 3 - } ; - -static yyconst flex_int16_t yy_base[45] = - { 0, - 0, 0, 61, 86, 58, 86, 55, 14, 23, 43, - 10, 46, 86, 28, 47, 40, 86, 16, 86, 22, - 28, 0, 0, 0, 40, 0, 24, 45, 0, 24, - 39, 43, 12, 14, 0, 22, 86, 62, 67, 22, - 70, 75, 77, 80 - } ; - -static yyconst flex_int16_t yy_def[45] = - { 0, - 37, 1, 37, 37, 37, 37, 38, 39, 37, 40, - 9, 9, 37, 41, 37, 38, 37, 39, 37, 42, - 40, 11, 12, 21, 37, 43, 44, 41, 28, 39, - 39, 42, 37, 37, 43, 44, 0, 37, 37, 37, - 37, 37, 37, 37 - } ; - -static yyconst flex_int16_t yy_nxt[105] = - { 0, - 4, 5, 6, 7, 8, 9, 9, 10, 4, 11, - 12, 13, 14, 14, 14, 4, 14, 14, 19, 23, - 19, 34, 34, 34, 34, 24, 31, 26, 19, 20, - 21, 20, 22, 23, 27, 27, 27, 32, 36, 20, - 36, 25, 17, 19, 29, 33, 33, 31, 15, 34, - 34, 27, 27, 27, 20, 23, 25, 17, 32, 15, - 37, 29, 16, 16, 16, 16, 16, 18, 37, 18, - 18, 18, 28, 28, 28, 30, 37, 30, 30, 30, - 35, 35, 27, 27, 27, 3, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - - 37, 37, 37, 37 - } ; - -static yyconst flex_int16_t yy_chk[105] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 8, 11, - 18, 33, 33, 34, 34, 40, 20, 11, 30, 8, - 9, 18, 9, 9, 14, 14, 14, 20, 36, 30, - 27, 21, 16, 31, 14, 25, 25, 32, 15, 25, - 25, 28, 28, 28, 31, 12, 10, 7, 32, 5, - 3, 28, 38, 38, 38, 38, 38, 39, 0, 39, - 39, 39, 41, 41, 41, 42, 0, 42, 42, 42, - 43, 43, 44, 44, 44, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - - 37, 37, 37, 37 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "pool_config.l" -/* -*-pgsql-c-*- */ -/* - * - * $Header$ - * - * pgpool: a language independent connection pool server for PostgreSQL - * written by Tatsuo Ishii - * - * Copyright (c) 2003-2016 PgPool Global Development Group - * - * Permission to use, copy, modify, and distribute this software and - * its documentation for any purpose and without fee is hereby - * granted, provided that the above copyright notice appear in all - * copies and that both that copyright notice and this permission - * notice appear in supporting documentation, and that the name of the - * author not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. The author makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * pool_config.l: read configuration file - * - */ -#line 27 "pool_config.l" -#include -#include -#include -#include -#include "pool.h" -#include "pool_config.h" -#include "pool_config_variables.h" -#include "utils/regex_array.h" -#ifndef POOL_PRIVATE -#include "utils/elog.h" -#else -#include "utils/fe_ports.h" -#endif - -/* to shut off compiler warnings */ -int yylex(void); - -POOL_CONFIG g_pool_config; /* configuration values */ -POOL_CONFIG *pool_config = &g_pool_config; /* for lagacy reason pointer to the above struct */ -static unsigned Lineno; - -typedef enum { - POOL_KEY = 1, - POOL_INTEGER, - POOL_REAL, - POOL_STRING, - POOL_UNQUOTED_STRING, - POOL_EQUALS, - POOL_EOL, - POOL_PARSE_ERROR -} POOL_TOKEN; - -static char *extract_string(char *value, POOL_TOKEN token); -static void FreeConfigVariable(ConfigVariable *item); -static bool ParseConfigFile( const char *config_file, int elevel, - ConfigVariable **head_p, ConfigVariable **tail_p); - -#define YY_NO_INPUT 1 -#line 550 "pool_config.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy (void ); - -int yyget_debug (void ); - -void yyset_debug (int debug_flag ); - -YY_EXTRA_TYPE yyget_extra (void ); - -void yyset_extra (YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in (void ); - -void yyset_in (FILE * in_str ); - -FILE *yyget_out (void ); - -void yyset_out (FILE * out_str ); - -yy_size_t yyget_leng (void ); - -char *yyget_text (void ); - -int yyget_lineno (void ); - -void yyset_lineno (int line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap (void ); -#else -extern int yywrap (void ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - yy_size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 89 "pool_config.l" - - -#line 733 "pool_config.c" - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 38 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_current_state != 37 ); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -/* rule 1 can match eol */ -YY_RULE_SETUP -#line 91 "pool_config.l" -Lineno++; return POOL_EOL; - YY_BREAK -case 2: -YY_RULE_SETUP -#line 92 "pool_config.l" -/* eat whitespace */ - YY_BREAK -case 3: -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 93 "pool_config.l" -/* eat comment */ - YY_BREAK -case 4: -YY_RULE_SETUP -#line 95 "pool_config.l" -return POOL_KEY; - YY_BREAK -case 5: -YY_RULE_SETUP -#line 96 "pool_config.l" -return POOL_STRING; - YY_BREAK -case 6: -YY_RULE_SETUP -#line 97 "pool_config.l" -return POOL_UNQUOTED_STRING; - YY_BREAK -case 7: -YY_RULE_SETUP -#line 98 "pool_config.l" -return POOL_INTEGER; - YY_BREAK -case 8: -YY_RULE_SETUP -#line 99 "pool_config.l" -return POOL_REAL; - YY_BREAK -case 9: -YY_RULE_SETUP -#line 100 "pool_config.l" -return POOL_EQUALS; - YY_BREAK -case 10: -YY_RULE_SETUP -#line 102 "pool_config.l" -return POOL_PARSE_ERROR; - YY_BREAK -case 11: -YY_RULE_SETUP -#line 104 "pool_config.l" -ECHO; - YY_BREAK -#line 871 "pool_config.c" -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - yy_size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - yy_size_t new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 38 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 38 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 37); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart(yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); - - yyfree((void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) -{ - - return yy_scan_bytes(yystr,strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n, i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) yyalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -yy_size_t yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param line_number - * - */ -void yyset_lineno (int line_number ) -{ - - yylineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * in_str ) -{ - yyin = in_str ; -} - -void yyset_out (FILE * out_str ) -{ - yyout = out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int bdebug ) -{ - yy_flex_debug = bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 104 "pool_config.l" - - - -int pool_init_config(void) -{ - memset(pool_config, 0, sizeof(POOL_CONFIG)); - -#ifndef POOL_PRIVATE - g_pool_config.backend_desc = pool_shared_memory_create(sizeof(BackendDesc)); - memset(g_pool_config.backend_desc, 0, sizeof(BackendDesc)); -#else - g_pool_config.backend_desc = palloc0(sizeof(BackendDesc)); -#endif - g_pool_config.health_check_params = palloc0(MAX_NUM_BACKENDS*sizeof(HealthCheckParams)); - - InitializeConfigOptions(); - - return 0; -} - -/* - * Add regex expression to patterns array - * The supported type are: black_function_list and white_function_list - * Return 0 on error, 1 on success - */ -int add_regex_pattern(const char *type, char *s) -{ - int regex_flags = REG_NOSUB; - RegPattern currItem; - /* force case insensitive pattern matching */ - regex_flags |= REG_ICASE; - /* Add extended regex search */ - regex_flags |= REG_EXTENDED; - /* Fill the pattern type */ - if (strcmp(type, "black_function_list") == 0 || - strcmp(type, "black_memqcache_table_list") == 0) - { - currItem.type = BLACKLIST; - } - else if (strcmp(type, "white_function_list") == 0 || - strcmp(type, "white_memqcache_table_list") == 0) - { - currItem.type = WHITELIST; - } - else - { - ereport(WARNING, - (errmsg("unable to add regex pattern, bad pattern type %s", type))); - return 0; - } - /* Fill the pattern flag */ - currItem.flag = regex_flags; - - /* Fill pattern array */ - currItem.pattern = palloc(sizeof(char)*(strlen(s)+3)); - /* Force exact matching of function name with ^ and $ on the regex - if required to prevent partial matching. It also allow backward - compatibility. - */ - if (strncmp(s, "^", 1) != 0) { - strncpy(currItem.pattern, "^", 2); - strncat(currItem.pattern, s, strlen(s) + 1); - } else { - strncpy(currItem.pattern, s, strlen(s) + 1); - } - if (s[strlen(s)-1] != '$') { - strncat(currItem.pattern, "$", 2); - } - ereport(DEBUG1, - (errmsg("initializing pool configuration"), - errdetail("adding regex pattern for \"%s\" pattern: %s",type, currItem.pattern))); - - /* compile our regex */ - if (regcomp(&currItem.regexv, currItem.pattern, currItem.flag) != 0) - { - ereport(WARNING, - (errmsg("unable to add regex pattern for \"%s\", invalid pattern: \"%s\"", type,currItem.pattern))); - } - else if ((strcmp(type, "white_function_list") == 0 || - strcmp(type, "black_function_list") == 0) && - growFunctionPatternArray(currItem) < 0) - { - ereport(WARNING, - (errmsg("unable to add regex pattern for \"%s\", unable to allocate new pattern", type))); - return 0; - } - else if ((strcmp(type, "white_memqcache_table_list") == 0 || - strcmp(type, "black_memqcache_table_list") == 0) && - growMemqcacheTablePatternArray(currItem) < 0) - { - ereport(WARNING, - (errmsg("unable to add regex pattern for \"%s\", unable to allocate new pattern", type))); - return 0; - } - - return 1; -} - -/* - * Dynamically grow the regex pattern array - * The array start with PATTERN_ARR_SIZE storage place, if required - * it will grow of PATTERN_ARR_SIZE more each time. - */ -int growFunctionPatternArray(RegPattern item) -{ - void *_tmp = NULL; - if (pool_config->pattc == pool_config->current_pattern_size) - { - pool_config->current_pattern_size += PATTERN_ARR_SIZE; - _tmp = repalloc(pool_config->lists_patterns, - (pool_config->current_pattern_size * sizeof(RegPattern))); - if (!_tmp) - { - return(-1); - } - - pool_config->lists_patterns = (RegPattern*)_tmp; - } - pool_config->lists_patterns[pool_config->pattc] = item; - pool_config->pattc++; - - return(pool_config->pattc); -} - -int growMemqcacheTablePatternArray(RegPattern item) -{ - void *_tmp = NULL; - if (pool_config->memqcache_table_pattc == pool_config->current_memqcache_table_pattern_size) - { - pool_config->current_memqcache_table_pattern_size += PATTERN_ARR_SIZE; - _tmp = repalloc(pool_config->lists_memqcache_table_patterns, - (pool_config->current_memqcache_table_pattern_size * sizeof(RegPattern))); - if (!_tmp) - { - return(-1); - } - - pool_config->lists_memqcache_table_patterns = (RegPattern*)_tmp; - } - pool_config->lists_memqcache_table_patterns[pool_config->memqcache_table_pattc] = item; - pool_config->memqcache_table_pattc++; - - return(pool_config->memqcache_table_pattc); -} - -/* - * Free a single ConfigVariable - */ -static void -FreeConfigVariable(ConfigVariable *item) -{ - if (item->name) - pfree(item->name); - if (item->value) - pfree(item->value); - pfree(item); -} - -/* - * Free a list of ConfigVariables, including the names and the values - */ -static void -FreeConfigVariables(ConfigVariable *list) -{ - ConfigVariable *item; - - item = list; - while (item) - { - ConfigVariable *next = item->next; - FreeConfigVariable(item); - item = next; - } -} - -/* - * Read and parse a single configuration file. - * - * Input parameters: - * config_file: absolute or relative path name of the configuration file - * elevel: error logging level to use - * Input/Output parameters: - * head_p, tail_p: head and tail of linked list of name/value pairs - * - * *head_p and *tail_p must be initialized, either to NULL or valid pointers - * to a ConfigVariable list, before calling the outer recursion level. Any - * name-value pairs read from the input file(s) will be appended to the list. - * - * Note: if elevel >= ERROR then an error will not return control to the - * caller, so there is no need to check the return value in that case. - * - */ -static bool -ParseConfigFile(const char *config_file, int elevel, - ConfigVariable **head_p, ConfigVariable **tail_p) -{ - - FILE *fd; - int token; - char *key; - char *val; - ConfigVariable *item; - - *head_p = NULL; - - /* open config file */ - fd = fopen(config_file, "r"); - if (!fd) - { - ereport(WARNING, - (errmsg("could not open configuration file: \"%s\"",config_file), - errdetail("using default configuration parameter values"))); - return false; - } - - yyin = fd; - Lineno = 1; - - for(;;) - { - token = yylex(); - - if (token == 0) - break; - - if (token == POOL_EOL) - continue; - - if (token == POOL_PARSE_ERROR) - goto parse_error; - - if (token != POOL_KEY) - goto parse_error; - - key = pstrdup(yytext); - - token = yylex(); - - /* next we have an optional equal sign; discard if present */ - if (token == POOL_EQUALS) - token = yylex(); - - val = extract_string(yytext,token); - - ereport(DEBUG5, - (errmsg("key: \"%s\" value: \"%s\" kind: %d",key, val, token))); - - /* Add this to the list */ - item = palloc(sizeof(ConfigVariable)); - item->name = key; - item->value = val; - item->sourceline = Lineno; - item->next = NULL; - if (*head_p == NULL) - *head_p = item; - else - (*tail_p)->next = item; - *tail_p = item; - } - - fclose(fd); - return true; - -parse_error: - - fclose(fd); - FreeConfigVariables(*head_p); - *head_p = NULL; - *tail_p = NULL; - ereport(elevel, - (errmsg("syntex error in configuration file \"%s\"",config_file), - errdetail("parse error at line %d '%s' token = %d", Lineno, yytext,token))); - - return false; -} - -/* - * Read the configuration file and load the values of all parameters - */ -bool pool_get_config(const char *config_file, ConfigContext context) -{ - ConfigVariable *head_p = NULL; - ConfigVariable *tail_p = NULL; - bool res; - int elevel = (context == CFGCXT_INIT)?FATAL:WARNING; - - res = ParseConfigFile(config_file, elevel, &head_p, &tail_p); - if (res == false || head_p == NULL) - return false; - - res = set_config_options(head_p, context, PGC_S_FILE, elevel); - FreeConfigVariables(head_p); - return res; -} - - -static char *extract_string(char *value, POOL_TOKEN token) -{ - char *ret = NULL; - - if (token == POOL_STRING) - { - ret = pstrdup(value+1); - ret[strlen(ret)-1] = '\0'; - } - else - ret = pstrdup(value); - - return ret; -} - -/* - * Try to interpret value as boolean value. Valid values are: true, - * false, yes, no, on, off, 1, 0; as well as unique prefixes thereof. - * If the string parses okay, return true, else false. - * If okay and result is not NULL, return the value in *result. - * This function copied from PostgreSQL source code. - */ -static bool parse_bool_with_len(const char *value, size_t len, bool *result) -{ - switch (*value) - { - case 't': - case 'T': - if (strncasecmp(value, "true", len) == 0) - { - if (result) - *result = true; - return true; - } - break; - case 'f': - case 'F': - if (strncasecmp(value, "false", len) == 0) - { - if (result) - *result = false; - return true; - } - break; - case 'y': - case 'Y': - if (strncasecmp(value, "yes", len) == 0) - { - if (result) - *result = true; - return true; - } - break; - case 'n': - case 'N': - if (strncasecmp(value, "no", len) == 0) - { - if (result) - *result = false; - return true; - } - break; - case 'o': - case 'O': - /* 'o' is not unique enough */ - if (strncasecmp(value, "on", (len > 2 ? len : 2)) == 0) - { - if (result) - *result = true; - return true; - } - else if (strncasecmp(value, "off", (len > 2 ? len : 2)) == 0) - { - if (result) - *result = false; - return true; - } - break; - case '1': - if (len == 1) - { - if (result) - *result = true; - return true; - } - break; - case '0': - if (len == 1) - { - if (result) - *result = false; - return true; - } - break; - default: - break; - } - - if (result) - *result = false; /* suppress compiler warning */ - return false; -} - -int eval_logical(const char *str) -{ - bool result; - - if (!parse_bool_with_len(str, strlen(str), &result)) - return -1; - - return (result ? 1 : 0); -} - - -#ifdef DEBUG -static void print_host_entry(int slot) -{ - ereport(DEBUG1, - (errmsg("initializing pool configuration"), - errdetail("slot: %d host: %s port: %d status: %d weight: %f", - slot, - pool_config->server_hostnames[slot], - pool_config->server_ports[slot], - pool_config->server_status[slot], - pool_config->server_weights[slot]))); -} -#endif - - -/* - * Translate binary form of backend flag to string. - * The returned data is in static buffer, and it will be destroyed - * at the next call to this function. - */ -char *pool_flag_to_str(unsigned short flag) -{ - static char buf[1024]; /* should be large enough */ - - *buf = '\0'; - - if (POOL_ALLOW_TO_FAILOVER(flag)) - snprintf(buf, sizeof(buf), "ALLOW_TO_FAILOVER"); - else if (POOL_DISALLOW_TO_FAILOVER(flag)) - snprintf(buf, sizeof(buf), "DISALLOW_TO_FAILOVER"); - - if (POOL_ALWAYS_MASTER & flag) - { - if (*buf == '\0') - snprintf(buf, sizeof(buf), "ALWAYS_MASTER"); - else - snprintf(buf+strlen(buf), sizeof(buf), "|ALWAYS_MASTER"); - } - - return buf; -} - -/* - * Translate the BACKEND_STATUS enum value to string. - * the function returns the constant string so should not be freed - */ -char* backend_status_to_str(BackendInfo *bi) -{ - char *statusName; - - switch (bi->backend_status) { - - case CON_UNUSED: - statusName = BACKEND_STATUS_CON_UNUSED; - break; - - case CON_CONNECT_WAIT: - statusName = BACKEND_STATUS_CON_CONNECT_WAIT; - break; - - case CON_UP: - statusName = BACKEND_STATUS_CON_UP; - break; - - case CON_DOWN: - { - if (bi->quarantine) - statusName = BACKEND_STATUS_QUARANTINE; - else - statusName = BACKEND_STATUS_CON_DOWN; - } - break; - - default: - statusName = "unknown"; - break; - } - return statusName; -} - diff --git a/src/tools/pgmd5/pool_config.c b/src/tools/pgmd5/pool_config.c new file mode 120000 index 00000000..2636b786 --- /dev/null +++ b/src/tools/pgmd5/pool_config.c @@ -0,0 +1 @@ +../../../src/config/pool_config.c \ No newline at end of file diff --git a/src/utils/base64.c b/src/utils/base64.c new file mode 100644 index 00000000..0c6a4463 --- /dev/null +++ b/src/utils/base64.c @@ -0,0 +1,196 @@ +/*------------------------------------------------------------------------- + * + * base64.c + * Encoding and decoding routines for base64 without whitespace. + * + * Copyright (c) 2001-2017, PostgreSQL Global Development Group + * + * + * IDENTIFICATION + * src/common/base64.c + * + *------------------------------------------------------------------------- + */ + + +#include "pool_type.h" +#include "utils/base64.h" + + +/* + * BASE64 + */ + +static const char _base64[] = +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +static const int8 b64lookup[128] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, + -1, 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, -1, -1, -1, -1, +}; + +/* + * pg_b64_encode + * + * Encode into base64 the given string. Returns the length of the encoded + * string. + */ +int +pg_b64_encode(const char *src, int len, char *dst) +{ + char *p; + const char *s, + *end = src + len; + int pos = 2; + uint32 buf = 0; + + s = src; + p = dst; + + while (s < end) + { + buf |= (unsigned char) *s << (pos << 3); + pos--; + s++; + + /* write it out */ + if (pos < 0) + { + *p++ = _base64[(buf >> 18) & 0x3f]; + *p++ = _base64[(buf >> 12) & 0x3f]; + *p++ = _base64[(buf >> 6) & 0x3f]; + *p++ = _base64[buf & 0x3f]; + + pos = 2; + buf = 0; + } + } + if (pos != 2) + { + *p++ = _base64[(buf >> 18) & 0x3f]; + *p++ = _base64[(buf >> 12) & 0x3f]; + *p++ = (pos == 0) ? _base64[(buf >> 6) & 0x3f] : '='; + *p++ = '='; + } + + return p - dst; +} + +/* + * pg_b64_decode + * + * Decode the given base64 string. Returns the length of the decoded + * string on success, and -1 in the event of an error. + */ +int +pg_b64_decode(const char *src, int len, char *dst) +{ + const char *srcend = src + len, + *s = src; + char *p = dst; + char c; + int b = 0; + uint32 buf = 0; + int pos = 0, + end = 0; + + while (s < srcend) + { + c = *s++; + + /* Leave if a whitespace is found */ + if (c == ' ' || c == '\t' || c == '\n' || c == '\r') + return -1; + + if (c == '=') + { + /* end sequence */ + if (!end) + { + if (pos == 2) + end = 1; + else if (pos == 3) + end = 2; + else + { + /* + * Unexpected "=" character found while decoding base64 + * sequence. + */ + return -1; + } + } + b = 0; + } + else + { + b = -1; + if (c > 0 && c < 127) + b = b64lookup[(unsigned char) c]; + if (b < 0) + { + /* invalid symbol found */ + return -1; + } + } + /* add it to buffer */ + buf = (buf << 6) + b; + pos++; + if (pos == 4) + { + *p++ = (buf >> 16) & 255; + if (end == 0 || end > 1) + *p++ = (buf >> 8) & 255; + if (end == 0 || end > 2) + *p++ = buf & 255; + buf = 0; + pos = 0; + } + } + + if (pos != 0) + { + /* + * base64 end sequence is invalid. Input data is missing padding, is + * truncated or is otherwise corrupted. + */ + return -1; + } + + return p - dst; +} + +/* + * pg_b64_enc_len + * + * Returns to caller the length of the string if it were encoded with + * base64 based on the length provided by caller. This is useful to + * estimate how large a buffer allocation needs to be done before doing + * the actual encoding. + */ +int +pg_b64_enc_len(int srclen) +{ + /* 3 bytes will be converted to 4 */ + return (srclen + 2) * 4 / 3; +} + +/* + * pg_b64_dec_len + * + * Returns to caller the length of the string if it were to be decoded + * with base64, based on the length given by caller. This is useful to + * estimate how large a buffer allocation needs to be done before doing + * the actual decoding. + */ +int +pg_b64_dec_len(int srclen) +{ + return (srclen * 3) >> 2; +} diff --git a/src/utils/pool_process_reporting.c b/src/utils/pool_process_reporting.c index b755c261..14201c96 100644 --- a/src/utils/pool_process_reporting.c +++ b/src/utils/pool_process_reporting.c @@ -213,6 +213,11 @@ POOL_REPORT_CONFIG* get_config(int *nrows) StrNCpy(status[i].desc, "maximum time in seconds to complete client authentication", POOLCONFIG_MAXNAMELEN); i++; + StrNCpy(status[i].name, "allow_clear_text_frontend_auth", POOLCONFIG_MAXNAMELEN); + snprintf(status[i].value, POOLCONFIG_MAXVALLEN, "%d", pool_config->allow_clear_text_frontend_auth); + StrNCpy(status[i].desc, "allow to use clear text password auth when pool_passwd does not contain password", POOLCONFIG_MAXDESCLEN); + i++; + /* - SSL Connections - */ StrNCpy(status[i].name, "ssl", POOLCONFIG_MAXNAMELEN); snprintf(status[i].value, POOLCONFIG_MAXVALLEN, "%d", pool_config->ssl); diff --git a/src/utils/pool_ssl.c b/src/utils/pool_ssl.c index 1b2de402..03cbf847 100644 --- a/src/utils/pool_ssl.c +++ b/src/utils/pool_ssl.c @@ -27,11 +27,25 @@ #include "config.h" #include "pool.h" #include "utils/elog.h" +#include "utils/palloc.h" +#include "utils/memutils.h" #include "utils/pool_stream.h" #include "pool_config.h" +#include +#include +#include + #ifdef USE_SSL +static SSL_CTX *SSL_frontend_context = NULL; +static bool SSL_initialized = false; +static bool ssl_passwd_cb_called = false; +static int ssl_passwd_cb(char *buf, int size, int rwflag, void *userdata); +static int verify_cb(int ok, X509_STORE_CTX *ctx); +static const char * SSLerrmessage(unsigned long ecode); +static void fetch_pool_ssl_cert(POOL_CONNECTION *cp); + #define SSL_RETURN_VOID_IF(cond, msg) \ do { \ if ( (cond) ) { \ @@ -62,7 +76,9 @@ static int init_ssl_ctx(POOL_CONNECTION *cp, enum ssl_conn_type conntype); /* OpenSSL error message */ static void perror_ssl(const char *context); -/* attempt to negotiate a secure connection */ +/* Attempt to negotiate a secure connection + * between pgpool-II and PostgreSQL backends + */ void pool_ssl_negotiate_clientserver(POOL_CONNECTION *cp) { int ssl_packet[2] = { htonl(sizeof(int)*2), htonl(NEGOTIATE_SSL_CODE) }; char server_response; @@ -112,21 +128,24 @@ void pool_ssl_negotiate_clientserver(POOL_CONNECTION *cp) { } -/* attempt to negotiate a secure connection */ +/* attempt to negotiate a secure connection + * between frontend and Pgpool-II + */ void pool_ssl_negotiate_serverclient(POOL_CONNECTION *cp) { cp->ssl_active = -1; - - if ( (!pool_config->ssl) || init_ssl_ctx(cp, ssl_conn_serverclient)) { - /* write back an "SSL reject" response before returning */ + if ( (!pool_config->ssl) || !SSL_frontend_context) { pool_write_and_flush(cp, "N", 1); } else { + cp->ssl = SSL_new(SSL_frontend_context); + /* write back an "SSL accept" response */ pool_write_and_flush(cp, "S", 1); SSL_set_fd(cp->ssl, cp->fd); SSL_RETURN_VOID_IF( (SSL_accept(cp->ssl) < 0), "SSL_accept"); cp->ssl_active = 1; + fetch_pool_ssl_cert(cp); } } @@ -267,6 +286,7 @@ static int init_ssl_ctx(POOL_CONNECTION *cp, enum ssl_conn_type conntype) { SSL_CTX_set_mode(cp->ssl_ctx, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); if ( conntype == ssl_conn_serverclient) { + /* between frontend and pgpool */ error = SSL_CTX_use_certificate_chain_file(cp->ssl_ctx, pool_config->ssl_cert); SSL_RETURN_ERROR_IF( (error != 1), "Loading SSL certificate"); @@ -276,6 +296,7 @@ static int init_ssl_ctx(POOL_CONNECTION *cp, enum ssl_conn_type conntype) { SSL_FILETYPE_PEM); SSL_RETURN_ERROR_IF( (error != 1), "Loading SSL private key"); } else { + /* between pgpool and backend */ /* set extra verification if ssl_ca_cert or ssl_ca_cert_dir are set */ if (strlen(pool_config->ssl_ca_cert)) cacert = pool_config->ssl_ca_cert; @@ -318,6 +339,31 @@ static void perror_ssl(const char *context) { } } +/* + * Obtain reason string for passed SSL errcode + * + * ERR_get_error() is used by caller to get errcode to pass here. + * + * Some caution is needed here since ERR_reason_error_string will + * return NULL if it doesn't recognize the error code. We don't + * want to return NULL ever. + */ +static const char * +SSLerrmessage(unsigned long ecode) +{ + const char *errreason; + static char errbuf[32]; + + if (ecode == 0) + return _("no SSL error reported"); + errreason = ERR_reason_error_string(ecode); + if (errreason != NULL) + return errreason; + snprintf(errbuf, sizeof(errbuf), _("SSL error code %lu"), ecode); + return errbuf; +} + + /* * Return true if SSL layer has any pending data in buffer */ @@ -328,6 +374,295 @@ bool pool_ssl_pending(POOL_CONNECTION *cp) return false; } +static void fetch_pool_ssl_cert(POOL_CONNECTION *cp) +{ + int len; + X509 *peer = SSL_get_peer_certificate(cp->ssl); + cp->peer = peer; + if (peer) + { + ereport(DEBUG1, + (errmsg("got the SSL certificate"))); + len = X509_NAME_get_text_by_NID(X509_get_subject_name(peer),NID_commonName, NULL, 0); + if (len != -1) + { + char *peer_cn; + peer_cn = palloc(len + 1); + int r = X509_NAME_get_text_by_NID(X509_get_subject_name(peer), NID_commonName, peer_cn, len + 1); + peer_cn[len] = '\0'; + if (r != len) + { + /* shouldn't happen */ + pfree(peer_cn); + return; + } + cp->client_cert_loaded = true; + cp->cert_cn = MemoryContextStrdup(TopMemoryContext,peer_cn); + pfree(peer_cn); + } + else + { + cp->client_cert_loaded = false; + } + } + else + { + cp->client_cert_loaded = false; + } +} + +/* + * Passphrase collection callback + * + * If OpenSSL is told to use a passphrase-protected server key, by default + * it will issue a prompt on /dev/tty and try to read a key from there. + * That's no good during a postmaster SIGHUP cycle, not to mention SSL context + * reload in an EXEC_BACKEND postmaster child. So override it with this dummy + * function that just returns an empty passphrase, guaranteeing failure. + */ +static int +ssl_passwd_cb(char *buf, int size, int rwflag, void *userdata) +{ + /* Set flag to change the error message we'll report */ + ssl_passwd_cb_called = true; + /* And return empty string */ + Assert(size > 0); + buf[0] = '\0'; + return 0; +} +/* + * Certificate verification callback + * + * This callback allows us to log intermediate problems during + * verification, but for now we'll see if the final error message + * contains enough information. + * + * This callback also allows us to override the default acceptance + * criteria (e.g., accepting self-signed or expired certs), but + * for now we accept the default checks. + */ +static int +verify_cb(int ok, X509_STORE_CTX *ctx) +{ + return ok; +} + +/* + * Initialize global SSL context. + * + * If isServerStart is true, report any errors as FATAL (so we don't return). + * Otherwise, log errors at LOG level and return -1 to indicate trouble, + * preserving the old SSL state if any. Returns 0 if OK. + */ +int +SSL_ServerSide_init(void) +{ + STACK_OF(X509_NAME) *root_cert_list = NULL; + SSL_CTX *context; + struct stat buf; + + /* This stuff need be done only once. */ + if (!SSL_initialized) + { +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) + OPENSSL_init_ssl(0, NULL); +#else + SSL_library_init(); +#endif + SSL_load_error_strings(); + + SSL_initialized = true; + } + + /* + * We use SSLv23_method() because it can negotiate use of the highest + * mutually supported protocol version, while alternatives like + * TLSv1_2_method() permit only one specific version. Note that we don't + * actually allow SSL v2 or v3, only TLS protocols (see below). + */ +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) + context = SSL_CTX_new(TLS_method()); +#else + context = SSL_CTX_new(SSLv23_method()); +#endif + + if (!context) + { + ereport(WARNING, + (errmsg("could not create SSL context: %s", + SSLerrmessage(ERR_get_error())))); + goto error; + } + + /* + * Disable OpenSSL's moving-write-buffer sanity check, because it causes + * unnecessary failures in nonblocking send cases. + */ + SSL_CTX_set_mode(context, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); + + /* + * prompt for password for passphrase-protected files + */ + SSL_CTX_set_default_passwd_cb(context, ssl_passwd_cb); + + /* + * Load and verify server's certificate and private key + */ + if (SSL_CTX_use_certificate_chain_file(context, pool_config->ssl_cert) != 1) + { + ereport(WARNING, + (errmsg("could not load server certificate file \"%s\": %s", + pool_config->ssl_cert, SSLerrmessage(ERR_get_error())))); + goto error; + } + + if (stat(pool_config->ssl_key, &buf) != 0) + { + ereport(WARNING, + (errmsg("could not access private key file \"%s\": %m", + pool_config->ssl_key))); + goto error; + } + + if (!S_ISREG(buf.st_mode)) + { + ereport(WARNING, + (errmsg("private key file \"%s\" is not a regular file", + pool_config->ssl_key))); + goto error; + } + + /* + * Refuse to load key files owned by users other than us or root. + * + * XXX surely we can check this on Windows somehow, too. + */ +#if !defined(WIN32) && !defined(__CYGWIN__) + if (buf.st_uid != geteuid() && buf.st_uid != 0) + { + ereport(WARNING, + (errmsg("private key file \"%s\" must be owned by the Pgpool-II user or root", + pool_config->ssl_key))); + goto error; + } +#endif + + /* + * Require no public access to key file. If the file is owned by us, + * require mode 0600 or less. If owned by root, require 0640 or less to + * allow read access through our gid, or a supplementary gid that allows + * to read system-wide certificates. + * + * XXX temporarily suppress check when on Windows, because there may not + * be proper support for Unix-y file permissions. Need to think of a + * reasonable check to apply on Windows. (See also the data directory + * permission check in postmaster.c) + */ +#if !defined(WIN32) && !defined(__CYGWIN__) + if ((buf.st_uid == geteuid() && buf.st_mode & (S_IRWXG | S_IRWXO)) || + (buf.st_uid == 0 && buf.st_mode & (S_IWGRP | S_IXGRP | S_IRWXO))) + { + ereport(WARNING, + (errmsg("private key file \"%s\" has group or world access", + pool_config->ssl_key), + errdetail("File must have permissions u=rw (0600) or less if owned by the Pgpool-II user, or permissions u=rw,g=r (0640) or less if owned by root."))); + goto error; + } +#endif + + /* + * OK, try to load the private key file. + */ + ssl_passwd_cb_called = false; + + if (SSL_CTX_use_PrivateKey_file(context, + pool_config->ssl_key, + SSL_FILETYPE_PEM) != 1) + { + if (ssl_passwd_cb_called) + ereport(WARNING, + (errmsg("private key file \"%s\" cannot be reloaded because it requires a passphrase", + pool_config->ssl_key))); + else + ereport(WARNING, + (errmsg("could not load private key file \"%s\": %s", + pool_config->ssl_key, SSLerrmessage(ERR_get_error())))); + goto error; + } + + if (SSL_CTX_check_private_key(context) != 1) + { + ereport(WARNING, + (errmsg("check of private key failed: %s", + SSLerrmessage(ERR_get_error())))); + goto error; + } + + /* disallow SSL v2/v3 */ + SSL_CTX_set_options(context, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); + + /* disallow SSL session tickets */ +#ifdef SSL_OP_NO_TICKET /* added in openssl 0.9.8f */ + SSL_CTX_set_options(context, SSL_OP_NO_TICKET); +#endif + + /* disallow SSL session caching, too */ + SSL_CTX_set_session_cache_mode(context, SSL_SESS_CACHE_OFF); + + /* + * Load CA store, so we can verify client certificates if needed. + */ + if (pool_config->ssl_ca_cert) + { + char *cacert = NULL, *cacert_dir = NULL; + + if (strlen(pool_config->ssl_ca_cert)) + cacert = pool_config->ssl_ca_cert; + if (strlen(pool_config->ssl_ca_cert_dir)) + cacert_dir = pool_config->ssl_ca_cert_dir; + + if (SSL_CTX_load_verify_locations(context, cacert, cacert_dir) != 1 || + (root_cert_list = SSL_load_client_CA_file(cacert)) == NULL) + { + ereport(WARNING, + (errmsg("could not load root certificate file \"%s\": %s", + pool_config->ssl_ca_cert, SSLerrmessage(ERR_get_error())))); + goto error; + } + /* + * Always ask for SSL client cert, but don't fail if it's not + * presented. We might fail such connections later, depending on what + * we find in pg_hba.conf. + */ + SSL_CTX_set_verify(context, + (SSL_VERIFY_PEER | + SSL_VERIFY_CLIENT_ONCE), + verify_cb); + + /* + * Tell OpenSSL to send the list of root certs we trust to clients in + * CertificateRequests. This lets a client with a keystore select the + * appropriate client certificate to send to us. + */ + SSL_CTX_set_client_CA_list(context, root_cert_list); + } + + /* + * Success! Replace any existing SSL_context. + */ + if (SSL_frontend_context) + SSL_CTX_free(SSL_frontend_context); + + SSL_frontend_context = context; + + return 0; + +error: + if (context) + SSL_CTX_free(context); + return -1; +} + #else /* USE_SSL: wrap / no-op ssl functionality if it's not available */ void pool_ssl_negotiate_serverclient(POOL_CONNECTION *cp) { @@ -363,6 +698,11 @@ int pool_ssl_write(POOL_CONNECTION *cp, const void *buf, int size) { return -1; /* never reached */ } +int SSL_ServerSide_init(void) +{ + return 0; +} + bool pool_ssl_pending(POOL_CONNECTION *cp) { return false; diff --git a/src/utils/scram-common.c b/src/utils/scram-common.c new file mode 100644 index 00000000..0b59e11c --- /dev/null +++ b/src/utils/scram-common.c @@ -0,0 +1,238 @@ +/*------------------------------------------------------------------------- + * scram-common.c + * Shared frontend/backend code for SCRAM authentication + * + * This contains the common low-level functions needed in both frontend and + * backend, for implement the Salted Challenge Response Authentication + * Mechanism (SCRAM), per IETF's RFC 5802. + * + * Portions Copyright (c) 2017, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/common/scram-common.c + * + *------------------------------------------------------------------------- + */ + +/* for htonl */ +#include +#include +#include +#include "utils/elog.h" +#include "utils/palloc.h" +#include "utils/base64.h" +#include "auth/scram-common.h" + +#define HMAC_IPAD 0x36 +#define HMAC_OPAD 0x5C + +/* + * Calculate HMAC per RFC2104. + * + * The hash function used is SHA-256. + */ +void +scram_HMAC_init(scram_HMAC_ctx *ctx, const uint8 *key, int keylen) +{ + uint8 k_ipad[SHA256_HMAC_B]; + int i; + uint8 keybuf[SCRAM_KEY_LEN]; + + /* + * If the key is longer than the block size (64 bytes for SHA-256), pass + * it through SHA-256 once to shrink it down. + */ + if (keylen > SHA256_HMAC_B) + { + pg_sha256_ctx sha256_ctx; + + pg_sha256_init(&sha256_ctx); + pg_sha256_update(&sha256_ctx, key, keylen); + pg_sha256_final(&sha256_ctx, keybuf); + key = keybuf; + keylen = SCRAM_KEY_LEN; + } + + memset(k_ipad, HMAC_IPAD, SHA256_HMAC_B); + memset(ctx->k_opad, HMAC_OPAD, SHA256_HMAC_B); + + for (i = 0; i < keylen; i++) + { + k_ipad[i] ^= key[i]; + ctx->k_opad[i] ^= key[i]; + } + + /* tmp = H(K XOR ipad, text) */ + pg_sha256_init(&ctx->sha256ctx); + pg_sha256_update(&ctx->sha256ctx, k_ipad, SHA256_HMAC_B); +} + +/* + * Update HMAC calculation + * The hash function used is SHA-256. + */ +void +scram_HMAC_update(scram_HMAC_ctx *ctx, const char *str, int slen) +{ + pg_sha256_update(&ctx->sha256ctx, (const uint8 *) str, slen); +} + +/* + * Finalize HMAC calculation. + * The hash function used is SHA-256. + */ +void +scram_HMAC_final(uint8 *result, scram_HMAC_ctx *ctx) +{ + uint8 h[SCRAM_KEY_LEN]; + + pg_sha256_final(&ctx->sha256ctx, h); + + /* H(K XOR opad, tmp) */ + pg_sha256_init(&ctx->sha256ctx); + pg_sha256_update(&ctx->sha256ctx, ctx->k_opad, SHA256_HMAC_B); + pg_sha256_update(&ctx->sha256ctx, h, SCRAM_KEY_LEN); + pg_sha256_final(&ctx->sha256ctx, result); +} + +/* + * Calculate SaltedPassword. + * + * The password should already be normalized by SASLprep. + */ +void +scram_SaltedPassword(const char *password, + const char *salt, int saltlen, int iterations, + uint8 *result) +{ + int password_len = strlen(password); + uint32 one = htonl(1); + int i, + j; + uint8 Ui[SCRAM_KEY_LEN]; + uint8 Ui_prev[SCRAM_KEY_LEN]; + scram_HMAC_ctx hmac_ctx; + + /* + * Iterate hash calculation of HMAC entry using given salt. This is + * essentially PBKDF2 (see RFC2898) with HMAC() as the pseudorandom + * function. + */ + + /* First iteration */ + scram_HMAC_init(&hmac_ctx, (uint8 *) password, password_len); + scram_HMAC_update(&hmac_ctx, salt, saltlen); + scram_HMAC_update(&hmac_ctx, (char *) &one, sizeof(uint32)); + scram_HMAC_final(Ui_prev, &hmac_ctx); + memcpy(result, Ui_prev, SCRAM_KEY_LEN); + + /* Subsequent iterations */ + for (i = 2; i <= iterations; i++) + { + scram_HMAC_init(&hmac_ctx, (uint8 *) password, password_len); + scram_HMAC_update(&hmac_ctx, (const char *) Ui_prev, SCRAM_KEY_LEN); + scram_HMAC_final(Ui, &hmac_ctx); + for (j = 0; j < SCRAM_KEY_LEN; j++) + result[j] ^= Ui[j]; + memcpy(Ui_prev, Ui, SCRAM_KEY_LEN); + } +} + + +/* + * Calculate SHA-256 hash for a NULL-terminated string. (The NULL terminator is + * not included in the hash). + */ +void +scram_H(const uint8 *input, int len, uint8 *result) +{ + pg_sha256_ctx ctx; + + pg_sha256_init(&ctx); + pg_sha256_update(&ctx, input, len); + pg_sha256_final(&ctx, result); +} + +/* + * Calculate ClientKey. + */ +void +scram_ClientKey(const uint8 *salted_password, uint8 *result) +{ + scram_HMAC_ctx ctx; + + scram_HMAC_init(&ctx, salted_password, SCRAM_KEY_LEN); + scram_HMAC_update(&ctx, "Client Key", strlen("Client Key")); + scram_HMAC_final(result, &ctx); +} + +/* + * Calculate ServerKey. + */ +void +scram_ServerKey(const uint8 *salted_password, uint8 *result) +{ + scram_HMAC_ctx ctx; + + scram_HMAC_init(&ctx, salted_password, SCRAM_KEY_LEN); + scram_HMAC_update(&ctx, "Server Key", strlen("Server Key")); + scram_HMAC_final(result, &ctx); +} + + +/* + * Construct a verifier string for SCRAM, stored in pg_authid.rolpassword. + * + * The password should already have been processed with SASLprep, if necessary! + * + * If iterations is 0, default number of iterations is used. The result is + * palloc'd or malloc'd, so caller is responsible for freeing it. + */ +char * +scram_build_verifier(const char *salt, int saltlen, int iterations, + const char *password) +{ + uint8 salted_password[SCRAM_KEY_LEN]; + uint8 stored_key[SCRAM_KEY_LEN]; + uint8 server_key[SCRAM_KEY_LEN]; + char *result; + char *p; + int maxlen; + + if (iterations <= 0) + iterations = SCRAM_DEFAULT_ITERATIONS; + + /* Calculate StoredKey and ServerKey */ + scram_SaltedPassword(password, salt, saltlen, iterations, + salted_password); + scram_ClientKey(salted_password, stored_key); + scram_H(stored_key, SCRAM_KEY_LEN, stored_key); + + scram_ServerKey(salted_password, server_key); + + /*---------- + * The format is: + * SCRAM-SHA-256$:$: + *---------- + */ + maxlen = strlen("SCRAM-SHA-256") + 1 + + 10 + 1 /* iteration count */ + + pg_b64_enc_len(saltlen) + 1 /* Base64-encoded salt */ + + pg_b64_enc_len(SCRAM_KEY_LEN) + 1 /* Base64-encoded StoredKey */ + + pg_b64_enc_len(SCRAM_KEY_LEN) + 1; /* Base64-encoded ServerKey */ + + result = palloc(maxlen); + + p = result + sprintf(result, "SCRAM-SHA-256$%d:", iterations); + + p += pg_b64_encode(salt, saltlen, p); + *(p++) = '$'; + p += pg_b64_encode((char *) stored_key, SCRAM_KEY_LEN, p); + *(p++) = ':'; + p += pg_b64_encode((char *) server_key, SCRAM_KEY_LEN, p); + *(p++) = '\0'; + + Assert(p - result <= maxlen); + + return result; +} diff --git a/src/utils/sha2.c b/src/utils/sha2.c new file mode 100644 index 00000000..e2f7296e --- /dev/null +++ b/src/utils/sha2.c @@ -0,0 +1,999 @@ +/*------------------------------------------------------------------------- + * + * sha2.c + * Set of SHA functions for SHA-224, SHA-256, SHA-384 and SHA-512. + * + * This is the set of in-core functions used when there are no other + * alternative options like OpenSSL. + * + * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/common/sha2.c + * + *------------------------------------------------------------------------- + */ + +/* $OpenBSD: sha2.c,v 1.6 2004/05/03 02:57:36 millert Exp $ */ +/* + * FILE: sha2.c + * AUTHOR: Aaron D. Gifford + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $From: sha2.c,v 1.1 2001/11/08 00:01:51 adg Exp adg $ + */ + +#include +#include +#include "utils/sha2.h" + +/* + * UNROLLED TRANSFORM LOOP NOTE: + * You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform + * loop version for the hash transform rounds (defined using macros + * later in this file). Either define on the command line, for example: + * + * cc -DSHA2_UNROLL_TRANSFORM -o sha2 sha2.c sha2prog.c + * + * or define below: + * + * #define SHA2_UNROLL_TRANSFORM + * + */ + +/*** SHA-256/384/512 Various Length Definitions ***********************/ +#define PG_SHA256_SHORT_BLOCK_LENGTH (PG_SHA256_BLOCK_LENGTH - 8) +#define PG_SHA384_SHORT_BLOCK_LENGTH (PG_SHA384_BLOCK_LENGTH - 16) +#define PG_SHA512_SHORT_BLOCK_LENGTH (PG_SHA512_BLOCK_LENGTH - 16) + +/*** ENDIAN REVERSAL MACROS *******************************************/ +#ifndef WORDS_BIGENDIAN +#define REVERSE32(w,x) { \ + uint32 tmp = (w); \ + tmp = (tmp >> 16) | (tmp << 16); \ + (x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \ +} +#define REVERSE64(w,x) { \ + uint64 tmp = (w); \ + tmp = (tmp >> 32) | (tmp << 32); \ + tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | \ + ((tmp & 0x00ff00ff00ff00ffULL) << 8); \ + (x) = ((tmp & 0xffff0000ffff0000ULL) >> 16) | \ + ((tmp & 0x0000ffff0000ffffULL) << 16); \ +} +#endif /* not bigendian */ + +/* + * Macro for incrementally adding the unsigned 64-bit integer n to the + * unsigned 128-bit integer (represented using a two-element array of + * 64-bit words): + */ +#define ADDINC128(w,n) { \ + (w)[0] += (uint64)(n); \ + if ((w)[0] < (n)) { \ + (w)[1]++; \ + } \ +} + +/*** THE SIX LOGICAL FUNCTIONS ****************************************/ +/* + * Bit shifting and rotation (used by the six SHA-XYZ logical functions: + * + * NOTE: The naming of R and S appears backwards here (R is a SHIFT and + * S is a ROTATION) because the SHA-256/384/512 description document + * (see http://www.iwar.org.uk/comsec/resources/cipher/sha256-384-512.pdf) + * uses this same "backwards" definition. + */ +/* Shift-right (used in SHA-256, SHA-384, and SHA-512): */ +#define R(b,x) ((x) >> (b)) +/* 32-bit Rotate-right (used in SHA-256): */ +#define S32(b,x) (((x) >> (b)) | ((x) << (32 - (b)))) +/* 64-bit Rotate-right (used in SHA-384 and SHA-512): */ +#define S64(b,x) (((x) >> (b)) | ((x) << (64 - (b)))) + +/* Two of six logical functions used in SHA-256, SHA-384, and SHA-512: */ +#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) +#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) + +/* Four of six logical functions used in SHA-256: */ +#define Sigma0_256(x) (S32(2, (x)) ^ S32(13, (x)) ^ S32(22, (x))) +#define Sigma1_256(x) (S32(6, (x)) ^ S32(11, (x)) ^ S32(25, (x))) +#define sigma0_256(x) (S32(7, (x)) ^ S32(18, (x)) ^ R(3 , (x))) +#define sigma1_256(x) (S32(17, (x)) ^ S32(19, (x)) ^ R(10, (x))) + +/* Four of six logical functions used in SHA-384 and SHA-512: */ +#define Sigma0_512(x) (S64(28, (x)) ^ S64(34, (x)) ^ S64(39, (x))) +#define Sigma1_512(x) (S64(14, (x)) ^ S64(18, (x)) ^ S64(41, (x))) +#define sigma0_512(x) (S64( 1, (x)) ^ S64( 8, (x)) ^ R( 7, (x))) +#define sigma1_512(x) (S64(19, (x)) ^ S64(61, (x)) ^ R( 6, (x))) + +/*** INTERNAL FUNCTION PROTOTYPES *************************************/ +/* NOTE: These should not be accessed directly from outside this + * library -- they are intended for private internal visibility/use + * only. + */ +static void SHA512_Last(pg_sha512_ctx *context); +static void SHA256_Transform(pg_sha256_ctx *context, const uint8 *data); +static void SHA512_Transform(pg_sha512_ctx *context, const uint8 *data); + +/*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/ +/* Hash constant words K for SHA-256: */ +static const uint32 K256[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, + 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, + 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL, + 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL, + 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, + 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, + 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL, + 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL, + 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, + 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, + 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL, + 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL, + 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL +}; + +/* Initial hash value H for SHA-224: */ +static const uint32 sha224_initial_hash_value[8] = { + 0xc1059ed8UL, + 0x367cd507UL, + 0x3070dd17UL, + 0xf70e5939UL, + 0xffc00b31UL, + 0x68581511UL, + 0x64f98fa7UL, + 0xbefa4fa4UL +}; + +/* Initial hash value H for SHA-256: */ +static const uint32 sha256_initial_hash_value[8] = { + 0x6a09e667UL, + 0xbb67ae85UL, + 0x3c6ef372UL, + 0xa54ff53aUL, + 0x510e527fUL, + 0x9b05688cUL, + 0x1f83d9abUL, + 0x5be0cd19UL +}; + +/* Hash constant words K for SHA-384 and SHA-512: */ +static const uint64 K512[80] = { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + +/* Initial hash value H for SHA-384 */ +static const uint64 sha384_initial_hash_value[8] = { + 0xcbbb9d5dc1059ed8ULL, + 0x629a292a367cd507ULL, + 0x9159015a3070dd17ULL, + 0x152fecd8f70e5939ULL, + 0x67332667ffc00b31ULL, + 0x8eb44a8768581511ULL, + 0xdb0c2e0d64f98fa7ULL, + 0x47b5481dbefa4fa4ULL +}; + +/* Initial hash value H for SHA-512 */ +static const uint64 sha512_initial_hash_value[8] = { + 0x6a09e667f3bcc908ULL, + 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, + 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, + 0x5be0cd19137e2179ULL +}; + + +/*** SHA-256: *********************************************************/ +void +pg_sha256_init(pg_sha256_ctx *context) +{ + if (context == NULL) + return; + memcpy(context->state, sha256_initial_hash_value, PG_SHA256_DIGEST_LENGTH); + memset(context->buffer, 0, PG_SHA256_BLOCK_LENGTH); + context->bitcount = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-256 round macros: */ + +#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) do { \ + W256[j] = (uint32)data[3] | ((uint32)data[2] << 8) | \ + ((uint32)data[1] << 16) | ((uint32)data[0] << 24); \ + data += 4; \ + T1 = (h) + Sigma1_256((e)) + Ch((e), (f), (g)) + K256[j] + W256[j]; \ + (d) += T1; \ + (h) = T1 + Sigma0_256((a)) + Maj((a), (b), (c)); \ + j++; \ +} while(0) + +#define ROUND256(a,b,c,d,e,f,g,h) do { \ + s0 = W256[(j+1)&0x0f]; \ + s0 = sigma0_256(s0); \ + s1 = W256[(j+14)&0x0f]; \ + s1 = sigma1_256(s1); \ + T1 = (h) + Sigma1_256((e)) + Ch((e), (f), (g)) + K256[j] + \ + (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_256((a)) + Maj((a), (b), (c)); \ + j++; \ +} while(0) + +static void +SHA256_Transform(pg_sha256_ctx *context, const uint8 *data) +{ + uint32 a, + b, + c, + d, + e, + f, + g, + h, + s0, + s1; + uint32 T1, + *W256; + int j; + + W256 = (uint32 *) context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do + { + /* Rounds 0 to 15 (unrolled): */ + ROUND256_0_TO_15(a, b, c, d, e, f, g, h); + ROUND256_0_TO_15(h, a, b, c, d, e, f, g); + ROUND256_0_TO_15(g, h, a, b, c, d, e, f); + ROUND256_0_TO_15(f, g, h, a, b, c, d, e); + ROUND256_0_TO_15(e, f, g, h, a, b, c, d); + ROUND256_0_TO_15(d, e, f, g, h, a, b, c); + ROUND256_0_TO_15(c, d, e, f, g, h, a, b); + ROUND256_0_TO_15(b, c, d, e, f, g, h, a); + } while (j < 16); + + /* Now for the remaining rounds to 64: */ + do + { + ROUND256(a, b, c, d, e, f, g, h); + ROUND256(h, a, b, c, d, e, f, g); + ROUND256(g, h, a, b, c, d, e, f); + ROUND256(f, g, h, a, b, c, d, e); + ROUND256(e, f, g, h, a, b, c, d); + ROUND256(d, e, f, g, h, a, b, c); + ROUND256(c, d, e, f, g, h, a, b); + ROUND256(b, c, d, e, f, g, h, a); + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} +#else /* SHA2_UNROLL_TRANSFORM */ + +static void +SHA256_Transform(pg_sha256_ctx *context, const uint8 *data) +{ + uint32 a, + b, + c, + d, + e, + f, + g, + h, + s0, + s1; + uint32 T1, + T2, + *W256; + int j; + + W256 = (uint32 *) context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do + { + W256[j] = (uint32) data[3] | ((uint32) data[2] << 8) | + ((uint32) data[1] << 16) | ((uint32) data[0] << 24); + data += 4; + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j]; + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do + { + /* Part of the message block expansion: */ + s0 = W256[(j + 1) & 0x0f]; + s0 = sigma0_256(s0); + s1 = W256[(j + 14) & 0x0f]; + s1 = sigma1_256(s1); + + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + + (W256[j & 0x0f] += s1 + W256[(j + 9) & 0x0f] + s0); + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} +#endif /* SHA2_UNROLL_TRANSFORM */ + +void +pg_sha256_update(pg_sha256_ctx *context, const uint8 *data, size_t len) +{ + size_t freespace, + usedspace; + + /* Calling with no data is valid (we do nothing) */ + if (len == 0) + return; + + usedspace = (context->bitcount >> 3) % PG_SHA256_BLOCK_LENGTH; + if (usedspace > 0) + { + /* Calculate how much free space is available in the buffer */ + freespace = PG_SHA256_BLOCK_LENGTH - usedspace; + + if (len >= freespace) + { + /* Fill the buffer completely and process it */ + memcpy(&context->buffer[usedspace], data, freespace); + context->bitcount += freespace << 3; + len -= freespace; + data += freespace; + SHA256_Transform(context, context->buffer); + } + else + { + /* The buffer is not yet full */ + memcpy(&context->buffer[usedspace], data, len); + context->bitcount += len << 3; + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= PG_SHA256_BLOCK_LENGTH) + { + /* Process as many complete blocks as we can */ + SHA256_Transform(context, data); + context->bitcount += PG_SHA256_BLOCK_LENGTH << 3; + len -= PG_SHA256_BLOCK_LENGTH; + data += PG_SHA256_BLOCK_LENGTH; + } + if (len > 0) + { + /* There's left-overs, so save 'em */ + memcpy(context->buffer, data, len); + context->bitcount += len << 3; + } + /* Clean up: */ + usedspace = freespace = 0; +} + +static void +SHA256_Last(pg_sha256_ctx *context) +{ + unsigned int usedspace; + + usedspace = (context->bitcount >> 3) % PG_SHA256_BLOCK_LENGTH; +#ifndef WORDS_BIGENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount, context->bitcount); +#endif + if (usedspace > 0) + { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= PG_SHA256_SHORT_BLOCK_LENGTH) + { + /* Set-up for the last transform: */ + memset(&context->buffer[usedspace], 0, PG_SHA256_SHORT_BLOCK_LENGTH - usedspace); + } + else + { + if (usedspace < PG_SHA256_BLOCK_LENGTH) + { + memset(&context->buffer[usedspace], 0, PG_SHA256_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA256_Transform(context, context->buffer); + + /* And set-up for the last transform: */ + memset(context->buffer, 0, PG_SHA256_SHORT_BLOCK_LENGTH); + } + } + else + { + /* Set-up for the last transform: */ + memset(context->buffer, 0, PG_SHA256_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Set the bit count: */ + *(uint64 *) &context->buffer[PG_SHA256_SHORT_BLOCK_LENGTH] = context->bitcount; + + /* Final transform: */ + SHA256_Transform(context, context->buffer); +} + +void +pg_sha256_final(pg_sha256_ctx *context, uint8 *digest) +{ + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != NULL) + { + SHA256_Last(context); + +#ifndef WORDS_BIGENDIAN + { + /* Convert TO host byte order */ + int j; + + for (j = 0; j < 8; j++) + { + REVERSE32(context->state[j], context->state[j]); + } + } +#endif + memcpy(digest, context->state, PG_SHA256_DIGEST_LENGTH); + } + + /* Clean up state data: */ + memset(context, 0, sizeof(pg_sha256_ctx)); +} + + +/*** SHA-512: *********************************************************/ +void +pg_sha512_init(pg_sha512_ctx *context) +{ + if (context == NULL) + return; + memcpy(context->state, sha512_initial_hash_value, PG_SHA512_DIGEST_LENGTH); + memset(context->buffer, 0, PG_SHA512_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-512 round macros: */ + +#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) do { \ + W512[j] = (uint64)data[7] | ((uint64)data[6] << 8) | \ + ((uint64)data[5] << 16) | ((uint64)data[4] << 24) | \ + ((uint64)data[3] << 32) | ((uint64)data[2] << 40) | \ + ((uint64)data[1] << 48) | ((uint64)data[0] << 56); \ + data += 8; \ + T1 = (h) + Sigma1_512((e)) + Ch((e), (f), (g)) + K512[j] + W512[j]; \ + (d) += T1; \ + (h) = T1 + Sigma0_512((a)) + Maj((a), (b), (c)); \ + j++; \ +} while(0) + + +#define ROUND512(a,b,c,d,e,f,g,h) do { \ + s0 = W512[(j+1)&0x0f]; \ + s0 = sigma0_512(s0); \ + s1 = W512[(j+14)&0x0f]; \ + s1 = sigma1_512(s1); \ + T1 = (h) + Sigma1_512((e)) + Ch((e), (f), (g)) + K512[j] + \ + (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_512((a)) + Maj((a), (b), (c)); \ + j++; \ +} while(0) + +static void +SHA512_Transform(pg_sha512_ctx *context, const uint8 *data) +{ + uint64 a, + b, + c, + d, + e, + f, + g, + h, + s0, + s1; + uint64 T1, + *W512 = (uint64 *) context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do + { + ROUND512_0_TO_15(a, b, c, d, e, f, g, h); + ROUND512_0_TO_15(h, a, b, c, d, e, f, g); + ROUND512_0_TO_15(g, h, a, b, c, d, e, f); + ROUND512_0_TO_15(f, g, h, a, b, c, d, e); + ROUND512_0_TO_15(e, f, g, h, a, b, c, d); + ROUND512_0_TO_15(d, e, f, g, h, a, b, c); + ROUND512_0_TO_15(c, d, e, f, g, h, a, b); + ROUND512_0_TO_15(b, c, d, e, f, g, h, a); + } while (j < 16); + + /* Now for the remaining rounds up to 79: */ + do + { + ROUND512(a, b, c, d, e, f, g, h); + ROUND512(h, a, b, c, d, e, f, g); + ROUND512(g, h, a, b, c, d, e, f); + ROUND512(f, g, h, a, b, c, d, e); + ROUND512(e, f, g, h, a, b, c, d); + ROUND512(d, e, f, g, h, a, b, c); + ROUND512(c, d, e, f, g, h, a, b); + ROUND512(b, c, d, e, f, g, h, a); + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} +#else /* SHA2_UNROLL_TRANSFORM */ + +static void +SHA512_Transform(pg_sha512_ctx *context, const uint8 *data) +{ + uint64 a, + b, + c, + d, + e, + f, + g, + h, + s0, + s1; + uint64 T1, + T2, + *W512 = (uint64 *) context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do + { + W512[j] = (uint64) data[7] | ((uint64) data[6] << 8) | + ((uint64) data[5] << 16) | ((uint64) data[4] << 24) | + ((uint64) data[3] << 32) | ((uint64) data[2] << 40) | + ((uint64) data[1] << 48) | ((uint64) data[0] << 56); + data += 8; + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + W512[j]; + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do + { + /* Part of the message block expansion: */ + s0 = W512[(j + 1) & 0x0f]; + s0 = sigma0_512(s0); + s1 = W512[(j + 14) & 0x0f]; + s1 = sigma1_512(s1); + + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + + (W512[j & 0x0f] += s1 + W512[(j + 9) & 0x0f] + s0); + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} +#endif /* SHA2_UNROLL_TRANSFORM */ + +void +pg_sha512_update(pg_sha512_ctx *context, const uint8 *data, size_t len) +{ + size_t freespace, + usedspace; + + /* Calling with no data is valid (we do nothing) */ + if (len == 0) + return; + + usedspace = (context->bitcount[0] >> 3) % PG_SHA512_BLOCK_LENGTH; + if (usedspace > 0) + { + /* Calculate how much free space is available in the buffer */ + freespace = PG_SHA512_BLOCK_LENGTH - usedspace; + + if (len >= freespace) + { + /* Fill the buffer completely and process it */ + memcpy(&context->buffer[usedspace], data, freespace); + ADDINC128(context->bitcount, freespace << 3); + len -= freespace; + data += freespace; + SHA512_Transform(context, context->buffer); + } + else + { + /* The buffer is not yet full */ + memcpy(&context->buffer[usedspace], data, len); + ADDINC128(context->bitcount, len << 3); + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= PG_SHA512_BLOCK_LENGTH) + { + /* Process as many complete blocks as we can */ + SHA512_Transform(context, data); + ADDINC128(context->bitcount, PG_SHA512_BLOCK_LENGTH << 3); + len -= PG_SHA512_BLOCK_LENGTH; + data += PG_SHA512_BLOCK_LENGTH; + } + if (len > 0) + { + /* There's left-overs, so save 'em */ + memcpy(context->buffer, data, len); + ADDINC128(context->bitcount, len << 3); + } + /* Clean up: */ + usedspace = freespace = 0; +} + +static void +SHA512_Last(pg_sha512_ctx *context) +{ + unsigned int usedspace; + + usedspace = (context->bitcount[0] >> 3) % PG_SHA512_BLOCK_LENGTH; +#ifndef WORDS_BIGENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount[0], context->bitcount[0]); + REVERSE64(context->bitcount[1], context->bitcount[1]); +#endif + if (usedspace > 0) + { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= PG_SHA512_SHORT_BLOCK_LENGTH) + { + /* Set-up for the last transform: */ + memset(&context->buffer[usedspace], 0, PG_SHA512_SHORT_BLOCK_LENGTH - usedspace); + } + else + { + if (usedspace < PG_SHA512_BLOCK_LENGTH) + { + memset(&context->buffer[usedspace], 0, PG_SHA512_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA512_Transform(context, context->buffer); + + /* And set-up for the last transform: */ + memset(context->buffer, 0, PG_SHA512_BLOCK_LENGTH - 2); + } + } + else + { + /* Prepare for final transform: */ + memset(context->buffer, 0, PG_SHA512_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Store the length of input data (in bits): */ + *(uint64 *) &context->buffer[PG_SHA512_SHORT_BLOCK_LENGTH] = context->bitcount[1]; + *(uint64 *) &context->buffer[PG_SHA512_SHORT_BLOCK_LENGTH + 8] = context->bitcount[0]; + + /* Final transform: */ + SHA512_Transform(context, context->buffer); +} + +void +pg_sha512_final(pg_sha512_ctx *context, uint8 *digest) +{ + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != NULL) + { + SHA512_Last(context); + + /* Save the hash data for output: */ +#ifndef WORDS_BIGENDIAN + { + /* Convert TO host byte order */ + int j; + + for (j = 0; j < 8; j++) + { + REVERSE64(context->state[j], context->state[j]); + } + } +#endif + memcpy(digest, context->state, PG_SHA512_DIGEST_LENGTH); + } + + /* Zero out state data */ + memset(context, 0, sizeof(pg_sha512_ctx)); +} + + +/*** SHA-384: *********************************************************/ +void +pg_sha384_init(pg_sha384_ctx *context) +{ + if (context == NULL) + return; + memcpy(context->state, sha384_initial_hash_value, PG_SHA512_DIGEST_LENGTH); + memset(context->buffer, 0, PG_SHA384_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +void +pg_sha384_update(pg_sha384_ctx *context, const uint8 *data, size_t len) +{ + pg_sha512_update((pg_sha512_ctx *) context, data, len); +} + +void +pg_sha384_final(pg_sha384_ctx *context, uint8 *digest) +{ + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != NULL) + { + SHA512_Last((pg_sha512_ctx *) context); + + /* Save the hash data for output: */ +#ifndef WORDS_BIGENDIAN + { + /* Convert TO host byte order */ + int j; + + for (j = 0; j < 6; j++) + { + REVERSE64(context->state[j], context->state[j]); + } + } +#endif + memcpy(digest, context->state, PG_SHA384_DIGEST_LENGTH); + } + + /* Zero out state data */ + memset(context, 0, sizeof(pg_sha384_ctx)); +} + +/*** SHA-224: *********************************************************/ +void +pg_sha224_init(pg_sha224_ctx *context) +{ + if (context == NULL) + return; + memcpy(context->state, sha224_initial_hash_value, PG_SHA256_DIGEST_LENGTH); + memset(context->buffer, 0, PG_SHA256_BLOCK_LENGTH); + context->bitcount = 0; +} + +void +pg_sha224_update(pg_sha224_ctx *context, const uint8 *data, size_t len) +{ + pg_sha256_update((pg_sha256_ctx *) context, data, len); +} + +void +pg_sha224_final(pg_sha224_ctx *context, uint8 *digest) +{ + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != NULL) + { + SHA256_Last(context); + +#ifndef WORDS_BIGENDIAN + { + /* Convert TO host byte order */ + int j; + + for (j = 0; j < 8; j++) + { + REVERSE32(context->state[j], context->state[j]); + } + } +#endif + memcpy(digest, context->state, PG_SHA224_DIGEST_LENGTH); + } + + /* Clean up state data: */ + memset(context, 0, sizeof(pg_sha224_ctx)); +} diff --git a/src/utils/ssl_utils.c b/src/utils/ssl_utils.c new file mode 100644 index 00000000..df356552 --- /dev/null +++ b/src/utils/ssl_utils.c @@ -0,0 +1,248 @@ +/* + * $Header$ + * + * Handles watchdog connection, and protocol communication with pgpool-II + * + * pgpool: a language independent connection pool server for PostgreSQL + * written by Tatsuo Ishii + * + * Copyright (c) 2003-2018 PgPool Global Development Group + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose and without fee is hereby + * granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of the + * author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. The author makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "pool.h" +#include "auth/md5.h" +#include "utils/elog.h" +#include "utils/palloc.h" +#include "utils/memutils.h" +#include "pool_config.h" +#include "utils/ssl_utils.h" + +#ifdef USE_SSL +static int aes_get_key(const char *password, unsigned char *key, unsigned char *iv); +static int aes_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key, + unsigned char *iv, unsigned char *ciphertext); + +static int aes_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *key, + unsigned char *iv, unsigned char *plaintext); +#endif + +#ifdef USE_SSL + +int aes_encrypt_with_password(unsigned char *plaintext, int plaintext_len, + const char *password, unsigned char *ciphertext) +{ + unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; + + /* First get the key and iv using the password */ + if (aes_get_key(password, key, iv) != 0) + return -1; + return aes_encrypt(plaintext, plaintext_len, key, iv, ciphertext); +} + +int aes_decrypt_with_password(unsigned char *ciphertext, int ciphertext_len, + const char *password, unsigned char *plaintext) +{ + unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; + + /* First get the key and iv using the password */ + if (aes_get_key(password, key, iv) != 0) + return -1; + return aes_decrypt(ciphertext, ciphertext_len, key, + iv, plaintext); +} + +/* + * key must be EVP_MAX_KEY_LENGTH length + * iv must be EVP_MAX_IV_LENGTH length + */ +static int aes_get_key(const char *password, unsigned char *key, unsigned char *iv) +{ + const unsigned char *salt = NULL; + + OpenSSL_add_all_algorithms(); + + if(!EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha1(), salt, + (unsigned char *) password, + strlen(password), 1, key, iv)) + { + ereport(ERROR, + (errmsg("unable to generate AES key from password"), + errdetail("EVP_BytesToKey failed"))); + return 1; + } + +#ifdef DEBUG_ENCRYPT + printf("Key: "); for(i=0; ikey_len; ++i) { printf("%02x", key[i]); } printf("\n"); + printf("IV: "); for(i=0; iiv_len; ++i) { printf("%02x", iv[i]); } printf("\n"); +#endif + return 0; +} + +/* + * from: https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption + */ +static int aes_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key, + unsigned char *iv, unsigned char *ciphertext) +{ + EVP_CIPHER_CTX *ctx = NULL; + int len; + int ciphertext_len; + + /* Create and initialise the context */ + if(!(ctx = EVP_CIPHER_CTX_new())) + goto encrypt_error; + /* Initialise the encryption operation. IMPORTANT - ensure you use a key + * and IV size appropriate for your cipher + * In this example we are using 256 bit AES (i.e. a 256 bit key). The + * IV size for *most* modes is the same as the block size. For AES this + * is 128 bits */ + if (EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv) != 1) + goto encrypt_error; + + /* Provide the message to be encrypted, and obtain the encrypted output. + * EVP_EncryptUpdate can be called multiple times if necessary + */ + if (EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len) != 1) + goto encrypt_error; + ciphertext_len = len; + + /* Finalise the encryption. Further ciphertext bytes may be written at + * this stage. + */ + if (EVP_EncryptFinal_ex(ctx, ciphertext + len, &len) != 1) + goto encrypt_error; + ciphertext_len += len; + + /* Clean up */ + EVP_CIPHER_CTX_free(ctx); + + return ciphertext_len; + +encrypt_error: + if (ctx) + EVP_CIPHER_CTX_free(ctx); + return -1; +} + +static int aes_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *key, + unsigned char *iv, unsigned char *plaintext) +{ + EVP_CIPHER_CTX *ctx = NULL; + int len; + int plaintext_len; + + /* Create and initialise the context */ + if(!(ctx = EVP_CIPHER_CTX_new())) + goto decrypt_error; + + /* Initialise the decryption operation. IMPORTANT - ensure you use a key + * and IV size appropriate for your cipher + * In this example we are using 256 bit AES (i.e. a 256 bit key). The + * IV size for *most* modes is the same as the block size. For AES this + * is 128 bits */ + if (EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv) != 1) + goto decrypt_error; + + /* Provide the message to be decrypted, and obtain the plaintext output. + * EVP_DecryptUpdate can be called multiple times if necessary + */ + if (EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len) != 1) + goto decrypt_error; + plaintext_len = len; + + /* Finalise the decryption. Further plaintext bytes may be written at + * this stage. + */ + if (EVP_DecryptFinal_ex(ctx, plaintext + len, &len) != 1) + goto decrypt_error; + plaintext_len += len; + + /* Clean up */ + EVP_CIPHER_CTX_free(ctx); + + return plaintext_len; + +decrypt_error: + if (ctx) + EVP_CIPHER_CTX_free(ctx); + return -1; +} + +/* HMAC SHA-256*/ +void calculate_hmac_sha256(const char *data, int len, char *buf) +{ + char* key = pool_config->wd_authkey; + char str[WD_AUTH_HASH_LEN/2]; + unsigned int res_len = WD_AUTH_HASH_LEN; + HMAC_CTX *ctx = NULL; + +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) + ctx = HMAC_CTX_new(); + HMAC_CTX_reset(ctx); +#else + HMAC_CTX ctx_obj; + ctx = &ctx_obj; + HMAC_CTX_init(ctx); +#endif + HMAC_Init_ex(ctx, key, strlen(key), EVP_sha256(), NULL); + HMAC_Update(ctx, (unsigned char*)data, len); + HMAC_Final(ctx, (unsigned char*)str, &res_len); +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) + HMAC_CTX_reset(ctx); + HMAC_CTX_free(ctx); +#else + HMAC_CTX_cleanup(ctx); +#endif + bytesToHex(str,32,buf); + buf[WD_AUTH_HASH_LEN] = '\0'; +} + +#else + +int aes_decrypt_with_password(unsigned char *ciphertext, int ciphertext_len, + const char *password, unsigned char *plaintext) +{ + ereport(ERROR, + (errmsg("AES decryption is not supported by this build"), + errhint("Compile with --with-openssl to use AES."))); + return -1; +} +int aes_encrypt_with_password(unsigned char *plaintext, int plaintext_len, + const char *password, unsigned char *ciphertext) +{ + ereport(ERROR, + (errmsg("AES encryption is not supported by this build"), + errhint("Compile with --with-openssl to use AES."))); + return -1; +} +void calculate_hmac_sha256(const char *data, int len, char *buf) +{ + ereport(ERROR, + (errmsg("HMAC SHA256 encryption is not supported by this build"), + errhint("Compile with --with-openssl to use AES."))); +} +#endif + + diff --git a/src/watchdog/Makefile.in b/src/watchdog/Makefile.in index e8ba0273..45e9c1d4 100644 --- a/src/watchdog/Makefile.in +++ b/src/watchdog/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,17 +15,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -89,6 +79,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/watchdog +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ @@ -99,7 +91,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/docbook.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/include/config.h CONFIG_CLEAN_FILES = @@ -181,7 +172,6 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -311,7 +301,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -349,6 +338,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/watchdog/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign --ignore-deps src/watchdog/Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -597,8 +587,6 @@ uninstall-am: mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am -.PRECIOUS: Makefile - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/src/watchdog/watchdog.c b/src/watchdog/watchdog.c index 08f5a09a..4ee6ee51 100644 --- a/src/watchdog/watchdog.c +++ b/src/watchdog/watchdog.c @@ -6372,6 +6372,7 @@ static void verify_pool_configurations(WatchdogNode* wdNode, POOL_CONFIG* config WD_VERIFY_RECEIVED_CONFIG_PARAMETER_VAL_BOOL(config, wdNode, enable_pool_hba); WD_VERIFY_RECEIVED_CONFIG_PARAMETER_VAL_BOOL(config, wdNode, load_balance_mode); WD_VERIFY_RECEIVED_CONFIG_PARAMETER_VAL_BOOL(config, wdNode, replication_stop_on_mismatch); + WD_VERIFY_RECEIVED_CONFIG_PARAMETER_VAL_BOOL(config, wdNode, allow_clear_text_frontend_auth); WD_VERIFY_RECEIVED_CONFIG_PARAMETER_VAL_BOOL(config, wdNode, failover_if_affected_tuples_mismatch); WD_VERIFY_RECEIVED_CONFIG_PARAMETER_VAL_BOOL(config, wdNode, fail_over_on_backend_error); WD_VERIFY_RECEIVED_CONFIG_PARAMETER_VAL_BOOL(config, wdNode, replicate_select); diff --git a/src/watchdog/wd_json_data.c b/src/watchdog/wd_json_data.c index 58465c49..328191d7 100644 --- a/src/watchdog/wd_json_data.c +++ b/src/watchdog/wd_json_data.c @@ -68,6 +68,8 @@ POOL_CONFIG* get_pool_config_from_json(char* json_data, int data_len) goto ERROR_EXIT; if (json_get_bool_value_for_key(root, "replication_stop_on_mismatch", &config->replication_stop_on_mismatch)) goto ERROR_EXIT; + if (json_get_bool_value_for_key(root, "allow_clear_text_frontend_auth", &config->allow_clear_text_frontend_auth)) + goto ERROR_EXIT; if (json_get_bool_value_for_key(root, "failover_if_affected_tuples_mismatch", &config->failover_if_affected_tuples_mismatch)) goto ERROR_EXIT; if (json_get_bool_value_for_key(root, "replicate_select", &config->replicate_select)) @@ -181,6 +183,7 @@ char* get_pool_config_json(void) jw_put_bool(jNode, "replication_mode", pool_config->replication_mode); jw_put_bool(jNode, "enable_pool_hba", pool_config->enable_pool_hba); jw_put_int(jNode, "load_balance_mode", pool_config->load_balance_mode); + jw_put_bool(jNode, "allow_clear_text_frontend_auth", pool_config->allow_clear_text_frontend_auth); jw_put_bool(jNode, "replication_stop_on_mismatch", pool_config->replication_stop_on_mismatch); jw_put_bool(jNode, "failover_if_affected_tuples_mismatch", pool_config->failover_if_affected_tuples_mismatch); jw_put_bool(jNode, "replicate_select", pool_config->replicate_select); diff --git a/src/watchdog/wd_utils.c b/src/watchdog/wd_utils.c index b16b6974..24e27b6e 100644 --- a/src/watchdog/wd_utils.c +++ b/src/watchdog/wd_utils.c @@ -6,7 +6,7 @@ * pgpool: a language independent connection pool server for PostgreSQL * written by Tatsuo Ishii * - * Copyright (c) 2003-2015 PgPool Global Development Group + * Copyright (c) 2003-2018 PgPool Global Development Group * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby @@ -39,6 +39,7 @@ #include "utils/memutils.h" #include "pool_config.h" #include "watchdog/wd_utils.h" +#include "utils/ssl_utils.h" static int has_setuid_bit(char * path); static void *exec_func(void *arg); @@ -146,34 +147,6 @@ has_setuid_bit(char * path) #ifdef USE_SSL -/* HMAC SHA-256*/ -static void calculate_hmac_sha256(const char *data, int len, char *buf) -{ - char* key = pool_config->wd_authkey; - char str[WD_AUTH_HASH_LEN/2]; - unsigned int res_len = WD_AUTH_HASH_LEN; - HMAC_CTX *ctx = NULL; - -#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) - ctx = HMAC_CTX_new(); - HMAC_CTX_reset(ctx); -#else - HMAC_CTX ctx_obj; - ctx = &ctx_obj; - HMAC_CTX_init(ctx); -#endif - HMAC_Init_ex(ctx, key, strlen(key), EVP_sha256(), NULL); - HMAC_Update(ctx, (unsigned char*)data, len); - HMAC_Final(ctx, (unsigned char*)str, &res_len); -#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined (LIBRESSL_VERSION_NUMBER)) - HMAC_CTX_reset(ctx); - HMAC_CTX_free(ctx); -#else - HMAC_CTX_cleanup(ctx); -#endif - bytesToHex(str,32,buf); - buf[WD_AUTH_HASH_LEN] = '\0'; -} void wd_calc_hash(const char *str, int len, char *buf) @@ -181,6 +154,7 @@ wd_calc_hash(const char *str, int len, char *buf) calculate_hmac_sha256(str, len, buf); } #else + /* calculate hash for authentication using packet contents */ void wd_calc_hash(const char *str, int len, char *buf)